![](/img/trans.png)
[英]How can I fix the swapBack function to get the result I intended?
[英]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.