このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
daeFunction
ode15i
に適合する MATLAB 関数ハンドルへの微分代数方程式系の変換
説明
例
DAE 系の関数ハンドルへの変換
微分代数方程式系を作成します。ここで、シンボリック関数 x1(t)
および x2(t)
は系の状態変数を表しています。また、系には定数シンボリック パラメーター a
、b
、およびパラメーター関数 r(t)
が含まれます。これらのパラメーターは状態変数を表していません。方程式と状態変数を 2 つのシンボリック ベクトル (方程式をシンボリック方程式のベクトル、変数をシンボリック関数呼び出しのベクトル) として指定します。
syms x1(t) x2(t) a b r(t) eqs = [diff(x1(t),t) == a*x1(t) + b*x2(t)^2,... x1(t)^2 + x2(t)^2 == r(t)^2]; vars = [x1(t),x2(t)];
daeFunction
を使用し、変数 x1(t)
、x2(t)
、およびパラメーター a
、b
、r(t)
にかかわる MATLAB® 関数ハンドル f
を生成します。
f = daeFunction(eqs,vars,a,b,r(t))
f = function_handle with value:
@(t,in2,in3,param1,param2,param3)[in3(1,:)-param1.*in2(1,:)-param2.*in2(2,:).^2;-param3.^2+in2(1,:).^2+in2(2,:).^2]
パラメーター値を指定し、次のような簡約化された関数ハンドル F
を作成します。
a = -0.6; b = -0.1; r = @(t) cos(t)/(1 + t^2); F = @(t,Y,YP) f(t,Y,YP,a,b,r(t));
DAE 系に対し整合性のある初期条件を指定します。
t0 = 0; y0 = [-r(t0)*sin(0.1); r(t0)*cos(0.1)]; yp0= [a*y0(1) + b*y0(2)^2; 1.234];
次に、ode15i
を使用して方程式系の解を求めます。
ode15i(F,[t0,1],y0,yp0)
関数とコメントのファイルへの書き込み
File
オプションを指定して、生成した関数ハンドルをファイルに書き込みます。ファイルへの書き込みの際に、daeFunction
は、t0
、t1
といった名前の中間変数を使用してコードを最適化します。Comments
オプションを使用してファイルにコメントを含めます。
生成した関数ハンドルをファイル myfile
に書き込みます。
syms x1(t) x2(t) a b r(t) eqs = [diff(x1(t),t) == a*x1(t) + b*x2(t)^2,... x1(t)^2 + x2(t)^2 == r(t)^2]; vars = [x1(t), x2(t)]; daeFunction(eqs, vars, a, b, r(t), 'File', 'myfile')
function eqs = myfile(t,in2,in3,param1,param2,param3) %MYFILE % EQS = MYFILE(T,IN2,IN3,PARAM1,PARAM2,PARAM3) % This function was generated by the Symbolic Math Toolbox version 7.3. % 01-Jan-2017 00:00:00 YP1 = in3(1,:); x1 = in2(1,:); x2 = in2(2,:); t2 = x2.^2; eqs = [YP1-param2.*t2-param1.*x1;t2-param3.^2+x1.^2];
コメント Version: 1.1
を含めます。
daeFunction(eqs, vars, a, b, r(t), 'File', 'myfile',... 'Comments','Version: 1.1');
function eqs = myfile(t,in2,in3,param4,param5,param6) ... %Version: 1.1 YP3 = in3(1,:); ...
入力引数
eqs
— 1 階 DAE 系
シンボリック方程式のベクトル | シンボリック式のベクトル
1 階 DAE 系。シンボリック方程式または式のベクトルとして指定します。この式は右辺がゼロの方程式を表します。
vars
— 状態変数
シンボリック関数のベクトル | シンボリック関数呼び出しのベクトル
状態変数。x(t)
など、シンボリックな関数または関数呼び出しのベクトルとして指定します。
例: [x(t),y(t)]
または [x(t);y(t)]
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。
R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name
を引用符で囲みます。
例: daeFunction(eqns,vars,'File','myfile')
Comments
— ファイル ヘッダーに含めるコメント
文字ベクトル | 文字ベクトルの cell 配列 | string ベクトル
ファイル ヘッダーに含めるコメント。文字ベクトル、文字ベクトルの cell 配列、または string ベクトルとして指定します。
File
— 生成されたコードを含むファイルへのパス
文字ベクトル
生成されたコードを含むファイルへのパス。文字ベクトルとして指定します。生成されたファイルは double
型の引数を受け入れます。また、Symbolic Math Toolbox™ なしで使用できます。値が空の文字ベクトルの場合、odeFunction
は無名関数を生成します。文字ベクトルが .m
で終わっていない場合は、関数は .m
を追加します。
既定では、引数 File
をもつ daeFunction
は、最適化されたコードを含むファイルを生成します。"最適化された" とは、コードを単純化または高速化するために中間変数が自動的に生成されていることを意味します。MATLAB によって生成される中間変数は、小文字の t
に自動生成される番号を付けたもの (t32
など) です。コードの最適化を無効にするには、引数 Optimize
を使用します。
Optimize
— 関数ファイルに書き込まれたコードの最適化を回避するフラグ
true
(既定値) | false
関数ファイルに書き込まれたコードの最適化を回避するフラグ。false
または true
で指定します。
既定では、引数 File
をもつ daeFunction
は、最適化されたコードを含むファイルを生成します。"最適化された" とは、コードを単純化または高速化するために中間変数が自動的に生成されていることを意味します。MATLAB によって生成される中間変数は、小文字の t
に自動生成される番号を付けたもの (t32
など) です。
引数 File
を持たない (または空の文字ベクトルによって指定されたファイル パスを持つ) daeFunction
は、関数ハンドルを作成します。この場合、コードは最適化されません。Optimize
を true
に設定して強制的にコードの最適化を行おうとすると、daeFunction
はエラーをスローします。
Sparse
— スパース行列と密行列の生成を切り替えるフラグ
false
(既定値) | true
スパース行列と密行列の生成を切り替えるフラグ。true
または false
で指定します。'Sparse',true
を指定すると、生成された関数では、スパース数値行列でシンボリック行列を表します。ゼロの要素を多く含むシンボリック行列を変換する場合、'Sparse',true
を指定します。多くの場合、スパース行列での演算は、密行列での同じ演算よりも効率的です。
出力引数
f
— ode15i
への入力引数として機能する関数ハンドル
MATLAB 関数ハンドル
ode15i
への入力引数として機能する関数ハンドル。MATLAB 関数ハンドルとして返されます。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)