繁体   English   中英

我也不知道如何修改代码以获得结果

[英]I do nor know how to fix code to get a result

我做了一个代码,但不明白如何强制它工作。 我确定问题出在某个循环中,但不知道如何解决。 这是一个任务:编写一个程序来近似计算点 0 < | 中 function Y(x) 的值 × | < 1 使用 S(x) 的泰勒级数展开。 求误差小于 ε < 0.0001 的 function 的近似值。 从键盘输入 x 和 ε 的值。 显示 Y(x) 的精确值,找到的 S(x) 的近似值,以及由此产生的误差 | S(x) – Y(x) |。

有我的代码:

`#include <stdio.h>
#include <math.h>

int main(){
double x, E;
printf("x: ");
scanf("%lf", &x);
printf("E: ");
scanf("%lf", &E);
double Yx = sin(x);
double Sx = 0;
if(fabs(x) >= 1 && E >= 1e-4)
    printf("Change x and e");
else if(E >= 1e-4)
    printf("Change e");
else if(fabs(x) >= 1)
    printf("Change x");
else{
for(int k = 0;;k++) {
double f2 = 2 * k + 1;
for(int l = 1; l <= k; l++)
f2 = f2 * l;
double S2 = pow(-1, k) * (pow(x, (2 * k + 1)) / f2);
if(fabs(Sx-Yx) <= E)
break;
Sx= Sx + S2;
}
printf(" Y(x) = %lf\n", Yx);
printf(" S(x) = %lf\n", Sx);
printf(" |S(x)-Y(x)| = %lf \n", fabs(Yx-Sx));
return 0;
  }
 }`

此代码未正确计算所需的阶乘:

double f2 = 2 * k + 1;
for(int l = 1; l <= k; l++)
f2 = f2 * l;

以后,在调试器中单步执行您的程序或插入printf语句以显示变量的值。 在该循环之后打印f2的值会表明它不是所需的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM