二分法求x*x-2=0的近似解的算法

来源:百度知道 编辑:UC知道 时间:2024/09/24 13:49:03
如题 现需要用basic语言将该算法编为程序
下面是我自己编得
请高手看看 错在哪里
最好将改正后的写一遍
Private Sub Form_Click()
d = 0.001
a = 1
b = 2
fa = a * a - 2
fb = b * b - 2
m = (a + b) / 2
fm = m * m - 2
Do While Abs(a - b) > d Or fm <> 0
If fa * fm < 0 Then
b = m
m = (a + b) / 2
fm = m * m - 2

Else
a = m
m = (a + b) / 2
fm = m * m - 2
fa = a * a - 2
End If

Loop

End Sub

这里Do While Abs(a - b) > d Or fm <> 0 <--因为 fm <> 0永远成立
所以变为死循环,应改为
Do While Abs(a - b) > d And fm <> 0
_________________________________________________________________
Private Sub Command1_Click()
d = 0.001
a = 1
b = 2
fa = a * a - 2
fb = b * b - 2
m = (a + b) / 2
fm = m * m - 2
Do While Val(Abs(a - b)) > Val(d) And fm <> 0
If fa * fm < 0 Then
b = m
m = (a + b) / 2
fm = m * m - 2
Else
a = m
m = (a + b) / 2
fm = m * m - 2
fa = a * a - 2
End If
Loop
输出a
End Sub