while running this code i am unable to get y (1) ,y(2) and y(3)values.y(1) is coming similar to value of indepent variable and y(2),y(3) is coming 1 &0 resp.Plz. guide where am i getting wrong. thnx

function dydt = ode5(t,y) dydt = zeros(3,1); % a column vector dydt(1) = y(2); dydt(2) = y(3); dydt(3) = (-3.06091)*((y(2)^2)+(y(1)*y(3)))*(y(3)^0.67); end
options = odeset('RelTol',1e-6,'AbsTol',[1e-6 2e-6 3e-6]); [t,y] = ode45(@ode5,[0 10],[0 1 0],options); plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.')

 採用された回答

Mischa Kim
Mischa Kim 2014 年 3 月 13 日
Nita, your code is good, the output from MATLAB is correct.
Looking at your DE
dydt(1) = y(2);
dydt(2) = y(3);
dydt(3) = (-3.06091)*((y(2)^2)+(y(1)*y(3)))*(y(3)^0.67);
the derivatives at t = 0 are
dydt(1) = 1
dydt(2) = 0
dydt(3) = 0
which means that y(1) is increasing, y(2) and y(3) remain constant, y(2) = 1, y(3) = 0. At the next time step, t = dt, you get the same derivatives, which you therefore get for all t. As a result, y(1) is increasing linearly with a slope of 1, whereas y(2) and y(3) remain constant. You will get a different result for different intial conditions.

8 件のコメント

NITA JAIN
NITA JAIN 2014 年 3 月 13 日
編集済み: NITA JAIN 2014 年 3 月 14 日
Thnx Mischa for your quick answer . i would like to slove this nonlinear diff. equa. with same initial conditions. so what i am getting as answer is correct? i am new to matlab so wanted to confirm whether the developed code is corret or not .
NITA JAIN
NITA JAIN 2014 年 3 月 14 日
Hi Mischa , if what you explained in the above code is correct then how i am getting different values for y(2) an y(3) in the following code :
function dy = ode4(t,y) dy = zeros(3,1); % a column vector dy(1) = y(2); dy(2) = y(3); dy(3) = (y(1)*y(3)+(y(2)^2))*(-0.3333); end options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); [t,y] = ode45(@ode4,[0:1.25:50],[0 1 0],options) plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.')
plz. guide.
Nita, to your first question. Yes, it is correct. Use
[t,y] = ode45(@mine,[0 10],[0 0.01 0.01],options);
for example, to see a different result for different initial conditions. To your second question: you get different values because your system of DE is different.
NITA JAIN
NITA JAIN 2014 年 3 月 14 日
編集済み: NITA JAIN 2014 年 3 月 14 日
Hello Mischa, thnx for your reply. but if you see 2nd system is similar to 1st one only. only difference in 1st one is y(3) has additional factor y(3)^0.67. it means small chnage in system creat this difference in solution.plz answer. actualy i am sovling system of DE for different values of n and in case of n=1 ans is coming correct. For n<1 and n>1 code is executed but in n<1 case answer is as per ist code and in n>1 case plot is coming blank and array is showing NaN. how to overcome this problem.for your reference n>1 case code is like :
function dz = ode6(t,z) dz = zeros(3,1); % a column vector dz(1) = z(2); dz(2) = z(3); dz(3) =(-0.1481)*[z(2)^2+(z(1)*z(3))]*[z(3)^(-0.5)]; end
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); [t,z] = ode45(@ode6,[0:0.25:25],[0 1 0],options); plot(t,z(:,1),'-',t,z(:,2),'-.',t,z(:,3),'.') plz. guide
Mischa Kim
Mischa Kim 2014 年 3 月 14 日
Trust me, you are good. The change in dydt(3) changes y(3), which in turn affects dydt(2) = y(3), which changes y(2) and therefore y(1). It's a so-called coupled system of DE.
NITA JAIN
NITA JAIN 2014 年 3 月 14 日
fine .....what you are saying i am agreeing to that .coud you elaborate when i run ist code why t and y(1) values are coming exactly numerically same.......
Mischa Kim
Mischa Kim 2014 年 3 月 14 日
Yep. Both t and y(1) have the same initial values and increase with the same slope (= derivative) of 1.
NITA JAIN
NITA JAIN 2014 年 3 月 14 日
thnx.....!!!!! and how to overcome NaN in 3rd code......

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2014 年 3 月 13 日

コメント済み:

2014 年 3 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by