算法之【牛顿迭代法】

众所周知,计算机的基本数值算法是加减乘除,甚至只是加减法。而次方和开根算法都是由四则运算混合表示而成的,因而根号计算比四则运算要慢很多。无理数如√2的浮点数计算就是由牛顿迭代法得出的。牛顿迭代法是一种用于计算曲线方程根的精确算法(尤其是幂函数方程),比二分法更加高效,因为它基于微分。

As we all know, basic numerical calculation in the
computer is: addition, subtraction, multiplication and
division.

Or even only the addition and subtraction. But the power and
root algorithm is a complex combination of the four fundamental
operations, so they are much slower. Irrational numbers such as √2
whose floating point is obtained by the Newton-Raphson method.
Newton-Raphson method is a precise algorithm used to calculate the
curvilinear equation (especiallypower function), it’s more
efficient than Dichotomy because it is based on the
differential.

以计算√x(精度e)为例的c语言函数:

A example using C language calculating √x with precision
’e’:

double abs_value(double x)

{

 if(x<0)x=-x;

 return x;

}

double sqrt_root(double x,double e)

{

 double x0=1;

 while(abs_value(x0*x0-x)>e)

X0=(x0+x/x0)/2;

 return x0;

}

时间: 2024-09-26 07:47:14

算法之【牛顿迭代法】的相关文章

C语言实现牛顿迭代法解方程

利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭代关系式 所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 三.对迭代过程进行控制 在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地执行下去.迭代过程的控制通常可分为两种情况

c语言-C语言牛顿迭代法,正常运行输出错误结果,求助

问题描述 C语言牛顿迭代法,正常运行输出错误结果,求助 求方程ax^3+bx^2+c^x+d=0的解,其中xn+1=xn-f(xn)/f'(xn) 我的代码这样写的: #include #include int main(void) { int a,b,c,d; printf("Please input four integers:"); scanf("%d %d %d %d",&a,&b,&c,&d); double x,y; x=

如何用c语言解决牛顿迭代法

问题描述 如何用c语言解决牛顿迭代法 用c语言解决牛顿迭代法,要求显示表达式,求大神帮助,期末作业,完不成要挂科,谢谢了 解决方案 一元任意阶次方程求解,注意初始值不正确也有可能得不到解.http://blog.csdn.net/qq_27183003/article/details/49808191 解决方案二: #include <stdio.h> #include <math.h> //y=x^3-5x^2+16x-80 float f(float x) { return (

C语言OJ项目参考(2405)牛顿迭代法求根

2405: 牛顿迭代法求根 Description 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b,c,d的值一次为1,2,3,4,由主函数输入.求x在1附近的一个实根.求出根后由主函数输出.结果保留两位小数. Input 系数a,b,c,d的值 Output x在1附近的一个实根 Sample Input 1 2 3 4 Sample Output -1.65 HINT 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { double

牛顿迭代法

     牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. 牛顿迭代公式     设r是\(f(x)=0\)的根,选取\(x_0\)作为r的初始近似值,过点\((x_0,f(x_0))\) ,做曲线 \(y=f(x)\)的切线L,L的方程为\(y=f(x_0)+f'(x_0)(x-x_0)\) ,求出L与x轴交点的横坐标 \[x_1=x_0-\frac{f

Hession矩阵与牛顿迭代法

1.求解方程. 并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难.利用牛顿法,可以迭代求解. 原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0) 求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0-f(x0)/f'(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f'(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比

matlab实现牛顿迭代法求解非线性方程组

已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0 exp(-x1*x2)+20*x3+(10*pi-3)/3=0 求解要求精度达到0.00001 ---------------------------------------------------------分--割--线--------------------------------------------------------- 首先建立函数fun 储存方

牛顿迭代法求多项式在1.5附近的值2*x的3次幂--4x平方+3*x-6=0的实现代码_C 语言

代码如下所示: 复制代码 代码如下: #include <stdio.h>#include <math.h> int main(){   float x,x0,f,f0;   x=1.5;   do   {    x0=x;      f0=((2*x-4)*x+3)*x-6;  //求得在x0处解    f=(6*x0-8)*x0+3;     // 在(x0 ,f0)处导数    x=x0-f0/f;        }while(fabs(x-x0)>=1e-6);   

《数据结构与算法:Python语言描述》一第1章 绪论

第1章 绪论 作为基于Python语言的"数据结构与算法"教程,本章首先讨论一些与数据结构和算法有关的基础问题,还将特别关注Python语言的一些相关情况. 1.1计算机问题求解 使用计算机是为了解决实际问题.计算机具有通用性,其本身的功能很简单,就是能执行程序,按程序的指示完成一系列操作,得到某些结果,或者产生某些效果.要想用计算机处理一个具体问题,就需要有一个解决该问题的程序.经过长期努力,人们已经为各种计算机开发了许多有用的程序.在面对一个需要解决的问题时,如果恰好有一个适用的程