2016-04-08 20 views
0

私はSimpsonのルールを使って関数を統合するJavaScript関数を書こうとしています。私はシンプソンのルールの背後にある数学を完全に理解していますが、私は別の関数を統合する関数を書く方法が不明です。ここで私が実現したいコードは次のとおりです。パラメータとして渡される別の関数を呼び出すJavaScript関数を作成するにはどうすればよいですか?

integrate = function(leftBound, rightBound, numSubIntervals, expression) { 

    var a = leftBound, 
     b = rightBound, 
     n = numSubIntervals, 
     myFunc = expression; 

    /*implementation of simpson's rule..*/ 

    return result; 
} 

私の問題は、私のようにそれを渡すようなものをやってなくて、パラメータとして数式(統合する機能)を渡す方法がわからないということです私はしたいことではないeval()を使用しています。私はまた、サードパーティのライブラリを使用したくない。私はバニラのJavaScriptを使用して関数を記述したい。私はここで何が欠けているのですか?これには明らかな解決策がありますか?

+0

はい、私は....あなたは何の問題もなく、パラメータとしての機能を渡すことができることが可能であると思う 'VAR myfuncを=関数(X){X + 1を返します。 }; integrate(..、..、myFunc) 'を呼び出し、' expression(x_value) 'を使って呼び出します。 – olivarra1

+0

これは擬似コードではありません。コメント – wvdz

答えて

2

関数自体は、他の関数の引数になります。例:

integrate(0,5,10, function(x){ 
return x*x; 
}) 

この例では、所定のXを取り、それを四角で囲む関数を使用しています。 integrateの範囲内で、この関数をSimpsonの規則を使用してこの関数を統合するためにxの与えられた間隔で呼び出すことになります。 integrate


、それに渡された関数を呼び出すための構文は次のとおりです。

var point = expression(x); 

xexpressionという名前の関数に渡された値であり、かつpointexpressionの戻り値です。

+0

のコードですが、 'integrate'という関数内で無名関数をどのように参照しますか? – Ice101781

+0

私はこれを私の答えに加えました。 –

+0

助けてくれてありがとう、ピーター - それは私が探していたものです。 – Ice101781

2

私のコメントの私の答えです。関数をパラメータとして渡し、内部から呼び出すことができます。

integrate = function(leftBound, rightBound, numSubIntervals, expression) { 

    var a = leftBound, 
     b = rightBound, 
     n = numSubIntervals, 
     myFunc = expression; 

    /*implementation of simpson's rule..*/ 
    result = (b-a)/6 * (expression(a) + 4*f* ...); 

    return result; 
} 

var toIntegrate = function(x){ 
    return 2*x*x*x - 3*x*x + 2*x - 1; 
} 

integrate(0, 10, 10, toIntegrate); 
+0

実際にヘルプを提供してくれてありがとう、@ olivarra1、ちょうど私のスタイリングなどを修正するのではなく、別に 'toIntegrate'関数を別に宣言するのではなく、ただ一つのコードブロックを持つ方法があるのだろうか? – Ice101781

関連する問題