07.09.2013 Views

M0032M laboration matlab LP4 10-11 - Tentaplugg

M0032M laboration matlab LP4 10-11 - Tentaplugg

M0032M laboration matlab LP4 10-11 - Tentaplugg

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TENTAPLUGG.NU<br />

AV STUDENTER FÖR STUDENTER<br />

Kurskod <strong>M0032M</strong><br />

Kursnamn Flervariabelanalys och datorverktyg<br />

Datum <strong>LP4</strong> <strong>10</strong>-<strong>11</strong><br />

Material Laborationsrapport<br />

Kursexaminator Mikael Stenlund<br />

Betygsgränser<br />

Tentamenspoäng<br />

Övrig kommentar


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Matlab<br />

Del 1<br />

Luleå Tekniska Universitet TCIEA 20<strong>11</strong>-04-21<br />

Sida 1 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Uppgift 2<br />

A1= [-12 -5 3 12; 5 16 5 -8; -6 -3 2 8; -9 1 6 14];<br />

A2= [-3 3 -1 -4; 3 5 2 6; -1 2 -1 -3; -4 6 -3 2];<br />

A3=randn(<strong>10</strong>);<br />

b1= [1 15 2 16]';<br />

b2=randn(<strong>10</strong>,1);<br />

A1\b1<br />

A2\b1<br />

A3\b2<br />

y1=eig(A1)<br />

y2=eig(A2)<br />

y3=eig(A3)<br />

sum(y1)<br />

trace(A1)<br />

sum(y2)<br />

trace(A2)<br />

sum(y3)<br />

trace(A3)<br />

det(A1)<br />

prod(y1)<br />

det(A2)<br />

prod(y2)<br />

det(A3)<br />

prod(y3)<br />

Uppgift 3<br />

A= [cosd(45) 1 0 0 0 0 0 0 0; -cosd(45) 0 0 1 cosd(48.81) 0 0 0 0; -sind(45) 0<br />

-1 0 -sind(48.81) 0 0 0 0; 0 0 0 -1 0 0 0 cosd(48.81) 0;0 0 0 0 0 0 -1 -<br />

sind(48.81) 0; 0 0 0 0 -cosd(48.81) -1 0 0 1; 0 0 0 0 sind(48.81) 0 1 0 0; 0 0<br />

0 0 0 0 0 sind(48.81) 0; 0 0 0 0 0 0 0 -cosd(48.81) -1];<br />

b=[0 0 <strong>10</strong>00 0 500 0 4000 -1<strong>10</strong>7.14 0]';<br />

A\b<br />

Uppgift 4<br />

% 4a)<br />

v=[0 1 1.5 2.5 3.5 4 5];<br />

x3=v.^3;<br />

x2=v.^2;<br />

x1=[1 1 1 1 1 1 1];<br />

Sida 2 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

A=[x3; x2; v; x1]';<br />

b=[1 2 -0.2 -0.5 0.05 0.02 -0.01]';<br />

C=(A'*A)\(A'*b);<br />

C'<br />

% 4b)<br />

y1=exp(-v).*cos(2.*v);<br />

y2=exp(-v).*sin(2.*v);<br />

D=[y1; y2]';<br />

B=(D'*D)\(D'*b);<br />

B'<br />

xb=[0:0.1:5];<br />

yb=[B(1,1).*exp(-(xb)).*cos(2.*(xb)) + B(2,1).*exp(-(xb)).*sin(2.*(xb))];<br />

ya=[C(1,1).*xb.^3+C(2,1).*xb.^2+C(3,1).*xb+C(4,1)];<br />

plot(v, b, 'o', xb, yb, xb, ya, xb, 0)<br />

xlabel('x')<br />

ylabel('y')<br />

legend('Mätpunkter','Graf 1','Graf 2')<br />

title('Grafanpassning m.h.a. minsta kvadratmetoden')<br />

Se graf 1 för resultat.<br />

Uppgift 5<br />

Graf 1<br />

fplot('(0.55*18*9.81*sqrt(x^2+<strong>10</strong>^2))/(x+0.55*<strong>10</strong>) -90', [-<strong>10</strong> <strong>10</strong>])<br />

fzero('(0.55*18*9.81*sqrt(x^2+<strong>10</strong>^2))/(x+0.55*<strong>10</strong>) -90', -6)<br />

%Ett försök med funktionen nedan gjordes först, det fungerae dock inte. Det<br />

Sida 3 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

%antas att fzero inte "förstår" vilken variabel som den ska lösa ut.<br />

%syms y h g f m<br />

