関数定義とは実際には「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 件のコメント:
コメントを投稿