Solving System of Nonlinear Differential equations

I Need to solve the following system with ode45: (first order in R and second order in K)
R'(t)^2+a=b*K(t)^2*R(t)^(-1)
K''(t)+3*R(t)^2*R'(t)*K'(t)=c*R(t)^(-3)*K(t)^(-1)
with initial values:
R(0)=1
K(0)=3
K'(0)=0
I never used Matlab before, so would be great if someone could help me.

 Réponse acceptée

The following structure is what you need (notice that the second order ode is turned into two first order ones);
R0 = 1;
K0 = 3;
vK0 = 0;
Y0 = [R0 K0 vK0];
tspan = [0 10]; % Replace with your desired range
[t, Y] = ode45(@rate, tspan, Y0);
R = Y(:,1);
K = Y(:,2);
plot(t,R)
% etc.
function dYdt = rate(~,Y)
a = 1; % Replace with your own value
b = 1; % Ditto
c = 1; % Ditto
R = Y(1);
K = Y(2);
vK = Y(3);
dRdt = sqrt( b*K^2/R - a );
dKdt = vK;
dvKdt = c/(R^3*K) - 3*R^2*dRdt*dKdt;
dYdt = [dRdt;
dKdt;
dvKdt];
end

2 commentaires

Nice! Thanks a lot
Hello
my equations system is like below. can I solve system like this in matlab?
dy(1) = 3*y(1) *t.^3 + y(2) + sin(dy(2)) + tan(dy(1)) ;
dy(2) = y(2) - y(1) + y(2).^4 + y(2).^4 + 3*t*dy(1) + t.^3*cos(y(1));

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by