MATLAB Answers

how can i resolve this equation Runge kutta method

1 view (last 30 days)
adem ski
adem ski on 22 Jan 2020
Edited: James Tursa on 23 Jan 2020
y''+1=0
ddy/ddt + 1 =0
how can i resolve this equation with runge kutta method

  6 Comments

Show 3 older comments
adem ski
adem ski on 22 Jan 2020
i want use this
k1=h*feval(f,t,y(m));
k2=h*feval(f,t+(1/2)*h,y(m)+(1/2)*k1);
k3=h*feval(f,t+(1/2)*h,y(m)+(1/2)*k2);
k4=h*feval(f,t+h,y(m)+k3);
y(m+1)=y(m)+(1/6)+(k1+2*k2+2*k3+k4);
James Tursa
James Tursa on 22 Jan 2020
@adem: You need to show us what you have done so far and then we can help you with your code.
adem ski
adem ski on 22 Jan 2020
clear all
h=0.01;
t=0:0.01:10;
y(1)=1;
m=1;
f=inline('............');
for t=0:0.01:10
k1=h*feval(f,t,y(m));
k2=h*feval(f,t+(1/2)*h,y(m)+(1/2)*k1);
k3=h*feval(f,t+(1/2)*h,y(m)+(1/2)*k2);
k4=h*feval(f,t+h,y(m)+k3);
y(m+1)=y(m)+(1/6)+(k1+2*k2+2*k3+k4);
m=m+1;
end
i don't know how to define the equation?

Sign in to comment.

Answers (2)

Jim Riggs
Jim Riggs on 22 Jan 2020
Ths is the equation for a parabola.
y'' = -1
y' = -y
y = -1/2 y^2
No need for a numerical approximation.

  2 Comments

adem ski
adem ski on 22 Jan 2020
i want use Runge Kutta i don't know how can i Define the equation

Sign in to comment.


James Tursa
James Tursa on 22 Jan 2020
Edited: James Tursa on 23 Jan 2020
You've got a 2nd order equation, so that means you need a 2-element state vector. The two states will be y and y'. All of your code needs to be rewritten with a 2-element state vector [y;y'] instead of the single state y. I find it convenient to use a column vector for this. So everywhere in your code that you are using y, you will need to use a two element column vector instead. E.g., some changes like this:
y = zeros(2,numel(t)+1); % pre-allocate the solution, where y(:,m) is the state at time t(m)
:
y(:,1) = [1;0]; % need to initialize two elements at first time, position and velocity
:
f = @(t,y)[y(2);-1]; % [derivative of position is velocity; derivative of velocity is acceleration = -1]
:
k1 = h*feval(f, t , y(:,m) ); % changed y(m) to y(:,m)
Also, you have a bug in the line that combines the k's ... you need (1/6)* instead of (1/6)+
Make an effort at implementing these changes and then come back with any problems you continue to have.

  0 Comments

Sign in to comment.


Translated by