匿名使用者
匿名使用者 發問時間: 科學數學 · 1 0 年前

解一元一次的方法

Cos( 56.3 - 3.8381X ) - 0.1444 X = 0

X 約6-7之間

遇上種問題之前都是用 C#寫個判斷, 用帶入法求出的 .

請問除了用試誤之外, 還有其他的方式嗎?

謝謝!

2 個解答

評分
  • 1 0 年前
    最佳解答

    既然提到數值分析

    那我就介紹一個方法給你

    "二分法"

    這種方法是用勘根定理及中間值定理寫出來

    你先看~不懂在發問

    程式碼:

    #include <stdio.h>

    #include <math.h>

    float bisection(float a, float b, float Tol, float N);

    int main()

    {

    float a, b, c, d, m;

    printf("請依序輸入左端點;右端點;誤差;迴圈次數(左右端點需為整數,誤差為小數):\n");

    scanf("%f%f%f%f",&a, &b ,&c ,&d);

    m=bisection(a, b, c, d);

    printf("方程式的根為:x=%.20f\n\n", m);

    system("pause");

    }

    float bisection(float a, float b,float Tol, float N)

    {

    int i=1;

    float FA, FB, FP, p;

    FA=cos(56.3-3.8381*a)-0.1444*a;

    while(i<=N)

    {

    p=a+(b-a)/2;

    FP=cos(56.3-3.8381*p)-0.1444*p;

    if(FP==0 || ((b-a)/2)<Tol )

    {

    return p;

    }

    i++;

    if(FA*FP>0)

    {

    a=p;

    FA=FP;

    }

    else

    b=p;

    }

    }

    建議誤差取0.00001 迴圈次數20次

    以上面的題目算出的答案是6.37929......

    你也可以是是別的題目

    副程式那邊的函數改一下就好了

    參考資料: 剛寫的
  • 匿名使用者
    1 0 年前

    既然提到 C

    你可以去找數值分析的書,看求根的那些章節就好

    方法很多

    例如十分逼近法,二分逼近法,Newton-Raphson 方法

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