0

ode45Matlabを使用して微分方程式を解こうとしています。私は2つのスクリプトを実行しています:

function xdot=linearproblem(t,x)

global kappa mass F 

xdot(1)=-(kappa/mass)*x(2)+(F/mass)*(cos(omega1*t));
xdot(2)=x(1);

xdot=xdot';

end

次に、2 番目のスクリプトでは、

close all
clear
clc

global kappa mass F

kappa=4;
F=2;
mass=0.5;
options=odeset('omega1',[1.4 1.5 1.6]);

[t x]=ode45(@linearproblem,0:0.005:100,[0 0],options);
a=x(8000,2);

omega1=omega1'
a=a'

の 3 つの値を使用して方程式を解こうとしていますがomega1、エラーが発生します。

Error using odeset (line 226)
Unrecognized property name 'omega1'.

Error in frequencysweep (line 12)
options=odeset('omega1',1.4);

omega1引数として定義しようとしました: function xdot=linearproblem(t,x,omega1)、しかしそれは助けにはなりませんでした。

4

1 に答える 1

1

omega1のヘルプまたはドキュメントで呼び出されるパラメータはありませんodeset。その関数は、ode45(または他の ODE ソルバー) のオプションを設定するためのものであり、独自の値を統合関数に渡すためのものではありません。

また、グローバル変数を使用しないでください。 この場合と他のほとんどの場合は必要ありません。代わりに、無名関数を使用してパラメーターを渡します。

@(t,x)linearproblem(t,x,kappa,mass,F)

linearproblem関数自体もこれらのパラメーターを入力として受け取るようにしてください。多分omega1同じ方法で渡されるべきです:

@(t,x)linearproblem(t,x,omega1,kappa,mass,F)

(ただし、最初のydot方程式の右側はベクトルになりますが、単一の要素であるため、エラーが発生します。呼び出しの周りにループをxdot(1)渡しomega1(i)て使用する可能性があります?)forode45

于 2013-11-20T20:37:03.987 に答える