我正在做一个家庭作业,我需要使用 McLaurin 系列来评估 cosh(x) 和 sin(x)。每次程序运行时,用户输入一个从 0 到 10 的数字来指定要评估系列的术语数。然后,用户输入 x 的值以进行评估。一旦用户点击输入,将计算并打印出该系列的 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 的值)。
这就是我应该得到的:(第二个增量)
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
当我运行我的代码时,我没有得到上述结果:(第二次增量)
x Series Exact (using the cmath functions) Exact % Error
-6.000e-001 1.18547e+000 1.18547e+000 4.55325e-012
所以似乎出了点问题,因为我的确切错误与我得到的错误甚至不一样。我知道可能会有稍微不同的值,这是预期的,但不会达到这个程度。
我们欢迎所有的建议,
谢谢