二分法求多项式的一个根
来源:互联网 发布:数据标准化 matlab 编辑:程序博客网 时间:2024/05/21 07:55
数学原理
二分法求根的数学原理:如果连续函数f(x)在区间[a,b]的两个端点上取值异号,则在该该函数在该区间上必有一个根。
解步骤
二分法求解步骤与二分查找非常相似。具体如下:
1.检查区间的长度,如果小于阈值,则返回中间值,mid=(a+b)/2。
2.求中间值对应的函数值,f(mid)。
3.如果f(mid)==0,返回mid。
4.如果f(mid)与f(a)同号,即f(mid)*f(a)>0,则令a=mid。返回步骤一。
5.如果f(mid)与f(b)同号,即f(mid)*f(b)>0,则令b=mid。 返回步骤一。
代码
#include<iostream>using namespace std;double THRESHOLD=0.001;int coefficients[100];int n=2;//系数个数-1 double f(double x){ double res=0; double temp=1; for(int i=0;i<n;i++){ res+=res+coefficients[i]*temp; temp*=x; } return res;}double root(double a, double b){ if(f(a)==0) return a; if(f(b)==0) return b; double mid; while(b-a>=THRESHOLD){ mid=(a+b)/2; if(f(mid)==0) return mid; if(f(a)*f(mid)>0) a=mid; else if(f(b)*f(mid)>0) b=mid; } return (a+b)/2;}int main(){ double a, b; for(int i=0; i<n; ++i ) { cin>>coefficients[i]; } cin>>a>>b; printf( "%.2lf", root( a, b ) ); return 0;}
算法流程很简单,要做到bug-free。
1 0
- 二分法求多项式的一个根
- 二分法求多项式根
- 二分法求多项式单根
- 二分法求多项式单根
- 循环-08. 二分法求多项式单根
- PAT:二分法求多项式单根
- 5-18 二分法求多项式单根
- 5-18 二分法求多项式单根
- 二分法求多项式单根 PAT
- 【c++】二分法求多项式单根
- 7-18 二分法求多项式单根
- 循环-08. 二分法求多项式单根(20)
- PAT循环-08. 二分法求多项式单根(20)
- 循环-08. 二分法求多项式单根(20)
- 循环-08. 二分法求多项式单根(20)
- PAT 03-1. 二分法求多项式单根(20)
- 03-1. 二分法求多项式单根(20) MOOC
- 二分法求多项式单根【数据结构测试3.1】
- 离散制造与流程制造的区别
- JS截取字符串substr 和 substring方法的区别
- 41.利用bitmap生成圆形图片 平铺背景 touch事件
- telnet 安装---telnet: connect to address 127.0.0.1: Connection refused问题 ----
- Android之NDK开发
- 二分法求多项式的一个根
- Unable to install pygraphviz from pip? Can't find graphviz.
- 只允许运行一个程序
- 【数据结构】栈的应用--行编辑程序(c++)
- 使用正则表达式匹配嵌套Html标签
- linux下find,xargs命令详解和实例
- oracle常用语句
- mysql notifier 1.1.6 root element is missing
- 213123123