二分逼近/牛顿迭代——一元高次非线性方程求解

原创 2016年08月29日 15:15:12
#include"iostream"
#include"cstdio"
#include"cstring"
#include"cstdlib"
#include"cmath"
#define precision 0.00000001

using namespace std;

int count=0;

//一元多次方程求解
double function(double x)
{
	return 2*x*x+3.2*x-1.8;
}

double binary(double x,double y)
{
	double mid=(x+y)/2.0;
	while(fabs(x-y)>precision)
	{
		if(function(mid)==0) break;
		if(function(x)*function(mid)<0) y=mid;
		else x=mid;
		mid=(x+y)/2;
		count++;
	} 
	return mid;
}

double function2(double x)   //返回导数,高精度代倒数 
{
	return (function(x+0.000005)-function(x-0.000005))/0.00001; 
}

double newtown(double x)
{
	double x1=x-function(x)/function2(x);
	while(fabs(x1-x)>precision)
	{
		if(function(x1)==0) break;
		x=x1;
		x1=x-function(x)/function2(x);
		count++;
	}
	return x1;
}

int main()
{
	cout<<binary(-0.8,8.0)<<endl;
	cout<<count<<endl;
	count=0;
	cout<<newtown(8)<<endl;
	cout<<count<<endl;
	count=0;
	cout<<newtown(-8)<<endl;
	cout<<count<<endl;
	return 0;
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

HDU 2199(牛顿迭代法)/(二分)(高次方程求解)

Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (...

ccsu 1027 一元三次方程求解 (牛顿迭代)

设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1...
  • LiWen_7
  • LiWen_7
  • 2012年05月08日 17:51
  • 995

迭代求解最优化问题——梯度下降、牛顿法

如前面所提到的,对于一些问题我们可能需要使用迭代的方法进行求解。迭代求解一般包括三个步骤: 确定初值x0x_0 确定每次迭代的增量dd 进行一次迭代xk+1=xk+dx_{k+1} = x_k + d...

迭代求解最优化问题——最小二乘问题、高斯牛顿法

##最小二乘问题 最小二乘问题是应用最广泛的优化问题,它的一般形式如下: $$\min_x ||r(x)||^2$$ 我们把r(x)称为残差函数。一个最简单的最小二乘问题就是线性回归问题,对于这个问题...

用牛顿方法解一元非线性方程的根(Matlab实现)

题目:用牛顿法求方程x-cos(x)=0的实根(精确到1E-6)。 (1)要求用函数调用。 (2)进一步研究和弦截法作比较。 算法分析: (1)       此题是利用牛顿方法解一...
  • wxwlll
  • wxwlll
  • 2011年10月30日 14:09
  • 10756

牛顿,二分法,迭代求解方程

  • 2012年05月21日 21:26
  • 20KB
  • 下载

牛顿迭代法解非线性方程(组)

1、牛顿迭代思想 借助对函数f(x)=0做泰勒展开而构造的一种迭代格式 将f(x)=0在初始值x0做泰勒展开: 当h趋近于0时,在[x,x+h]区间内用直线表示曲线,故而去展开式的线性部分做f(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分逼近/牛顿迭代——一元高次非线性方程求解
举报原因:
原因补充:

(最多只允许输入30个字)