Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
impl
微分代数方程式
呼出し手順
y=impl([type],y0,ydot0,t0,t [,atol, [rtol]],res,adda [,jac])
引数
- y0,ydot0
実数のベクトルまたは行列 (初期条件).
- t0
実数のスカラー (初期時間).
- t
実数ベクトル (解を計算する時刻).
- res,adda
外部 (関数または文字列またはリスト).
- type
文字列
'adams'または'stiff'- atol,rtol
yと同じ大きさの実数スカラーまたは実数ベクトル.- jac
外部 (関数または文字列またはリスト).
説明
陰的な線形微分方程式の解
A(t,y) dy/dt=g(t,y), y(t0)=y0
t0 は初期時刻, y0
は初期条件,
t0におけるyの時間微分
ベクトル ydot0 も指定する必要があります.
入力 resは,
外部ルーチン ,すなわち,
指定された構文を有する関数,また規定の呼び出し手順を有する
FortranサブルーチンまたはC関数の名前(文字列),
またはリストです.
res が関数の場合, その構文は
以下のようにする必要があります:
r = res(t,y,ydot)
ただし,tは,実数ベクトル (時間) そして
y および ydot は実数ベクトル
(状態量および状態量の微分)です. この関数は
r=g(t,y)-A(t,y)*ydotを返す必要があります.
resが文字列の場合,
FortranサブルーチンまたはC関数の名前を指します.
この例については,
SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.fを参照ください.
res をリストとすることもできます:
odeのヘルプを参照ください.
入力 adda も外部ルーチンですi.
adda が関数の場合, その構文は以下のようにする必要があります:
r = adda(t,y,p)
これはr=A(t,y)+pを返します. ただし,
p は
A(t,y)に加算される行列です.
adda が文字列の場合,
FortranサブルーチンまたはC関数の名前を指します.
この例については,
SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.fを参照ください.
adda をリストとすることもできます:
odeのヘルプを参照ください.
入力 jac も外部ルーチンです.
jac が関数の場合, その構文は以下のようにする必要があります:
j = jac(t,y,ydot)
これは
r=g(t,y)-A(t,y)*ydotの
yに関するヤコビアンを返します.
jac が文字列の場合,
FortranサブルーチンまたはC関数の名前を指します.
この例については,
SCI/modules/differential_equations/sci_gateway/fortran/Ex-impl.fを参照ください.
jac をリストとすることも可能です:
odeのヘルプを参照ください.
例
y=impl([1;0;0],[-0.04;0.04;0],0,0.4,'resid','aplusp'); // Using hot restart //[x1,w,iw]=impl([1;0;0],[-0.04;0.04;0],0,0.2,'resid','aplusp'); // hot start from previous call //[x1]=impl([1;0;0],[-0.04;0.04;0],0.2,0.4,'resid','aplusp',w,iw); //maxi(abs(x1-x))
| Report an issue | ||
| << feval | Differential Equations, Integration | int2d >> |