大家好,今天小编关注到一个比较有意思的话题,就是关于牛顿迭代法 c语言的问题,于是小编就整理了2个相关介绍牛顿迭代法 c语言的解答,让我们一起看看吧。
牛顿迭代法原理?
牛顿迭代法(Newton39;s method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。
设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。
解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。
牛顿迭代法是用于求解等式方程的一种方法。
类似于求解F(x)=0的根,牛顿迭代法求解的是近似根,这个想法准确来说来源于泰勒展开式,我们知道,有些时候,我们需要求解的表达式可能非常复杂,通过一般的方法,我们很难求出它的解。
所以***用了一种近似求解的方法,就是说,我们取泰勒展开式的前几项,队原来的求解函数做一个取代,然后,求解这个取代原方程的方程的解,作为近似解。当然只对原方程做一次近似求解不行,因为第一次近似肯定不会太准确,所以还需要不断地迭代。
我们首先就要去一个值作为初始的近似值,然后去求解该点的泰勒展开近似项,然后求解根,之后,我们再以此根对原方程进行近似,然后再求解结果不断重复,迭代,最终就能求得近似解。
牛顿迭代法迭代公式如下
牛顿迭代法,取得是泰勒展开式的前两项,也就是线性近似,所以迭代比较快,容易计算
用牛顿迭代法求方程f(x)=x³-x²-1=0在隔根区间[1.4 , 1.5]内的根,准确到小数点后第四位?
牛顿迭代法就是用x-f(x)/f'(x)这个式子来迭代,不断逼近f(x)=0的根。 f'(x)=3x2-2x 令g(x)=x-f(x)/f'(x)=(2x3-x2+1)/(3x2-2x) 因为f(x)在[1.4,1.5]上单调,所以最多只有一个根。 所以我们可以任取区间中的一个值为初始值,例如取1.45为初始值,代进g(x)里面去: g(1.45)≈1.46581 g(1.46581)≈1.46557 g(1.46557)≈1.46557与上一次的差已经在指定的精确度之内了, 所以这就是答案,f(x)的根精确到小数点后第四位等于1.4656
到此,以上就是小编对于牛顿迭代法 c语言的问题就介绍到这了,希望介绍关于牛顿迭代法 c语言的2点解答对大家有用。