Solving a system of Non Linear Differential Equations
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello, I want to solve the following system of non-linear differential equations numerically. Please provide guidance.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659391/image.png)
2 comentarios
Respuestas (2)
Sam Chak
el 4 de Abr. de 2024
Editada: Sam Chak
el 4 de Abr. de 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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659456/image.png)
Both time derivatives for x and y are zero at the beginning because the states x and y start from the equilibrium point.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659466/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659471/image.png)
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659476/image.png)
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
.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1659481/image.png)
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 comentarios
KSSV
el 4 de Abr. de 2024
Editada: KSSV
el 4 de Abr. de 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 comentarios
Ver también
Categorías
Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!