How do you pass a matrix (parameter) to decic and ode15i?

2 ビュー (過去 30 日間)
Bill Smythe
Bill Smythe 2017 年 1 月 22 日
コメント済み: Walter Roberson 2017 年 1 月 23 日
Hello,
I am using ode15i, with decic to determine consistent initial conditions for a differential equation that involves a matrix. However, when I call these functions, I want to be able to input my matrix at the same time. That is, everything works perfectly if I have my function fun(t,x,xprime), and solve it using:
[xhat,y]=decic(@fun,0,v,v,w,w), (where v and w are vectors).
[t,x]=ode15i(@fun,[0,1],xhat,y);
But I want to be able to add a matrix input in "fun" (so that it is called with fun(C,t,x,xprime), so I am looking for something like
decic(@fun,C,0,v,v,w,w)
[t,x]=ode15i(@fun,C,[0,1],xhat,y)
where C is some matrix that I have defined earlier in the command window. This syntax does not work though ("not enough input arguments"). How do I input a previously defined matrix into a function within decic/ode15i?
Thanks!

採用された回答

John Chilleri
John Chilleri 2017 年 1 月 22 日
編集済み: John Chilleri 2017 年 1 月 22 日
Hello,
Rather than having to include your matrix in the decic/ode15i functions as an input, you could declare your matrix as a global variable, and access it in your function fun.
If you haven't heard of global variables, you can find information here.
Example:
global C
C = some matrix you have;
Call ode15i as normal;
And,
function outputs = fun(t,x)
global C
Use C as needed;
end
Hope this helps!
  2 件のコメント
Bill Smythe
Bill Smythe 2017 年 1 月 22 日
Very helpful. Worked perfectly. Thank you very much!
Walter Roberson
Walter Roberson 2017 年 1 月 23 日
Ick! Globals are slow, not a good idea for a routine that will have to be called many times. Parameterizing your function is much more efficient.

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

その他の回答 (1 件)

Steven Lord
Steven Lord 2017 年 1 月 23 日
Use the techniques described on this documentation page that is linked from the documentation page for ode15i (and the rest of the ODE solvers,)

カテゴリ

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