マクローリン シリーズを使用して cosh(x) ans sin(x) を評価する必要がある宿題をしています。プログラムが実行されるたびに、ユーザーは 0 ~ 10 の数字を入力して、シリーズを評価する用語の数も指定します。次に、評価する x の値を入力します。ユーザーが Enter キーを押すと、シリーズの 10 個の増分が計算され、出力されます。さらに、正確なエラーも見つけなければなりません。これを行うために、特定の項の計算を実行する、sinh と cosh の両方に対していくつかの異なる関数を作成しました。例: 以下のコードは、用語を 10! まで評価します。
void cosFunction10(double power, double value)
{
double cosh_x = 0;
double math_cosh = 0;
double exact_error;
double x;
if (value < 0)
x = -0.1*0;
for (int i = 0; i < 11; ++i)
{
cosh_x = (1.0 + ((x*x)/(2.0*1.0)) + ((x*x*x*x)/(4.0*3.0*2.0*1.0)) + ((x*x*x*x*x*x)/(6.0*5.0*4.0*3.0*2.0*1.0)) + ((x*x*x*x*x*x*x*x)/(8.0*7.0*6.0*5.0*4.0*3.0*2.0*1.0)) + ((x*x*x*x*x*x*x*x*x*x)/(10.0*9.0*8.0*7.0*6.0*5.0*4.0*3.0*2.0*1.0)));
math_cosh = cosh(x);
exact_error = (math_cosh - cosh_x);
cout << setiosflags(ios::scientific) << setprecision(3) << x << "\t";
cout << setiosflags(ios::scientific) << setprecision(5) << cosh_x << "\t";
cout << math_cosh << "\t";
cout << exact_error << endl;
x = x + (0.1*value);
}
}
プログラムを実行して、10 (n 番目の項) と -6 (x の値) の値を入力するとします。
これは私が得るべきものです: (2番目のインクリメント)
x Series Exact (using the cmath functions) Exact % Error
-6.000e-001 1.18547e+000 1.18547e+000 0.00000e+000
次の 2 つの出力は、4 番目のインクリメントに到達するまで、正確なエラーに対して同じになります。
x Series Exact (using the cmath functions) Exact % Error
-1.800e+100 3.10747e+000 3.10747e+000 -7.67243e-005
コードを実行すると、上記の結果が得られません: (2 回目のインクリメント)
x Series Exact (using the cmath functions) Exact % Error
-6.000e-001 1.18547e+000 1.18547e+000 4.55325e-012
私の正確なエラーは、私が与えられたものと同じでさえないため、何かがうまくいかないようです。多少異なる値が存在する可能性があることは理解していますが、これは予想されることですが、この程度ではありません。
どんな提案でも大歓迎です、
ありがとうございました