【加试题】对于函数f(x),若在某区间[a,b)内是单调函数,且其图象与x轴有交点,则存在一个x0使得f(x0)=0,我们可以设法找到x0的值.
满足上述条件的区间[a,b)和函数f(x)必定有f(a)•f(b)<=0,我们设计如下算法:第一步:区间中点m=a+b2.
第二步:若f(s)•f(m)<0,则含零点的区间为[a,m];否则,含零点的区间为[m,b),将新得到的含零点的区间仍记为[a,b].
第三步:判断[a,b)的长度是否小于一个足够小的值d.若是,则m是方程的近似解;否则,返回第一步.
于是我们可以设计函数f(x)=x2-c,就可以用此算法求出任意非负常数c的非负平方根.程序运行效果如下图所示,程序中还输出了区间的左右端点和区间长度值.

Const min As Single=0.00005
Dim c As Single
Function fn(x As Single)As single
①fn=x*x-c①fn=x*x-c
End Function
Private Sub Command1_Click( )'按钮上的程序
Dim a As Single,b As Single,m As Single
c=Val(Text1.Text)
a=0
b=c
Do While②(b-a)>=min②(b-a)>=min
m=(a+b)/2
List1.AddItem Str(a)&“”&Str(b)&“”Str(b-a)
If③fn(m)>0③fn(m)>0Then
b=m
Else
a=m
End If
Loop
Label2.Caption=Str(m)
End Sub
回答以下问题:
(1)事件处理过程“Command1_Click( )”用到的算法是对分查找法对分查找法(填算法具体名称).
(2)请将程序中的三处代码补充完整.
(3)通过测试可知,该程序得到的2的近似值为1.4142,实际上更精确的值是1.4142135623731,请问如何改善程序,得到一个更精确的近似值?请写出至少两种改善意见:
①将常数min改变为足够小的值②将程序中所用变量类型由Single改为double.①将常数min改变为足够小的值②将程序中所用变量类型由Single改为double..
a
+
b
2
2
【答案】①fn=x*x-c;②(b-a)>=min;③fn(m)>0;对分查找法;①将常数min改变为足够小的值②将程序中所用变量类型由Single改为double.
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/6/27 10:35:59组卷:15引用:1难度:0.1
相似题
-
1.运行列表框对象语句:List1.AddItem=“同学们好!“,会显示:同学们好!;
发布:2025/1/2 11:30:1组卷:6引用:6难度:0.9 -
2.小张设计了一个“加减运算练习”VB程序.界面如下图所示.单击“出题”Command1按钮显示两个运算数和运算符号,并计数.在文本框Text1中输入计算结果后单击“判断”按钮Command2,如果计算结果正确,则得分加10分,直至完成10题测试.VB程序如下,但加下横线处代码有错,请改正.
Dim n,s As Integer'n为试题计数器,s为得分
Dim a,b As Integer'a,b 为两个运算数
Dim c As String'c为运算符:“+“表示加法,“-“表示减法
Private Sub Form_Load( )n=0:
s=0
End Sub
Private Sub Command1_Click( )‘出题按钮
Randomize
n=n+1
If n<11Then
Label1.Caption=“No:“+Str(n)
a=Int(Rnd*100)'a,b为运算数,且要求a不小于b
b=Int(Rnd*100)
If a>bThen t=a:a=b:b=t'(1)
If Rnd>0.5Then c=“+“Else b=“-“'(2)
Label5.Caption=Str(a)+c+Str(b)+“=“
Text1.Text=““
Else
Command1.Caption=“完成测试“
End If
End Sub
Private Sub Command2_Click( )‘判断按钮
If c=“+“Then
If a+b=Val(Text1.Text) Then s=s+10
Else
If a+b=Val(Text1.Text)Then s=s+10'(3)
End If
Label3.Caption=“得分:“+Str(s)
End Sub.发布:2025/1/2 9:30:2组卷:6引用:2难度:0.9 -
3.某智能农场启用了根据土壤湿度自动控制喷淋装置进行浇水的信息系统,每隔一段时间,系统自动检测土壤湿度,当土壤湿度低于某个阈值时将自动浇水。小李为统计出某段时间内(不超过100个时间单位)系统自动控制浇水的次数和该时间段内前后两次启动自动浇水系统的最大时间间隔单位,小李进行了数据分析,他认为如果某单位时间的土壤湿度比前一单位时间的土壤湿度高并且本单位时间内没有下雨,则认为启用了浇水系统。由此他编写了一个VB程序实现该功能:在文本框Text1中输入某段时间内的湿度值,在文本框Text2中输入该段时间内对应的天气情况,单击命令按钮Command1,在文本框Text3中显示系统自动浇水次数,Text4中显示前后两次自动浇水系统启用的最大时间间隔单位。
(1)在Private Sub Command1_Click( )中,Command1、Click分别表示
(2)实现上述功能的VB程序如下,请在画线处填入合适的代码。
(3)程序中加框处代码有错,请改正。发布:2025/1/2 11:0:1组卷:0引用:1难度:0.3