Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
However, this page did not exist in the previous stable version.

Scilab help >> Differential Equations, Integration > numdiff

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オブジェクト, 外部関数またはルーチン
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:22 CEST 2012