How do you pass a matrix (parameter) to decic and ode15i?
2 ビュー (過去 30 日間)
古いコメントを表示
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!
0 件のコメント
採用された回答
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.
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 件のコメント
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
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,)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Ordinary Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!