永发信息网

跪求数学程序高手通过编写VB程序实现下列问题:1.编程实现二分法求方程f(x)=x^3-x-1=0在区间【1.0,1.5】内的一个实根要求精确到小数点后3位

答案:2  悬赏:10  手机版
解决时间 2021-05-05 10:01
  • 提问者网友:听门外雪花风
  • 2021-05-05 02:17
跪求数学程序高手通过编写VB程序实现下列问题:1.编程实现二分法求方程f(x)=x^3-x-1=0在区间【1.0,1.5】内的一个实根要求精确到小数点后3位
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-05-05 02:44

在窗口中添加如下代码,即可,精确度可以自己调整,精确度到 0.00001都行


Function f(ByVal x As Single) As Single '定义要求解的方程
f = x ^ 3 - x - 1
End Function
Private Function root(ByVal a0 As Single, ByVal b0 As Single, ByVal c As Single) As Single '用二分法求解,a0,b0为初始值,c为精度
Dim a, b, t As Single
a = a0
b = b0
Do While (1)
If Abs(f(a)) <= c Then
root = a
Exit Function
Else
If Abs(f(b)) <= c Then
root = b
Exit Function
Else
t = (a + b) / 2
If f(t) * f(a) <= 0 Then
b = t
Else
a = t
End If
End If
End If
Loop


End Function
Private Sub Form_Load()
MsgBox root(1.0, 1.5, 0.001) '调用例子
End Sub

全部回答
  • 1楼网友:一袍清酒付
  • 2021-05-05 03:59

1、先赋初值a=1,b=1.5

2、设置循环 用 |a-b|<0.0005控制

循环体:

选择结构:如果SGN(f[(a+b)/2])>0,则b=(a+b)/2

如果SGN(f[(a+b)/2])>0,则a=(a+b)/2

如果SGN(f[(a+b)/2])=0,退出循环

循环结束

令:x=(a+b)/2

输出结果。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