how to solve non linear simultaneous ordinary differential equation?

= (35)(y − x)
= (-7)x − xz + (28)y
= xy − (2.97)z
I solved this problem using ode23 like this-
function dydt = odefcn(t,y)
dydt = zeros(3,1);
dydt(1) = 35*y(2)- 35*y(1)
dydt(2) = (-7)*y(1)-y(1)*y(3)+28*y(1)
dydt(3) = y(1)*y(2)-(2.97)*y(3)
tspan = [0 5]
y0 = [1 0 1]
[t,y] = ode23(@(t,y) odefcn(t,y), tspan, y0)
The error that i am getting is-
Not enough input arguments.
Error in odefcn (line 3)
dydt(1) = 35*y(2)- 35*y(1)
Is it the right way of solving above problem?

 採用された回答

Jan
Jan 2021 年 3 月 25 日
編集済み: Jan 2021 年 3 月 25 日

1 投票

How did you call the function? Using the green triangle in the editor? Then no inputs are provided.
The posted code consists of two parts, but it looks, like you have inserted in in one m-file. A sorted version:
function main
tspan = [0 5];
y0 = [1 0 1];
[t, y] = ode23(@odefcn, tspan, y0);
plot(t, y);
end
function dydt = odefcn(t,y)
dydt = zeros(3,1);
dydt(1) = 35 * y(2) - 35 * y(1);
dydt(2) = -7 * y(1) - y(1) * y(3) + 28 * y(1);
dydt(3) = y(1) * y(2) - 2.97 * y(3);
end
To improve the readability I've inserted spaces around the operators.
@(t,y) odefcn(t,y) can be abbreviated to @odefcn.

7 件のコメント

Meenakshi Tripathi
Meenakshi Tripathi 2021 年 3 月 25 日
Thanks a lot!!
Seems you are too good in matlab coding. I am a beginner so it is getting tough for me to do coding.
How to be good in matlab coding related to ode?
Please Help!!
Jan
Jan 2021 年 3 月 25 日
Experiences are useful. Try it, try it again, and try it another time. :-) I'm doing this for some decades now.
Meenakshi Tripathi
Meenakshi Tripathi 2021 年 3 月 26 日
ok Thank you !!
Fadzai Zonke
Fadzai Zonke 2021 年 11 月 22 日
Hi Jan,
Could you please help me solve 4 non linear ODEs simultaneosly?
Fadzai Zonke
Fadzai Zonke 2021 年 11 月 24 日
It is a different question, somthing similiar
I have 4 non linear differential equations:
for example
dA/dt = 7 - 3*A + 4*T*A
dB/dt = 9 - 4*B + 2*B/A - 5*D*(2-B)
dC/dt = 2- C + 3*B/4
dD/dt = 6 - A/4 - D/3
t = linspace[0 300]
I need to solve them and plot a grapgh for each Variable against t (A,t),(B,t),(C,t),(D,t)
Jan
Jan 2021 年 11 月 25 日
You find an example for implementing your equation in Matlab. The elements of y are [A,B,C,D] in your case.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

質問済み:

2021 年 3 月 25 日

コメント済み:

Jan
2021 年 11 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by