フィルターのクリア

time dependent parameter in ode-function matlab

4 ビュー (過去 30 日間)
sejo
sejo 2014 年 7 月 23 日
コメント済み: kiran gk 2016 年 11 月 20 日
I want to solve an ode with a time dependent parameter. cA sould be 10000 if t is >=10 and <=11 else it should have the value of 0. cA is then used in an differential equation to calculate cB. See the code:
function dcB = myode(t,y)
cB=y(1,:);
if t>=10 && t<=11
cA=10000
else
cA=0
end
dcB=(cA-cB)*100/1750;
[t,y]=ode45(@myode,[tdown tup],0);
Fallowing problems show up:
  • if i print cA it has not the correct values at the specified times.
  • if tup is e.g. 20 cB has values, if tup is e.g. 100 cB is zero.

採用された回答

Mischa Kim
Mischa Kim 2014 年 7 月 23 日
Sejo, one fairly clean approach would be to split the integration interval: [tdown 10),[10 11],(11 tup] and call ode45 three times with two separate ODE functions. You'd just have to make sure that the final conditions of the respective previous integration are passed on as initial conditions to the next integration.
  1 件のコメント
kiran gk
kiran gk 2016 年 11 月 20 日
What if cA has multiple values with respect to t? In that case it will be difficult to create multiple ode function please suggest the possible answer

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by