関数定義とは実際には「function」型の値を作成し、これを変数に代入するステートメント。
「function」型の値を無名関数と呼ぶ。
以下の2つのステートメントは同義。
function foo (x) return 2*x end
foo = function (x) return 2*x end
以下のような使い方が可能。
(ex-1)
指定された関数の導関数を返す関数「derivative」を定義し、
- sin(x)の導関数
- con(x)
がx=10で一致する事を確認するサンプルスクリプト。
function derivative (f, delta)
delta = delta or 1e-4
return function (x)
return (f(x + delta) - f(x))/delta
end
end
c = derivative(math.sin)
print(math.cos(10), c(10))
<結果>
-0.83907152907645 -0.83904432662041
deltaがe^-4であるため、小数点以下5桁目で差異が生じているがほぼ一致している事が分かる。
(ex-2)
上記と同様、関数「derivative」を定義し、
- x^3の導関数
- 3x^2
がx=10で一致する事を確認するサンプルスクリプト。
func = function (x) return 3*x*x end deriv = derivative( function(x) return (x*x*x) end ) print( func(10), deriv(10) )
<結果>
300 300.00300000893
0 件のコメント:
コメントを投稿