【加试题】对于函数f(x),若在某区间[a,b)内是单调函数,且其图像与x轴有交点,则存在一个x1使得f(x1)=0,我们可以设法找到x1的值。满足上述条件的区间[a,b)和函数f(x)必定有f(a)·f(b)<=0,我们设计如下算法:
第一步:区间中点m= 。
第二步:若f(a)·f(m)<0,则含零点的区间为[a,m];否则,含零点的区间为[m,b),将新得到的含零点的区间仍记为[a,b]。
第三步:判断[a,b)的长度是否小于一个足够小的值d。若是,则m是方程的近似解;否则,返回第一步。
于是我们设计函数f(x)=x2-c,用此算法求出任意非负常数c的非负平方根。程序运行效果如下图所示,程序中还输出了区间的左右端点和区间长度值。
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Const min As Single = 0.00005
Dim c As Single
Function fn(x As Single)As single
fn = x*x - c
End Function
Private Sub Command1_Click() '按钮上的程序
Dim a , b , m As Single
c = Val(Text1.Text)
a = 0 : b = c
Do While b-a > min
‘(1)
List1.AddItem Str(a)&" "&Str(b)&" "&Str(b-a)
If Then ‘(2)
b = m
Else
a = m
End If
Loop
Label2.Caption = Str(m)
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:
⑴;⑵。