算法经典题型16
用二分法求一元非线性方程f(x)= x3/2+2x2-8=0 在区间[0, 2]上的近似实根r,精确到0.0001.
用到的思想—迭代法
博主用到的环境:Win7, CodeBlocks等。
一、代码
#include <iostream>#include <cmath>using namespace std;int main(){float x,x1=0,x2=2,f1,f2,f;float a,b;cout<<"input a,b (f(a)*f(b)<0)"<<endl;cin>>a>>b;f1=x1*x1*x1/2+2*x1*x1-8;f2=x2*x2*x2/2+2*x2*x2-8;if(f1*f2>0){cout<<"No root"<<endl;return 0;}do{x=(x1+x2)/2;f=x*x*x/2+2*x*x-8;if(f=0) break;if(f1*f>0.0){x1=x;f1=f;}else x2=x;}while(abs(x1-x2)>=1e-4);cout<<"root="<<x;return 0;}
二、测试
总结
谢谢宝宝们的阅读,有问题的话评论@我,没问题的话点个赞再走哦~
用二分法求一元非线性方程f(x)= x3/2+2x2-8=0 在区间[0 2]上的近似实根r 精确到0.0001(C++)(迭代法)