11

私は学校用のアルゴリズムを実装していますが、プログラミングで定積分がどのように表されるかを理解するのに問題があります。たとえば、和分方程式は次の例のように実装できることを私は知っています。
ここに画像の説明を入力してください

y = f(x)と仮定

if(x==0){
    y=x+1;
}else{
    for(int i = 0; i < n; i++){
        y = y + (x - 1);
    }
}

次に、数値積分をどのように表現しますか。例:
ここに画像の説明を入力してください
ここに植えられた方程式は数学的に意味がないかもしれませんが、私の目的は、以下を含むアルゴリズムを実装する必要がある学校のプログラミングプロジェクトのc#で同様の方程式を実装することです。積分。シンプソンの法則のような定積分を解くための数値的方法があることを読んでいます。方程式を実装するためにそのようなメソッドを使用する必要がありますか、それともループなどのプログラミングで積分を表すことができますか?

4

4 に答える 4

1

多分私は理解していませんが、積分を数値的に計算する方法を知りたいですか?

そうだとすれば、たくさんの方法があります。簡単な紹介については、http://en.wikipedia.org/wiki/Numerical_integrationをご覧ください。

あなたの例からあなたは簡単に行うことができます:

int f(int x) {
    if(x == 0) {
       y = x + 1;
    }else{ 
      y = computeIntegral()
    }
    return y
}

ここcomputeIntegral()で、は積分を計算するために記述しなければならない関数です。

しかし、xがゼロでない場合はf(x)が1つの値であるため、関数f(x)に問題があると思います。たぶん、積分境界はxに依存するはずですか?

最後のコメント。xが浮動小数点の場合x == 0、切り捨てが丸められるため、浮動小数点には一意の2進表現がないため、お勧めしません。

于 2012-06-08T12:49:32.463 に答える
1

数値積分のトピックは大きく、非常に複雑になる可能性があるため、この回答ではすべてを取り上げません。

シンプソンの法則は、スペクトルの単純で近似的な(複雑な、正確な、または両方ではなく)端に向けた数値積分の方法です。理解とプログラミングが非常に簡単なので、トピックの調査を開始することは悪い選択ではありません。ウィキペディアに示されている式を、お気に入りのプログラミング言語で直接実装できることは間違いありません。

ここで、ループとシンプソンの法則を結び付けるために、シンプソンの法則が積分の真の値に対して行う近似の精度は、積分の限界(この例では3と20)が近づくにつれて向上します。したがって、実行できるアプローチの1つは、3から4、4から5、...の積分を計算し、最後にそれらをすべて加算するループを作成することです。統合によって領域が生成され、領域を一緒に追加すると、(通常は)別のより大きな領域が生成されます。

そして、数値積分の他のすべての専門家にとって、はい、他のアプローチがあり、それらの他のアプローチの多くは(多くの異なる意味で)「より良い」ことを知っています、そしてシンプソンの法則はいくつかの問題を抱えていることを知っています(多くの)機能しますが、開始するのに悪い場所ではありません。

于 2012-06-08T12:53:16.357 に答える
1

それはあなたが何をしようとしているのかによります。これが特定の実装である場合は、式を単純に統合して、最大値から最小値を引いた値を返すことx-1ができます。(x^2)/2 - x

あるいは、dxの適切なステップサイズを選択する推定として実装することもできます。

decimal dx=0.1;

if(x==0){  
    y=x+1;  // could just return y=1
}else{  
    decimal tempY=0;
    for(decimal i = 3; i <= 20; i+=dx){  
        tempY += (i - 1);  
    }  
    // Either return tempY as decimal or
    y= Convert.ToInt32(tempY);
}  
于 2012-06-08T12:55:33.087 に答える
0

積分は無限の合計であるため、ループで積分を単純に表すことはできません。近似法を使用するか、方程式を修正して積分記号を削除する必要があります。2番目の方程式の積分は簡単に削除できるはずです。

于 2012-06-08T12:49:38.110 に答える