二分法求近似解 哪里错了啊

tunney7773 2012-11-10 07:34:37
Function f(ByVal x As Single) As Double
f = x ^ 2 - 2
End Function
Private Sub Command1_Click()
Dim a As Integer, b As Integer, m As Integer, d As Integer
a = Text1.Text
b = Text2.Text
d = Text3.Text
Do
m = (a + b) / 2
f(a) = a ^ 2 - 2
f(m) = m ^ 2 - 2
If f(a) * f(m) < 0 Then
b = m
Else
a = m
End If
Loop Until Abs(a - b) < d Or f(m) = 0
Text4.Text = "M=" & m
End Sub

...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyounihao 2013-01-12
  • 打赏
  • 举报
回复
wangyounihao 2013-01-12
  • 打赏
  • 举报
回复
Function f(ByVal x As Single) As Double
f = x ^ 2 - 2
End Function


Private Sub Command1_Click()
Dim a, b, c, d As Integer

Dim aaa, bbb As Double
a = Text1.Text
b = Text2.Text
d = Text3.Text
Do
m = (a + b) / 2
aaa = f(a)
bbb = f(m)
If aaa * bbb < 0 Then
b = m
Else
a = m
End If
Loop Until Abs(a - b) < d Or f(m) = 0
Text4.Text = "M=" & m
End Sub
几罗星人 2012-11-11
  • 打赏
  • 举报
回复
首先是语法的明显错误!

'先声明了一个函数(可是你为什么后面不用他呢?)
Function f(ByVal x As Single) As Double
f = x ^ 2 - 2
End Function

Private Sub Command1_Click()
……
f(a) = a ^ 2 - 2'这两句的语法全错!!!
f(m) = m ^ 2 - 2
……
这是程序,虽然它和数学有关,但是毕竟不是数学,除了在If语句里,“=”表示相等之外,其他都是表示赋值。那么你看一下,你说前面已经声明了一个函数Function f(ByVal x As Single) As Double,那么f(a)就是表示当自变量x取到a时,函数的值。而a ^ 2 - 2也是一个数值,那么数值赋值给数值,你想干什么? 所以,正确的代码就是把我上面列出来的这两句去掉:

f(a) = a ^ 2 - 2'不要!!
f(m) = m ^ 2 - 2

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