【第22期】观点:IT 行业加班,到底有没有价值?

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

原创 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;
} 

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

相关文章推荐

多变量非线性方程求解问题(牛顿迭代法)

关于多变量的多元函数,我们求解考虑解的问题与单变量是极其类似的。考虑在x处的一阶泰勒展开,我们有0=f(x0)=f(x)+j(x)(x-x0)(后面的等号近似成立,j表示jacobian矩阵.   ...

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

题目:用牛顿法求方程x-cos(x)=0的实根(精确到1E-6)。 (1)要求用函数调用。 (2)进一步研究和弦截法作比较。 算法分析: (1) 此题是利用牛顿方法解一元非线性方程的根。(牛顿法是把非线性方程局部线性化的一种方法,它在单根附近具有较高的收敛速度。)所以首先我们应先给出...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

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...

matlab求解线性方程组

直接解法 Ax=l,求x。利用逆矩阵、矩阵除法、x=inv(A'A)*A'l lind.m文件如下, %求解线性方程组 % x1 + 2x2 + 3x3 + 9x4 = 5 %2x1 + 2x2 + 5x3 + 4x4 = 2 %3x1 + 5x2 + x3 + 5x4 ...

Codevs 1038 一元三次方程求解 NOIP 2001(导数 牛顿迭代)

1038 一元三次方程求解 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Descr...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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