一般的に言えば、数値的に評価して積分する場合、MATLAB では、境界に大きな数を選択するだけですか、それとも MATLAB に「制限を取る」ように指示する方法はありますか?
さまざまなマシンがさまざまな大きさの数値を処理できるため、大きな数値を使用するだけであると想定しています。
それらが私のコードを改善する方法であるかどうか疑問に思っています。私はモンテカルロを介して多くの期待値計算を行っており、台形法を使用して自分の自由度が十分に小さいことを確認しています。
一般的に言えば、数値的に評価して積分する場合、MATLAB では、境界に大きな数を選択するだけですか、それとも MATLAB に「制限を取る」ように指示する方法はありますか?
さまざまなマシンがさまざまな大きさの数値を処理できるため、大きな数値を使用するだけであると想定しています。
それらが私のコードを改善する方法であるかどうか疑問に思っています。私はモンテカルロを介して多くの期待値計算を行っており、台形法を使用して自分の自由度が十分に小さいことを確認しています。
厳密に言えば、数値積分を無限大まで評価することは不可能です。ほとんどの場合、問題の積分が有限であれば、かなり大きな範囲で簡単に積分できます。安定した値に収束するには、法線誤差の積分が 10 シグマ未満である必要があります。この値は、良くも悪くも、同じ積分を無限大まで評価するのと同じです。 .
それは、統合したい機能のタイプに大きく依存します。それが「スムーズ」(ジャンプなし - できればどの導関数にもありませんが、次第に重要性が低くなります)であり、有限である場合、2 つの主な選択肢があります(最も単純なアプローチに限定します)。意味:左端と右端を一緒にして、値のジャンプもありませんか(および導関数...):間隔全体でポイントを均等に分散し、関数値をサンプリングして推定平均を取得し、次に乗算します積分を取得する間隔の長さ。2. 周期的でない場合: Legendre 統合を使用します。
モンテカルロ法は、ほぼ例外なく貧弱な方法です: (機械) 精度に向けて非常にゆっくりと進行します: 追加の有効桁数については、100 倍以上のポイントを適用する必要があります! 上記の 2 つの方法は、周期的および非周期的な「ナイス」(スムーズなど) 関数に対して、非常に少数のサンプル ポイントですでに公正な結果を提供し、その後、より精度の高い方向へと非常に急速に進みます。あなたの精度に!これは、より多くのサンプル ポイントを使用して次の作業を適用したい場合に、以前の結果のすべての部分を破棄しなければならない負担をはるかに上回ります。以前のポイント セットを新しい新しいものに置き換えますが、モンテカルロでは次のことができます。既存のセットにポイントを追加するだけで、結果を絞り込むことができます。