二分逼近法的程式寫法?

【題目:】

f(x)=x^3+x+1,上限是0、下限是-1,誤差值為0.001

f(0)=1

f(-1)=-1

如何用(While,for)寫二分逼近法的c語言程式,解出x呢?

<我所寫的程式>:

#include <stdlib.h>

#include <stdio.h>

int main(void)

{

float x,upper_1,lower_2;

printf("f(x)=x*x*x+x+1\n");

upper_1=0;

lower_2=-1;

upper_1* lower_2<0;

while(upper_1- lower_2<0.001)

{

for(i=0;i<=n;i++)

x= (upper_1 + lower_2)/2;

if(upper_1* x>0)

upper_1=x;

else

lower_2=x;

}

printf("x=%f\n",x);

system("PAUSE");

return 0;

}

可以幫我看我的程式哪裡寫錯嗎?

麻煩解釋一下,謝謝!!

2 個解答

評分
  • 1 0 年前
    最佳解答

    #include <stdlib.h>

    #include <stdio.h>

    int main(void)

    {

    float x, upper_1, lower_2;

    upper_1= 0;

    lower_2= -1;

    while(upper_1- lower_2 > 0.001)

    {

    x= (upper_1 + lower_2)/2;

    if (x*x*x + x + 1 >0)

    upper_1 = x;

    else

    lower_2 = x;

    }

    printf("f(x) = x*x*x + x + 1\n");

    printf("x = %f\n", x);

    system("PAUSE");

    return 0;

    }

  • Walala
    Lv 5
    1 0 年前

    upper_1 * lower_2 < 0; // 這行完全沒作用

    while(upper_1 - lower_2 < 0.001) {

    for(i=0; i<=n; i++) // i 和 n 都沒有宣告, 而且這行for是只要執行下一行而已嗎? 作用是什麼?

    x= (upper_1 + lower_2)/2;

    if(upper_1 * x > 0)

    upper_1=x;

    else

    lower_2=x;

    }

    printf("x=%f\n",x);

    system("PAUSE");

    return 0;

    }

    有問題再問吧

還有問題?馬上發問,尋求解答。