1. 程式人生 > >[數值分析]二分法求解非線性方程根

[數值分析]二分法求解非線性方程根

Problem1

描述 用二分法求方程x2x1=0的正根,要求誤差小於0.05. 題解

這裡寫圖片描述

通過影象我們確定了一個大致的有根區間[1,0][1,2] 通過二分法求解這兩個區間的根。 [1,0]

#include<bits/stdc++.h>
using namespace std;
double fun(double x) {
    return x*x-x-1;
}
int main()
{
    double l=-1,r=0,ans=0;
    while(true) {
        double
mid = (r + l) *0.5; if(fun(mid) >= 0) l = mid; else r = mid; ans = mid; printf("%.6f %.6f %.6f\n",l,r,mid); if(fabs(r-l) < 0.05) break; } printf("%.6f %.6f %.6f\n",l,r,(r+l)*0.5); getchar(); return 0; }

結果 這裡寫圖片描述

[1,2] 程式碼

#include<bits/stdc++.h>
using namespace std; double fun(double x) { return x*x-x-1; } int main() { double l=1,r=2,ans=0; while(true) { double mid = (r + l) *0.5; if(fun(mid) <= 0) l = mid; else r = mid; ans = mid; printf("%.6f %.6f %.6f\n",l,r,mid); if(fabs(r-l) < 0.05
) break; } printf("%.6f %.6f %.6f\n",l,r,(r+l)*0.5); getchar(); return 0; }

結果 這裡寫圖片描述