M0032M laboration matlab LP4 10-11 - Tentaplugg
M0032M laboration matlab LP4 10-11 - Tentaplugg
M0032M laboration matlab LP4 10-11 - Tentaplugg
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