簡體   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