how to use Runge Kutta 3 to solve an equation (2x''-x'²+4=0) for example.I have the initial values and the step sizes. Thanks

6 Comments

Jan
Jan on 27 Mar 2019
What have you tried so far? What exactly is "Runge Kutta 3"? Did you convert the equation of order 2 to a system of equations of order 1 already?
James Tursa
James Tursa on 27 Mar 2019
Are you supposed to write your own RK code or can you use a MATLAB solver such as ode45? (Nobody uses an RK3 method because in the derivation the error terms fall out naturally to produce an RK4 method).
intmin=0; intmax=1; numnodes=21; inival1=1; inival2=1; f1=@(t,x1,x2) 2*x2; f2=@(t,x1,x2) x1^2+4; h=(intmax-intmin)/(numnodes-1); t=zeros(1,numnodes); x1=zeros(1,numnodes); x2=zeros(1,numnodes); t(1)=intmin; x1(1)=inival1; x2(1)=inival2; for i=2:numnodes t(i)=t(i-1)+h; k11=f1(t(i-1),x1(i-1),x2(i-1)); k12=f1(t(i-1)+h/2,x1(i-1)+(h/2)*k11,x2(i-1)+(h/2)*k11); x1(i)=x1(i-1)+h*k12; x2(i)=x2(i-1)+h*f2(t(i-1),x1(i-1),x2(i-1)); end figure plot(t,x2,'.-')
this is what i wrote not sure if it's correct
James Tursa
James Tursa on 29 Mar 2019
Please format your code so that it is readable.
Abdelkarim Zribi
Abdelkarim Zribi on 30 Mar 2019
Edited: John D'Errico on 30 Mar 2019
intmin=0;
intmax=1;
numnodes=21;
inival1=1;
inival2=1;
f1=@(t,x1,x2) 2*x2;
f2=@(t,x1,x2) x1^2+4;
h=(intmax-intmin)/(numnodes-1);
t=zeros(1,numnodes);
x1=zeros(1,numnodes);
x2=zeros(1,numnodes);
t(1)=intmin;
x1(1)=inival1;
x2(1)=inival2;
for i=2:numnodes
t(i)=t(i-1)+h;
k11=f1(t(i-1),x1(i-1),x2(i-1));
k12=f1(t(i-1)+h/2,x1(i-1)+(h/2)*k11,x2(i-1)+(h/2)*k11);
x1(i)=x1(i-1)+h*k12;
x2(i)=x2(i-1)+h*f2(t(i-1),x1(i-1),x2(i-1));
end
figure
plot(t,x2,'.-')

Sign in to comment.

Answers (0)

Asked:

on 27 Mar 2019

Edited:

on 30 Mar 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!