-2

ラボから取得:

この演習の目的は、関数の数値積分のための中点規則 (長方形法とも呼ばれます) を実装することです。

ジェネリック インターフェイス関数を次のように宣言します。

public インターフェイス Function {B apply(A arg); }

次に、等間隔の n ステップで lowerBound と upperBound の間で統合される > 関数 f の中点ルールを実装するメソッド integrate を持つクラス Maths を作成します。

public static double integrate(Function f, double lowerBound, double upperBound, int n)

0 と 1 の間の 2 乗関数の数値積分によってコードをテストします (結果は約 1.0/3.0 になるはずです)。

0 と PI/2 の間の正弦関数 (クラス java.lang.Math を参照。結果は > 約 1.0 になるはず)必要に応じて、匿名のローカル クラスを使用することもできます。

私はウィキペディアのページを見ましたが、コンセプト全体 (特に上限と下限の意味) を理解することはできません。Afaik は、線上の各接点の面積を取得するために使用される N 個の四角形を考えると、線の下の面積を取得する方法にすぎません。それを上記の関数に関連付ける方法がわかりません-再帰かもしれませんか?また、次のようなものも見たことがありません:

B apply(A 引数)

--

これまでのところ、私はこの進歩を遂げました:

public class MidPointRule {
    public MidPointRule() {
    }
    public static double integrate(Function<Double,Double> f, double lowerBound,double upperBound, int n){
        double width = upperBound-lowerBound/n; // width is current width-nextwidth/n?
        return integrate(f,lowerBound,upperBound,n);
    }
    public static void main(String[] args) {
        // sq function between 0 and 1, sinus function between 0 and PI/2.

    }
}
4

1 に答える 1

1

最初に関数のインターフェイスを作成するよう求められているようです。あなたの関数は型 A の何かをパラメーターとして受け取り、型 B の何かを返します。これは次のようになります。

// here I am using Float for both A and B
Function<Float, Float> myFunc = new SineFunction();
float result = myFunc.apply(1.0f);

これが完了すると、他の関数を統合する関数を作成するよう求められます。x=0 と x=pi/2 の間で sin(x) を積分したいとしましょう。これが下限と上限の意味です (0 が下限、pi/2 が上限)。したがって、統合関数は、いくつかのステップを使用して、0 から pi/2 のような範囲で関数に作用する必要nがあります。

答えを出さずに言いたいのはそれだけです。幸運を!

于 2013-10-23T15:29:38.137 に答える