0
# include <iostream>
# include <math.h>
using namespace std;

int main()
{
    int count=1;
    double x;
    double sine, num, dem, sign, term;
    sine=0;
    sign = 1;

    cout << "Get x: ";
    cin >> x;
    num = x;
    dem = count;

    while ( count <= 10 )
    {
        term = (num/dem);
        sine = sine + term*sign;
        num = num*x*x;
        count = count + 2;
        dem = dem * count * (count-1);
        sign = -sign;
    }

    cout << "The result is: ";
    cout << sine;
    return 0;
}   

これは私が C++ で sin x 用に書いたコードです。プログラムが正しい値を計算しないため、誰かが私のエラーを指摘できますか。何時間もデバッグしようとしましたが、私の努力は無駄です。あなたの助けに感謝します!ありがとう!

*num=分子、dem=分母

4

3 に答える 3

0

バディ、あなたのプログラムは正しいです。sin(3.1416) の通常の計算をチェックインし、値をラジアンで保持します。あなたが得た値は3.1416度です..そして、式はラジアンに対して機能します

于 2013-07-21T03:51:07.407 に答える
0

正弦などの多項式近似は、実際には狭い範囲の値に対してのみ機能します。より多くの項、効果的に次数の高い多項式を使用すると、精度をある程度向上させることができますが、すぐに丸め誤差が増加します。

シリーズを使用して計算するには狭いドメインを選択し、その範囲外の入力を同じ正弦の範囲内の値に減らす必要があります。

それが終わったら、用語の数を試してみてください。

于 2013-07-21T03:45:08.310 に答える
0

10 語だけでなく、20 語まで試してみてください。

また、x が大きいと級数の収束が遅くなるため、始める前に x を法 2π としてください。

于 2013-07-21T03:44:27.230 に答える