# Solving a system of Non Linear Differential Equations

5 views (last 30 days)

Show older comments

##### 2 Comments

### Answers (2)

Sam Chak
on 4 Apr 2024

Edited: Sam Chak
on 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 Comments

KSSV
on 4 Apr 2024

Edited: KSSV
on 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 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!