%y=0.55;<br />

%h=<strong>10</strong>;<br />

%g=9.81;<br />

%f=90;<br />

%m=18;<br />

%x1=fzero('(y*m*g*sqrt(x^2+h^2))/(x+y*h)-f', -6)<br />

Uppgift 6<br />

function R=planck(x)<br />

R=(2*pi*3*<strong>10</strong>^(8*2)*6.63*<strong>10</strong>^(-34))/(x^5*exp(6.63*<strong>10</strong>^(-34)*3*<strong>10</strong>^8/(x*1.38*<strong>10</strong>^(-<br />

23)*1500))-1);<br />

%följande matas sendan in i <strong>matlab</strong>:<br />

%>>fplot('planck', [0.2e-6 6.0e-6])<br />

%>>fminbnd(@planck, 0.2e-6, 6.0e-6, optimset('TolX',1e-12))<br />

Se graf 2 vid intresse.<br />

Graf 2<br />

Sida 4 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Uppgift 7<br />

a<br />

function y1=diffekv1(x,y)<br />

y1=[y(2);cos(x)+0.01*(y(2))^2-2*y(1)];<br />

% till <strong>matlab</strong> matas sedan följande in:<br />

%>>[xs,ys]=ode45(@diffekv1, [0,5],[0,1]);<br />

%>>plot(xs, ys)<br />

%se Diffekv1.jpg för graf. -> Se graf 3.<br />

Uppgift 7<br />

Graf 3<br />

b<br />

function yl=diffekv2(x,y)<br />

yl=[y(2); -x*y(1)-2*x*y(2)];<br />

% till <strong>matlab</strong> matas sedan följande in:<br />

%>>[xs,ys]=ode45(@diffekv2, [0,5],[1,0]);<br />

%>>plot(xs, ys)<br />

Sida 5 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

%se Diffekv2.jpg för graf. -> Se graf 4.<br />

Uppgift 8<br />

Graf 4<br />

% Till denna uppgift har endast en funktionsfil gjort och i själva <strong>matlab</strong> har<br />

%sedan själva funktionen använts.<br />

function ans=mat(x)<br />

v=x/(x(1,1));<br />

l=length(x);<br />

A=zeros(l-1,l-1);<br />

for c=1:1:l-1<br />

A(1,c)=-v(1,c+1);<br />

A(c+1,c)=1;<br />

end<br />

A(l,:)=[];<br />

ans=eig(A);<br />

Sida 6 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Matlab<br />

Del 2<br />

Luleå Tekniska Universitet TCIEA 20<strong>11</strong>-05-<strong>11</strong><br />

Sida 7 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Uppgift 2<br />

Först så skapas en funktionsfil för själva funktionen. Funktionsfilen döps till fun.m.<br />

function y=fun(x,y)<br />

y=sin(x.*y)./(1+x.^2+y.^2);<br />

I <strong>matlab</strong> matas sedan följande in:<br />

>> [x,y]=meshgrid([-4:0.1:4],[-4:0.1:4]);<br />

>>z=fun(x,y);<br />

>> contour(x,y,z)<br />

>> xlabel('x')<br />

>> ylabel('y')<br />

>> mesh(x,y,z)<br />

>> xlabel('x')<br />

>> ylabel('y')<br />

>> zlabel('z')<br />

>> surf(x,y,z)<br />

>> zlabel('z')<br />

>> ylabel('y')<br />

>> xlabel('x')<br />

Följande grafer erhölls:<br />

Contousrgraf<br />

Sida 8 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Surfgraf<br />

Meshgraf<br />

Sida 9 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

I contourgraf syns tydligt att grafen har två stycken lokala minimum i (x,y)≈(1,-1), (-1, 1). Vid<br />

beräkning av minimum används dessa punkter som gissning.<br />

Följande matas in i <strong>matlab</strong>:<br />

>> v1=[1 -1];<br />

>> v2=[-1 1];<br />

>> x1=fminunc(@fun,v1)<br />

>> x2=fminunc(@fun,v2)<br />

Uppgift 3<br />

Först görs en funktionsfil med själva funktionen. Den döps till fun2.m.<br />

function yvals=fun2(c,xdata)<br />

yvals=exp(c(1)*xdata).*(c(3)*sin(c(2)*xdata)+c(4)*cos(c(2)*xdata));<br />

Till <strong>matlab</strong> matas sedan följande in:<br />

>> x=[0:0.25:2];<br />

>> y=[2.89 0.75 -1.39 -1.42 -0.42 0.43 0.49 0.27 -0.29];<br />

