polyadd.m

function sum=polyadd(p,q)
%adderar två polynom p och q i två variabler.
%Högsta x-potensen i första raden osv; högsta y-potensen i första kolumnen osv.
[mp,np]=size(p);[mq,nq]=size(q);
md=mq-mp;nd=nq-np;msum=max(mp,mq);
p1=[zeros(md,np);p]; %%Lägg ev. till inledande nollrader så att både p1
q1=[zeros(-md,nq);q]; %%och q1 får msum rader.
p1=[zeros(msum,nd) p1];%%Lägg ev. till inledande nollkolumner så att både p1
q1=[zeros(msum,-nd) q1];%%och q1 får lika många kolumner,nämligen max(np,nq).
sum=p1+q1;


polypot.m

function pot=polypot(p,n)
%polypot(p,n) ger n:te potensen av ett polynom p i två variabler
p1=p;
for k=1:n-1
p1=conv2(p1,p);
end
pot=p1;


lab2.m

p=[0 0 2;1 0 0];
q=[0 -0.25;0 0;-0.25 0];
f1=polyadd(p,-(1/6)*polypot(p,3));
f1=polyadd(f1,(1/120)*polypot(p,5));
f1=polyadd(f1,-(1/5040)*polypot(p,7));
f2=1;c=1;
for k=1:7
c=c/k;%c=1/k!
f2=polyadd(f2,c*polypot(q,k));
end
fappr=conv2(f1,f2);
[ma,na]=size(fappr);
t8=fappr(ma-8:ma,na-8:na);%Plockar ut 9x9-matrisen i nedre högra hörnet.
t8=fliplr(tril(fliplr(t8)))%Sätter in nollor ovanför diagonalen från nedre
%vänstra till övre högra hörnet. Ger Taylorpolynomet av grad 8.
[x,y]=meshgrid(-1:0.05:1);
z=sin(2*x+y.^2).*exp(-(x.^2+y)/4);
p8=0;
for i=1:9
for j=10-i:9
p8=p8+t8(i,j)*x.^(9-i).*y.^(9-j);
end
end
%p8 är Taylorpolynomet
clf
mesh(x,y,z)
hold on
mesh(x,y,p8)%ritar f(x,y) och p8(x,y) i samma figur
figure(2), hold off
mesh(x,y,z-p8)%ritar differensen i ett nytt fönster