牛顿法求高次方程的根,在算法框图中精度Z=|(X1-X0)/X0|,不应该直接是是Z=|X1-X0|吗,为什么要除以X0呢

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/13 10:07:11

牛顿法求高次方程的根,在算法框图中精度Z=|(X1-X0)/X0|,不应该直接是是Z=|X1-X0|吗,为什么要除以X0呢

|X1-X0|是绝对误差,除以X0后为相对误差.用相对误差的话,程序的通用性更好,比如有些题,可能根本身就是很小的数,如0.0001,这时如果你算出0.0002,从绝对误差角度看挺接近了,但如果看相对误差,这个结果并不好.
希望可以帮到你,如果解决了问题,请点下面的"选为满意回答"按钮,

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

全部展开

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

收起

牛顿法求高次方程的根,在算法框图中精度Z=|(X1-X0)/X0|,不应该直接是是Z=|X1-X0|吗,为什么要除以X0呢 设计算法框图,求解方程x^3+4x-10=0在区间[0,2]内的解(精度为10的负5次方). 设计一个算法框图,求函数f(x)=2^x在x=1/2的近似解(精度为0.01 关于matlab中循环控制我想在matlab中用迭代法求解方程1-115/x^2=0的解,利用牛顿法得到迭代公式 x(i+1)=x(i)-{[x(i)]^2-115*x(i)}/230.经其他算法验证迭代公式没有错误.我想在迭代过程中对结果精度进行 ab在高中数学程序框图算法中是什么意思啊 算法题:设计一个算法框图,求函数f(x)=2^x在x=1/2的近似值(精度为0.01)输入什么……,可以一步步解释清吗 设计一个算法,求方程x的平方减4x加2等于零在3到4区间的近似根,精度为10的负四次方,算法和步骤用自然语言描述 已知函数fx=x^2+5,写出方程fx=0在(2.3)上的近似解的算法并画出程序框图 写出下列程序框图的算法功能 程序框图算法的特点是什么? 1+3+5+...+2011的算法框图 分别用牛顿法和割线法求解方程 x^3-6x^2+9x-2=0在区间[3,4]上的近似根.要求满足精度|x*-xk| C++牛顿迭代法求方程2sin(x)-x=0在x=1附近的根没有指定精度,这样写可以吗int main(){double x=1.0;for(int i=1;i 如图所示给出的某一算法的程序框图,根据该程序框图,该算法计算( ) 牛顿迭代法的具体算法 C语言牛顿迭代法解方程X^2 -1 = 0求算法只是想知道怎么求2个根的,求算法啊~~~ (做完后有高分送)数值计算法:二分法求方程的3X³-X²-1=0在区间【0,1】内的根,要求精度为0.005 请设计二分法算法,求方程X3次方—X—1=0在区间【1,1.5】内的解(精度0.01)