日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二分法求多项式单根

發布時間:2025/6/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二分法求多项式单根 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二分法求函數根的原理為:如果連續函數f(x)在區間[a, b]的兩個端點取值異號,即f(a)f(b)<0,則它在這個區間內至少存在1個根r,即f(r)=0。

二分法的步驟為:

  • 檢查區間長度,如果小于給定閾值,則停止,輸出區間中點(a+b)/2;否則
  • 如果f(a)f(b)<0,則計算中點的值f((a+b)/2);
  • 如果f((a+b)/2)正好為0,則(a+b)/2就是要求的根;否則
  • 如果f((a+b)/2)與f(a)同號,則說明根在區間[(a+b)/2, b],令a=(a+b)/2,重復循環;
  • 如果f((a+b)/2)與f(b)同號,則說明根在區間[a, (a+b)/2],令b=(a+b)/2,重復循環;

    本題目要求編寫程序,計算給定3階多項式f(x)=a3x3+a2x2+a1x+a0在給定區間[a, b]內的根。

    輸入格式:

    輸入在第1行中順序給出多項式的4個系數a3、a2、a1、a0,在第2行中順序給出區間端點a和b。題目保證多項式在給定區間內存在唯一單根。

    輸出格式:

    在一行中輸出該多項式在該區間內的根,精確到小數點后2位。

    輸入樣例:

    3 -1 -3 1 -0.5 0.5

    輸出樣例:

    0.33
#include <iostream> #include <cstdio> #include <cmath> using namespace std; const double threshold=0.01; //!閾值 double a3,a2,a1,a0;double f(double x) {return x * (x * (a3 * x + a2) + a1) + a0; } int main() {double a,b,mid;cin >> a3 >> a2 >> a1 >> a0;cin >> a >> b;while(b-a>=threshold){mid=(a+b)/2;if(f(mid)==0)break;else if(f(mid)*f(a)>0)a=mid;else if(f(mid)*f(b)>0)b=mid;}mid=(a+b)/2;printf("%.2lf\n", mid);return 0; }

轉載于:https://www.cnblogs.com/claremore/p/4805798.html

總結

以上是生活随笔為你收集整理的二分法求多项式单根的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。