Nästa kommando skall egentligen vara lsqurvfit. Men eftersom detta kommando kräver en del<br />

gissningar så ritas först en graf med punkterna upp för att sedan analysera grafen och<br />

förhoppningsvis kunna fastställa ett par mer kvalificerade gissningar.<br />

Följande data matas in i <strong>matlab</strong>:<br />

>> plot(x,y,'o')<br />

>> xlabel('x')<br />

>> ylabel('y')<br />

Se nästa sida för graf.<br />

Sida <strong>10</strong> av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

I grafen Mätdata syns tydligt att då x växer så minskas |y|. Det som bestämmer denna minskning är<br />

faktorn


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Följande graf erhölls:<br />

Uppgift 4<br />

Uppgift 4 består endast av en funktionsfil: Geomean.m, nedan presenteras den:<br />

Geomean.m<br />

function GM=Geomean(x);<br />

l=length(x);<br />

k=1;<br />

for a=1:1:l<br />

k=k*(x(1,a));<br />

end<br />

GM=(k)^(1/l);<br />

Least Square Fit graf<br />

Sida 12 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Uppgift 5<br />

Uppgift 5 består av fyra stycken funktionsfiler. Huvudfilen heter Volfuel.m. Volfuel.m anropar<br />

funktionerna h1.m, h2.m och h3.m för beräkning av arean av tankens olika ”sektioner” (två<br />

halvcirklar samt en rektangulär yta). Nedan presenteras funktionsfilerna:<br />

Fil 1 Volfuel.m<br />

function l=Volfuel(h)<br />

if h=0<br />

l=h1(h);<br />

elseif h>20 & h35 & h20 & x35 & x


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

%vid denna metod. Därför har metoden ovan använts där integralen har lösts<br />

manuellt.<br />

Fil 3 h2.m<br />

function l=h2(h);<br />

l=20^2*pi*60/2+60*20*(h-20);<br />

Fil 4 h3.m<br />

function l=h3(h);<br />

h=h-35;<br />

l=20^2*pi*60/2+60*20*15+2*60*((0.5*sqrt(400-(h^2))*h+200*asin(h/20))-<br />

(0.5*sqrt(20^2-(0)^2)*(0)+200*asin(0/20)));<br />

%Den sista faktorn i termen i uttrycket ovan är precis samma integral som<br />

tidigare men efterson halvcirkeln numera ligger uppochner så måste intervallet<br />

ändras.<br />

Oavsett vad som matas in så ritas följande graf upp:<br />

Graf över tankens volym beroende av h<br />

Sida 14 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Uppgift 6<br />

Lösningen till denna uppgift består nästan endast av olika funktioner. Lösningen är uppbyggd av en<br />

funktionsfil (Fil 1 homodiff2.m)som i sin tur använder sig av 15 stycken andra funktionsfiler.<br />

Nedan presenteras samtliga funktionsfiler:<br />

Fil 1 homodiff2.m<br />

function y=homodiff2(a,b,x0,y0,yp0,x)<br />

r1=-a/2+sqrt((a/2)^2-b);<br />

r2=-a/2-sqrt((a/2)^2-b);<br />

b=[y0 yp0]';<br />

xp=0:0.1:15;<br />

if r1==r2<br />

v<strong>11</strong>=A<strong>11</strong>(r1,x0);<br />

v12=A12(r1,x0);<br />

v21=A21(r1,x0);<br />

v22=A22(r1,x0);<br />

Av=[v<strong>11</strong> v12;v21 v22];<br />

v=Av\b;<br />

r=r1<br />

A=v(1,1)<br />

B=v(2,1)<br />

'Där A*exp(r*x)+B*x*exp(r*x) och r är den enda lösningarna till den<br />

karakteristiska ekvationen.'<br />

k=fall1(xp,A,B,r);<br />

elseif imag(r1)==0<br />

v<strong>11</strong>=B<strong>11</strong>(r1,x0);<br />

v12=B12(r2,x0);<br />

v21=B21(r1,x0);<br />

v22=B22(r2,x0);<br />

Bv=[v<strong>11</strong> v12;v21 v22];<br />

v=Bv\b;<br />

r1<br />

r2<br />

A=v(1,1)<br />

B=v(2,1)<br />

'Där A*exp(r1*x)+B*exp(r2*x) och r1 & r2 är lösningarna till den<br />

karakteristiska ekvationen.'<br />

k=fall2(xp,A,B,r1,r2);<br />

elseif imag(r1)~=0<br />

v<strong>11</strong>=C<strong>11</strong>(r1,x0);<br />

