Solving a system of Non Linear Differential Equations
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, I want to solve the following system of non-linear differential equations numerically. Please provide guidance.
2 Kommentare
Antworten (2)
Sam Chak
am 4 Apr. 2024
Bearbeitet: Sam Chak
am 4 Apr. 2024
Hi @kdv0
Apart from the incorrect initial value for z, which should be , the rest of the information in the code is correct. The response for x behaves as expected since it starts from the equilibrium point.
Both time derivatives for x and y are zero at the beginning because the states x and y start from the equilibrium point.
Even though the time derivative for z is decoupled from the influence of the variations in x and y, the rate of change exhibits a quadratic positive behavior when z is greater than zero. This is attributed to the positive values of the coefficients p, q, and s.
In simpler terms, the rate of change increases rapidly as z moves away from zero in the positive direction. Consequently, the response of z becomes unstable, leading to an explosive behavior and integration failure at time .
p = 1;
q = 4;
s = 1;
z = linspace(-14, 10, 2001);
dz = p*z.^2 + q*z + s;
plot(z, dz), grid on, xlabel('z'), ylabel('dz'), title('dz/dt')
xline(0, '-'), yline(0, '-')
0 Kommentare
KSSV
am 4 Apr. 2024
Bearbeitet: KSSV
am 4 Apr. 2024
This is the code..I am getting hight values...you may check and modify the code.
tspan = [0 1];
y0 = [0 0 100];
sol = ode45(@odefun,tspan,y0) ;
plot(sol.x,sol.y)
function dydt = odefun(t,y)
r = 10;
a = 2 ;
b = 2 ;
g = 1 ;
m = 0.5 ;
c = 1 ;
p = 1 ;
s = 1 ;
q = 4 ;
dydt = zeros(3,1) ;
dydt(1) = r*y(1)*(1-y(1)/y(3))-a*m*y(1)*y(2)/(1+g*m*y(1)) ;
dydt(2) = b*m*y(1)*y(2)/(1+g*m*y(1))-c*y(2) ;
dydt(3) = p*y(3)^2+q*y(3)+s ;
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!