1

私は自分でMatLabを学ぼうとしています。ODE を解くことに関するほとんどの概念は理解できましたが、オプションの引数を入力として使用する方法については少し確信が持てません。次の関数を作成しました。

function xdot = funn(t,x,mu);
if nargin < 3 | isempty(mu)
    mu = 1;
end
xdot = t +mu*x;

さらに、次のように定義しました。

tspan = [0 2];
x0 = 0;
options = odeset('outputfcn','odeplot');

私が確信していないのは、関数muを使用するときに変数を変更する方法ode23です。オプションの引数を入力することでこれが可能であることは理解していますが、機能させることができません。私が書いたら言ってください:

[t y] = ode23('funn',tspan,x0,options)

その後、すべてが正しく計算され、自動的にmu= 1 が得られます。

しかし、これを変更したい場合は、どうすればよいですか? muset = 4に次のように書いてみました:

[t y] = ode23('funn',tspan,x0,options,4)

しかし、その後、次のようになります。

??? Error using ==> funn
Too many input arguments.

Error in ==> odearguments at 98
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.

Error in ==> ode23 at 171
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

教科書に書かれている手順の理解に基づいてこれを行いましたが、明らかにここで何か間違ったことをしています。muparameterを変更する方法と、一般的にオプションの引数p1, p2, ...がどのように使用されるかを誰かが説明できれば、ode23本当に感謝しています!

4

2 に答える 2

2

あなたがする必要があるのは、無名関数を使用して関数呼び出しでデータを渡すことです:

[t y] = ode23(@(t,y)funn(t,y,4),tspan,x0,options)
于 2012-05-14T21:17:40.263 に答える