Uploaded by Truman

dugga5uppgift3

advertisement
Kontrollscript för dugga 5
Här ska du kontrollera dina svar för dugga 5 uppgifterna 0-5.
Skriv in peronuppgifter
Namn: Adam Äpple
Personnummer: 910229-5611
kod=278809; % din kod ska skrivas här
Mata in data för uppgiften
Skriv om begynnelsevädresproblemet på följande form
Mata nu in funktionen
,
och
som f, x0 respektive y0 i scriptet.
Det förifyllda begynnelsevärdesproblemet är:
som har lösningen (också den förifylld)
.
f=@(x,y)(((1/x.^3)*sin(2*x)-3*y)/x);
x0=pi/4;
y0=1;
Mata ditt svar
Mata nu in ditt svar som funktionen y. Glöm inte punkterna, .* och ./.
y=@(x)((pi^3)-32*cos(2*x))/(64*x.^3);
Kör scriptet
Håll tummarna för att du räknat rätt. Glöm inte att exportera som pdf vid positivt resultat.
Kontroll
Nu löses problemet med MATLABs ode45 och dina lösning jämförs med dessa numeriskt bestämda värden.
kontroll(f,x0,y0,y)
Felaktig lösning
1
kryp(kod);
(1789)
Plotta resultatet
I den första figuren plottas din lösning och matlabs numeriskt bestämda lösning. Har du räknat rätt syns nog
endast en graf ty de ligger över varandra. I den andra figuren plottas differensen.
plott(f,x0,y0,y)
2
Funktioner
function kontroll(f,x0,y0,y)
x=linspace(x0,x0+2,10);
opt=odeset('RelTol',1e-8,'AbsTol',1e-10);
[x,yn]=ode45(f,x,y0,opt);
fel=norm(y(x)-yn);
if fel<1e-2
disp('---------------')
disp('Korrekt lösning')
disp('---------------')
else
disp('Felaktig lösning')
end
end
function plott(f,x0,y0,y)
[x,yn]=ode45(f,[x0,x0+2],y0);
plot(x,y(x),x,yn)
title('Din lösning och en numeriskt betämd')
figure()
plot(x,y(x)-yn)
title('Din lösning minus en numersikt bestämd')
end
function kryp(kod)
3
a=clock;m=3551;
x=mod(kod,1000)+a(2)*100+a(3);
x=mod(x*mod(mod(x^2,m)^2,m),m);
disp(['(',num2str(x),')'])
end
4
Download