

#test sch taylora dla 2wymiarow
disp("test taylora");
function y=pw(x,t)
#y''=-y
 y=zeros(size(x));
 y(1)=x(2);
 y(2)=-x(1);
end

function y=pwt(x,t)
#d/dtpw=0
 y=zeros(size(x));
end

function y=pwx(x,t)
#d/dxpw=d/dx A*x= =A dla  A=[0 1;-1 0]
 m=length(x);
 y=zeros(m,m);
 A=[0 1;-1 0];
 y=A;
end

t0=0;
x0=[0;1];


n=100;
T=2*pi;;
#T=t0+n*h;
h=(T-t0)/n;

[x,t]=taylor(@pw,@pwt,@pwx,x0,t0,h,n);

plot(t,x(:,1),";x;",t,x(:,2),";x';");
pause(1);

plot(x(:,1),x(:,2),";x vs x';");
pause(1);

#testujemy czy rozwiazanie dla T=2*pi w okregu o promieniu 1
n=100;
for k=1:7,
 [x,t]=taylor(@pw,@pwt,@pwx,x0,t0,h,n);
 norm(x(n,:))-1  #czy ||x||==1?
 n=n*2;
 h=(T-t0)/n;
end
#a dla coraz dluzszego czasu?
h=0.1;T=1;n=floor((T-t0)/h);
for k=1:7,
 [x,t]=taylor(@pw,@pwt,@pwx,x0,t0,h,n);
 printf("T=%g ||x(%g)||-1=%g \n",T,T, norm(x(n,:))-1);  #czy ||x||==1?
 T*=2;
 n*=2;
end

#poworz to samo dla otwartego Eulera...



