シリーズを計算する C プログラムを書きたい:
1/x + 1/2*x^2 + 1/3*x^3 + 1/4*x^4 + ...
小数点以下 5 桁まで。
プログラムはx
入力としてf(x)
(系列の値) を小数点以下 5 桁まで出力します。手伝って頂けますか?
シリーズを計算する C プログラムを書きたい:
1/x + 1/2*x^2 + 1/3*x^3 + 1/4*x^4 + ...
小数点以下 5 桁まで。
プログラムはx
入力としてf(x)
(系列の値) を小数点以下 5 桁まで出力します。手伝って頂けますか?
多項式を評価する場合、通常、 Horner形式は拡張形式よりも数値安定性が高くなります。
最初の項がタイプミスの(((((1/4 )* x + 1/3) * x ) + 1/2) * x + 1) * x
場合、最初の項が本当に 1/x の場合は Elseを試してください(((((1/4 )* x + 1/3) * x ) + 1/2) * x*x + 1/x
もちろん、Eric Postpischil の回答で開発されたように、収束と数値安定性を分析する必要があります。
最後に、あなたが例として提出したセリエは本当にいくつかの x の有限値に収束しますか???
計算した合計が系列の限界までの望ましい距離内にあることを知るためには、誤差の原因が望ましい距離よりも小さいことを実証する必要があります。
系列を数値的に評価する場合、エラーの原因は 2 つあります。1 つは、浮動小数点の丸めなどの数値計算の制限です。もう 1 つは、部分和に追加されていない残りの項の和です。
数値誤差は、行われた計算に依存します。評価するシリーズごとに、エラーのカスタム分析を実行する必要があります。あなたが示すサンプルシリーズでは、数値誤差の粗いが十分な境界は、あまり労力をかけずに計算することができます. これはあなたが主に興味を持っているシリーズですか、それとも他にもありますか?
残りの項の合計にもカスタム分析が必要です。多くの場合、系列が与えられると、残りのすべての項の合計と少なくとも同じ大きさであることが証明できる式を見つけることができますが、それはより簡単に計算できます。
これら 2 つの誤差の境界を確立した後、2 つの境界の合計が目的の距離よりも小さくなるまで、級数の項を合計できます。