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
ある点における数値的な傾きの推定. この関数は廃止されます. numderivative 関数を代わりに 使用してください.
呼び出し手順
g = numdiff(fun, x [,dx])
引数
- fun
外部, Scilab 関数またはリスト. 呼び出し手順については, 以下を参照ください. また,外部関数に関する詳細については, externalを参照ください. f: Rn --> Rp
- x
傾きを探す点の
n
座標のベクトル- dx
ベクトル, 有限差分ステップ. デフォルト値は
dx = sqrt(%eps)*(1+1d-3*abs(x))
です.- g
行列, 軌跡
x
における傾きの推定値
説明
Rn から Rpまで
関数 fun(x)
を指定すると, 有限差分法により
以下のような p x n
行列 g
を計算します.
g(i,j) = [(df_i)/(dx_j)](x)
1次の式を使用します.
パラメータがない場合, 関数fun
の呼び出し手順は,
x
∈ Rn
および y
∈ Rpとして,
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) // 例3 (f: R^3 --> R^3) // myfunはR^2からR^2への関数: (x(1), x(2), x(3)) |--> (myfun(x)(1), myfun(x)(2), mfun(x)(3)) function f=myfun(x) f(1) = x(1) * x(1); f(2) = x(1) * x(2) * x(3); f(3) = 2*x(1) + 2*x(2) + 2*x(3); endfunction x = [5 8 10]; g = numdiff(myfun, x) // 正確な傾斜は以下となります: // [ df_1/dx_1 df_1/dx_2 df_1/dx_3 ; // df_2/dx_1 df_2/dx_2 df_2/dx_3 ; // df_3/dx_1 df_3/dx_2 df_3/dx_3 ; ] exact3 = [2*x(1) 0 0 ; x(2)*x(3) x(1)*x(3) x(1)*x(2) ; 2 2 2]
参照
- interp — 3次スプライン評価関数
- interp2d — 双3次スプライン (2d) 評価関数
- splin — 3次スプライン補間
- eval_cshep2d — 2次元の3次シェパード補間の評価
- optim — non-linear optimization routine
- diff — 差分および離散微分
- derivative — approximate derivatives of a function. This function is obsolete. Please use the numderivative function instead.
- numderivative — approximate derivatives of a function (Jacobian or Hessian)
- external — Scilabオブジェクト, 外部関数またはルーチン
履歴
バージョン | 記述 |
5.5.0 | 廃止予定となりました. Scilab 6.0.0で削除されます. |
付録
我々は,numdiff
関数を使用する
numderivative
関数を使うように更新できる方法について
議論しています.
以下の関数について考えてみましょう:
function f=myfun(x) f = x(1)*x(1)+x(1)*x(2) endfunction
および点:
x = [5 8]
ここで, 命令:
g1 = numdiff(myfun, x)
は以下で置換できます
g2 = numderivative(myfun, x)
正確に同じステップを使用することが重要です,
numdiff
と値が同じステップを使用します:
Report an issue | ||
<< inttrap | Differential Equations, Integration | ode >> |