2010-12-27, 17:25
#13
function [t,U]=minprim(?,?,?,?) NrIn=nargin; if NrIn==? elseif NrIn=? N=100; else error(’Wrong number of input arguments!’) end U=zeros(1,N+1); k=? steglängden. t=? Vektor med alla t_n U(1)=U(0); for k=2:? U(?)=U(?)+k*f(?); end
function [t,U]=minprim(f,I,t0,N) NrIn=nargin; if NrIn==4 elseif NrIn=4 N=100; else error(’Wrong number of input arguments!’) end U=zeros(1,N+1); k=2/100 t=0:0.02:(2-0.02) U(1)=U(0)=t0; for k=2:length(k) U(n)=U(n-1)+k*f(n-1); end
function [t,u]=minprim(f,t_int,u0,n)
NrIn=nargin;
if NrIn==3
n = 100;
elseif NrIn==4;
else
error('Wrong number of input arguments!');
return
end
u = zeros(1,n+1);
k = diff(t_int)/n;
t = t_int(1):k:t_int(2);
u(1) = u0;
for i = 2:n+1
u(i) = u(i-1)+k*f(t(i-1));
end
f(x+h) = f(x) + h*f'(x) eller u(i) = u(i-1) + k*f(t(i-1)).Här finns andra varianter för att öka/ändra stabiliteten på algoritmen, man kan köra backwards exempelvis men det är sånt ni kanske tar upp i numerisk analys sen.
[t,u]=minprim(@(t) t.^2,[0 2],3,100);
InitialStep: första steget som algoritmen gissarI en första approximation är det väl reltol som är mest relevant. Sätter du den lågt tvingar du algoritmen att välja mindre steg.
MaxStep: ett största steg som du tillåter att algoritmen tar (så att den inte av händelse missar små små variationer)
RelTol: maximala relativa felet i lösningen
AbsTol: maximala absoluta felet i lösningen
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106