Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
numdiff
数値的な傾きの推定
呼び出し手順
g=numdiff(fun,x [,dx])
引数
- fun
外部, Scilab 関数またはリスト. 呼び出し手順については, 以下を参照ください. また,外部関数に関する詳細については, externalを参照ください.
- x
ベクトル, 関数
fun
の引数- dx
ベクトル, 有限差分ステップ. デフォルト値は
dx=sqrt(%eps)*(1+1d-3*abs(x))
です.- g
ベクトル, 傾きの推定値
説明
指定した関数 fun(x)
from
R^n
to R^p
は
以下のように有限差分法により行列g
を計算します.
g(i,j) = (df_i)/(dx_j)
1次の式を使用します.
パラメータがない場合, 関数funの呼び出し手順は
y=fun(x)
となり, numdiff は
g=numdiff(fun,x)
のようにコールすることがでできます.
これ以外の場合,関数funの呼び出し手順は,
y=fun(x,param_1,pararm_2,..,param_q)
とする必要があります.
パラメータparam_1,param_2,..param_q
が存在する場合,
numdiff
は以下のようにコールすることができます
g=numdiff(list(fun,param_1,param_2,..param_q),x)
.
数値精度,2つのアルゴリズムの比較については, 微分を参照ください.
例
// 例1 (パラメータなし) // myfun は R^2 から R への関数: (x(1),x(2)) |--> myfun(x) function f=myfun(x) f=x(1)*x(1)+x(1)*x(2) endfunction x=[5 8] g=numdiff(myfun,x) // 正確な傾き (すなわち,最初の要素x(1)に関する微分および二番目の要素x(2)に関する // 微分はexact=[2*x(1)+x(2) x(1)]となります. exact=[2*x(1)+x(2) x(1)] // 例2 (パラメータ) // myfun はRからRへの関数: x(1) |--> myfun(x) // myfun は3個のパラメータ a, b, cを有します function f=myfun(x, a, b, c) f=(x+a)^c+b endfunction a=3; b=4; c=2; x=1 g2=numdiff(list(myfun,a,b,c),x) // 正しい傾き, すなわち,x(1)に関する微分は以下のようになります : exact2=c*(x+a)^(c-1)
参照
- optim — non-linear optimization routine
- derivative — approximate derivatives of a function
- external — Scilabオブジェクト, 外部関数またはルーチン
Report an issue | ||
<< inttrap | Differential Equations, Integration | ode >> |