牛顿迭代法和二分法求方程的根
2017-12-04 19:24
337 查看
使用牛顿迭代法(在1.5附近)和二分法(在(-10,10)区间内)求2*x*x*x-4*x*x+3*x-6=0的根
牛顿迭代法:
算法分析:假设方程f(x)=0,在x0附近有一个根,那么用xn+1=xn-f(xn)/f’(xn)。依次计算x1,x2,x3,…………,那么这个序列无限逼近方程的根。原理是根据f(x)在x0附近的值和斜率,估计f(x)和x轴的交点。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/12/28271f878f5a8ad8196c40b40a532ca9)
二分法:
算法分析:对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。
91b1
牛顿迭代法:
算法分析:假设方程f(x)=0,在x0附近有一个根,那么用xn+1=xn-f(xn)/f’(xn)。依次计算x1,x2,x3,…………,那么这个序列无限逼近方程的根。原理是根据f(x)在x0附近的值和斜率,估计f(x)和x轴的交点。
#include<stdio.h> int main() { double x=1.5; double fx,f1x,eps=0.00001; do { fx=2*x*x*x-4*x*x+3*x-6; f1x=6*x*x-8*x+3; x=x-fx/f1x; if(fx<0)fx=-fx; if(fx<eps)break; }while(1>0); printf("%lf",x); return 0; }
二分法:
算法分析:对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。
#include<stdio.h> int main() { double l=-10.0,h=10.0; //划定区间,默认函数在-10出取负值,在10处取正值 double m,fm,eps=0.000001; //规定逼近值eps do { m=(l+h)/2; //找到区间中点 fm=2*m*m*m-4*m*m+3*m-6; //计算区间中点函数值 if(fm<0)l=m; //如果区间中点函数值为负值,将区间最小端点赋为区间中点 else h=m; //如果区间中点函数值为正值,将区间最大端点赋为区间中点 if(fm<0)fm=-fm; //如果函数值为负值化为正值便于和eps比较,此处和上述任何一个步骤无关 if(fm<eps)break; //如果函数值趋近与eps,即得到根m }while(1); printf("%lf",m) return 0; }
91b1
相关文章推荐
- 1、编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代
- 用牛顿迭代法和二分法求方程的根【C语言】
- 关于使用牛顿迭代法和二分法解方程的算法说明
- 方程求根(二分法和牛顿迭代法)
- 关于使用牛顿迭代法和二分法解方程的算法说明
- 求解一元多次方程的两种方法:牛顿迭代法和二分法
- HD 2199 Can you solve this equation?【二分法求方程的解】
- 【SPOJ-TRIGALGE】Easy Calculation【二分法】【牛顿迭代法】
- 使用牛顿迭代法求解一阶导数方程 python
- 提高篇第二十讲二——二分法解方程
- UVA - 10341 Solve It (二分法解方程)
- 二分法解超越方程的应用
- 求解方程(二分法)
- 二分法,matlab中利用二分法求解一个多项式方程的近似值。
- 计算方法之二分法求方程根
- 牛顿迭代法求方程的根
- 求解一元多次方程 牛顿迭代法
- 用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3X-6=0
- 牛顿迭代法求解方程
- 习题 5.14 用牛顿迭代法求下面方程在1.5附近的根: