lab1a.m

clf
[x,y]=meshgrid(0:0.05:2);
z=funk1a(x,y);
mesh(x,y,z)
hold on
[x,y]=meshgrid(0.5:0.05:1.5);
z=tangpl(x,y);
mesh(x,y,z)
x0=1.1;y0=1.1;z0=funk1a(x0,y0);
a=4*x0^3*(x0-2)^3*(2*x0-2)*funk1a(x0,y0);
b=6*y0^5*(y0-2)^5*(2*y0-2)*funk1a(x0,y0);
%se tangpl.m för alternativ beräkning av a och b
n=[-a,-b,1]/norm([-a,-b,1])
line([x0,x0+n(1)],[y0,y0+n(2)],[z0,z0+n(3)])
figure(1)
rotate3d on


funk1a.m

function z=funk1a(x,y)
z=exp(x.^4.*(x-2).^4+y.^6.*(y-2).^6);


tangpl.m

function z=tangpl(x,y)
x0=1.1;y0=1.1;z0=funk1a(x0,y0);
a=4*x0^3*(x0-2)^3*(2*x0-2)*funk1a(x0,y0);
b=6*y0^5*(y0-2)^5*(2*y0-2)*funk1a(x0,y0);
%a och b har fåtts genom derivering för hand. Alternativt kan man
%beräkna de partiella derivatorna approximativt med en differenskvot.
%Låt h vara ett litet tal, t.ex.
%h=0.0001;
%och sätt
%a=(funk1a(x0+h,y0)-funk1a(x0-h,y0))/(2*h);
%b=(funk1a(x0,y0+h)-funk1a(x0,y0-h))/(2*h);
z=z0+a*(x-x0)+b*(y-y0);


lab1b.m

clf
[x,y]=meshgrid(-7:0.1:5,-2:0.1:0.7);
z=exp(y).*(y+1+(y-1).*sin(x));
figure(1)
mesh(x,y,z)
rotate3d on
figure(2)
contour(x,y,z,-1:0.1:1);
grid