Taylor's method of order 2 programming
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
ivordes greenleaf
le 13 Avr 2015
Commenté : Star Strider
le 13 Avr 2015
So I am writing a program to solve an IVP problem, I'm trying to write it with not using the function script because I want to plot the error later.
This is my coding:
clear;
h=0.1; t=1:h:2; n=length(t);
%initial condition y=zeros(n,1); y(1)=-0.5;
for i = 1:n-1 y(i+1)=y(i)+h*RHS(t(i),y(i))+(h.^2/2)*RHS3(t(i),y(i)); end
truesol= (sqrt(3)/(2*t))*tan((sqrt(3)/2)*log(t))-1/2*t;
plot(t,y,'.',t,truesol,'*')
[t' y truesol']
And I wrote my RHS(which is my original function) and RHS3(which is my df/dt) separately:
function result = RHS(t,y)
result= y.^2+(1/(t.^2));
end
and
function result= RHS3(t,y)
result = 2*y.^3+((2*y)/(t.^2))-(2/(t.^3));
end
Everything seems to be okay, I even tried a simple "true solution" and it works. It only doesn't work when I tried the correct true solution, which is
truesol= (sqrt(3)/(2*t))*tan((sqrt(3)/2)*log(t))-1/2*t;
it gives me an error of "??? Error using ==> mldivide Matrix dimensions must agree."
Thanks for any input.
0 commentaires
Réponse acceptée
Star Strider
le 13 Avr 2015
See if vectorising this line (replacing (/) with (./) and (*) with (.*)) solves the problem:
truesol= (sqrt(3)./(2*t)).*tan((sqrt(3)/2)*log(t))-1/2*t;
2 commentaires
Star Strider
le 13 Avr 2015
My pleasure. I’m glad it worked.
I did not run your code, but it would seem to me that a smaller step size would result in a smaller error. You are plotting log(err) against log(h), so I would expect a linear relationship. I believe your plot is likely correct.
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!