vb.net牛顿迭代 牛顿迭代法vb编程( 二 )


VB 牛顿迭代法解高次方程Option Explicit
Dim a(1 To 8) As Double '系数
Dim tpr As Double, ppr As Double '系数
Private Sub Form_Load()
a(1) = 1: a(2) = 1
a(3) = 1: a(4) = 1
a(5) = 1: a(6) = 1
a(7) = 1: a(8) = 1
tpr = 1: ppr = 1
End Sub
'eps是精度,x0是初始值,X是根
Private Sub Newton(ByVal x0 As Double, X As Double, ByVal eps As Double)
Dim Y1 As Double, Y2 As Double
Do
Y1 = X + (a(1) + a(2) / tpr + a(3) / tpr ^ 3) * X ^ 2 + (a(4) + a(5) / tpr) * X ^ 3 + (a(5) * a(6) / tpr) * X ^ 5 + (a(7) * X ^ 3 * (1 + a(8) * X ^ 2) * Exp(-a(8) * X ^ 2) / tpr ^ 3) - 0.27 * ppr / tpr
Y2 = 1 + (a(1) + a(2) / tpr + a(3) / tpr ^ 3) * 2 * X + (a(4) + a(5) / tpr) * 3 * X ^ 2 + (a(5) * a(6) / tpr) * 6 * X ^ 5 + (3 * X ^ 2 + 5 * X ^ 4 * a(8)) * Exp(-a(8) * X ^ 2) * a(7) / tpr ^ 3 + (-a(8)) * 2 * X * (X ^ 3 + a(8) * X ^ 5) * Exp(-a(8) * X ^ 2) * a(7) / tpr ^ 3
X = x0 - Y1 / Y2
If Abs(X - x0)eps Then Exit Do
x0 = X
Loop
End Sub
Private Sub Command1_Click()
Dim Root As Double '初始值x0, 不是随便选择的
Call Newton(3, Root, 0.001)
MsgBox Root
End Sub
牛顿迭代法的收敛阶数是多少?牛顿迭代法的收敛阶数
通过一定的迭代公式得到x(k+1)=g(xk)vb.net牛顿迭代,若记ek=|xk-x*|vb.net牛顿迭代,其中
x*是f(x)=0的根 。ek就是度量迭代序列{xk}与真解之间的距离,ek=0表示已经得到真解 。
f(x)满足一定的条件,则{xk}二次收敛到x*,大致上说就是
ek约为e(k-1)^2,这是一个收敛很快的方法 。
因为vb.net牛顿迭代你想,比如e1=0.1,则e2约为0.01 , e3约为10^(-4),
e4约为10^(-8),e5约为10^(-16) , 只需几步迭代就能得到解的一个有效位数大约是
16位的近似解 , 收敛很快的 。
牛顿迭代法公式:
【vb.net牛顿迭代 牛顿迭代法vb编程】k=(G+G动)/n 。牛顿迭代法(Newton'smethod)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphsonmethod),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法 。
实数,是有理数和无理数的总称 。数学上,实数定义为与数轴上的实数,点相对应的数 。实数可以直观地看作有限小数与无限小数,实数和数轴上的点一一对应 。但仅仅以列举的方式不能描述实数的整体 。实数和虚数共同构成复数 。
牛顿迭代法的牛顿迭代公式设r是的根 , 选取作为r的初始近似值,过点做曲线的切线L,L的方程为,求出L与x轴交点的横坐标,称x1为r的一次近似值 。过点做曲线的切线,并求该切线与x轴交点的横坐标,称为r的二次近似值 。重复以上过程,得r的近似值序列 , 其中,称为r的次近似值 , 上式称为牛顿迭代公式 。
用牛顿迭代法解非线性方程,是把非线性方程线性化的一种近似方法 。把在点的某邻域内展开成泰勒级数,取其线性部分(即泰勒展开的前两项),并令其等于0,即,以此作为非线性方程的近似方程,若,则其解为,这样,得到牛顿迭代法的一个迭代关系式: 。
已经证明,如果是连续的,并且待求的零点是孤立的,那么在零点周围存在一个区域,只要初始值位于这个邻近区域内,那么牛顿法必定收敛 。并且,如果不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍 。
军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A , B两人的位置,规定在前面的数大于后面的数,则是AB,BA交替出现 。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面 , 每当前面的人占据一个新的位置,就把位置交给他 , 然后其他人再往前占领新的位置 。也就是A始终在B的前面 , A向前迈进 , B跟上,A把自己的位置交给B(即执行B = A) , 然后A 再前进占领新的位置,B再跟上,直到占领所有的阵地,前进结束 。像这种两个数一前一后逐步向某个位置逼近的方法称为迭代法 。

推荐阅读