v12=C12(r1,x0);<br />

v21=C21(r1,x0);<br />

v22=C22(r1,x0);<br />

Cv=[v<strong>11</strong> v12;v21 v22];<br />

v=Cv\b;<br />

r1<br />

r2<br />

A=v(1,1)<br />

Sida 15 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

B=v(2,1)<br />

'Där y = A*exp(ax)*cos(bx)+B*exp(ax)*sin(bx), a & b kommer ifrån r=a+bi<br />

och r är lösningen till den karakteristiska ekvationen.'<br />

k=fall3(xp,A,B,r1);<br />

end<br />

plot(xp,k)<br />

xlabel('x')<br />

ylabel('y')<br />

Fil 2 A<strong>11</strong>.m<br />

function y=A<strong>11</strong>(r1,x0)<br />

y=exp(r1*x0);<br />

Fil 3 A12.m<br />

function y=A12(r1,x0)<br />

y=x0*exp(r1*x0);<br />

Fil 4 A21.m<br />

function y=A21(r1,x0)<br />

y=r1*exp(r1*x0);<br />

Fil 5 A22.m<br />

function y=A22(r1,x0)<br />

y=exp(r1*x0)+r1*x0*exp(r1*x0);<br />

Fil 6 B<strong>11</strong>.m<br />

function y=B<strong>11</strong>(r1,x0)<br />

y=exp(r1*x0);<br />

Fil 7 B12.m<br />

function y=B12(r2,x0)<br />

y=exp(r2*x0);<br />

Fil 8 B21.m<br />

function y=B21(r1,x0)<br />

y=r1*exp(r1*x0);<br />

Sida 16 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Fil 9 B22.m<br />

function y=B22(r2,x0)<br />

y=r2*exp(r2*x0);<br />

Fil <strong>10</strong> C<strong>11</strong>.m<br />

function y=C<strong>11</strong>(r1,x0)<br />

a=real(r1);<br />

b=abs(imag(r1));<br />

y=exp(a*x0)*cos(b*x0);<br />

Fil <strong>11</strong> C12.m<br />

function y=C12(r1,x0)<br />

a=real(r1);<br />

b=abs(imag(r1));<br />

y=exp(a*x0)*sin(b*x0);<br />

Fil 12 C21.m<br />

function y=C21(r1,x0)<br />

a=real(r1);<br />

b=abs(imag(r1));<br />

y=a*exp(a*x0)*cos(b*x0)-b*exp(a*x0)*sin(b*x0);<br />

Fil 13 C22.m<br />

function y=C22(r1,x0)<br />

a=real(r1);<br />

b=abs(imag(r1));<br />

y=a*exp(a*x0)*sin(b*x0)+b*exp(a*x0)*cos(b*x0);<br />

Fil 14 fall1.m<br />

function y=fall1(xp,A,B,r);<br />

y=A*exp(r*xp)+B*xp.*exp(r*xp);<br />

Fil 15 fall2.m<br />

function y=fall2(xp,A,B,r1,r2);<br />

y=A*exp(r1*xp)+B*exp(r2*xp);<br />

Sida 17 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

Fil 16 fall3.m<br />

function y=fall3(xp,A,B,r1);<br />

a=real(r1);<br />

b=abs(imag(r1));<br />

y=A*exp(a*xp).*cos(b*xp)+B*exp(a*xp).*sin(b*xp);<br />

Eftersom allting är uppbyggt i funktionsfiler så matas endast följande rad in i <strong>matlab</strong>:<br />

>> homodiff2(3,1,0,1,1,x)<br />

Följande svar erhölls:<br />

r1 =<br />

r2<br />

A =<br />

B =<br />

ans =<br />

-0.3820<br />

-2.6180<br />

1.6180<br />

-0.6180<br />

Där A*exp(r1*x)+B*exp(r2*x) och r1 & r2 är lösningarna till den<br />

karakteristiska ekvationen.<br />

Sida 18 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

I samband med svaret ritades följande graf automatiskt upp:<br />

Vid följande inmatning erhölls följande graf:<br />

Graf (3,1,0,1,1,x)<br />

Sida 19 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

>> homodiff2(1,1,0,1,1,x)<br />

Vid följande inmatning erhölls följande graf:<br />

Graf (1,1,0,1,1,x)<br />

Sida 20 av 21


<strong>M0032M</strong> Laboration <strong>matlab</strong><br />

>> homodiff2(2,1,0,1,1,x)<br />

Graf (2,1,0,1,1,x)<br />

Sida 21 av 21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!