【加試題】對于函數(shù)f(x),若在某區(qū)間[a,b)內(nèi)是單調(diào)函數(shù),且其圖象與x軸有交點(diǎn),則存在一個(gè)x0使得f(x0)=0,我們可以設(shè)法找到x0的值.
滿足上述條件的區(qū)間[a,b)和函數(shù)f(x)必定有f(a)?f(b)<=0,我們設(shè)計(jì)如下算法:第一步:區(qū)間中點(diǎn)m=a+b2.
第二步:若f(s)?f(m)<0,則含零點(diǎn)的區(qū)間為[a,m];否則,含零點(diǎn)的區(qū)間為[m,b),將新得到的含零點(diǎn)的區(qū)間仍記為[a,b].
第三步:判斷[a,b)的長度是否小于一個(gè)足夠小的值d.若是,則m是方程的近似解;否則,返回第一步.
于是我們可以設(shè)計(jì)函數(shù)f(x)=x2-c,就可以用此算法求出任意非負(fù)常數(shù)c的非負(fù)平方根.程序運(yùn)行效果如下圖所示,程序中還輸出了區(qū)間的左右端點(diǎn)和區(qū)間長度值.
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( ?。庇玫降乃惴ㄊ?!--BA-->對分查找法對分查找法(填算法具體名稱).
(2)請將程序中的三處代碼補(bǔ)充完整.
(3)通過測試可知,該程序得到的2的近似值為1.4142,實(shí)際上更精確的值是1.4142135623731,請問如何改善程序,得到一個(gè)更精確的近似值?請寫出至少兩種改善意見:
①將常數(shù)min改變?yōu)樽銐蛐〉闹耽趯⒊绦蛑兴米兞款愋陀蒘ingle改為double.①將常數(shù)min改變?yōu)樽銐蛐〉闹耽趯⒊绦蛑兴米兞款愋陀蒘ingle改為double..
a
+
b
2
2
【答案】①fn=x*x-c;②(b-a)>=min;③fn(m)>0;對分查找法;①將常數(shù)min改變?yōu)樽銐蛐〉闹耽趯⒊绦蛑兴米兞款愋陀蒘ingle改為double.
【解答】
【點(diǎn)評】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:15引用:1難度:0.1
相似題
-
1.如圖VB應(yīng)用程序界面所示,下列關(guān)于類與對象的說法正確的是( ?。?br />
發(fā)布:2024/11/3 16:0:2組卷:5引用:2難度:0.7 -
2.編寫VB程序,實(shí)現(xiàn)如下功能:對于任意一個(gè)正整數(shù),如果是奇數(shù),則乘3加1,如果是偶數(shù),則除以2,得到的結(jié)果再按照上述規(guī)則重復(fù)處理,最終總能夠得到1.如,假定初始整數(shù)為5,計(jì)算過程分別為16、8、4,、2、1.
程序要求輸入一個(gè)整數(shù)到Text1,單擊命令按鈕Command1,將經(jīng)過處理得到1的過程輸出到List1上面,運(yùn)行效果如圖2所示.
(1)如果將窗體左上角標(biāo)題“Form1”改為“角谷猜想”,可將Form1的
(2)為實(shí)現(xiàn)上述功能,請?jiān)跈M線處填入合適代碼.
Private Sub Command1_Click ( )
Dim x As Long
x=Val(Text1.Text)'將text1中的內(nèi)容賦值給x
Do While x<>1
If
x=x*3+1
Else'x為偶數(shù)的情況
x=
List1.AddItem“x=“& Str(x)'將x的變化添加到list1上
Loop
End Sub
橫線處①應(yīng)填入
(3)運(yùn)行程序是,發(fā)下如2圖所示錯(cuò)誤,原因可能是發(fā)布:2024/10/26 17:0:2組卷:7引用:1難度:0.1 -
3.日期判斷:從文本框Text1輸入一個(gè)8位數(shù)字表示的日期,其中第1到4位表示年(第1位確定不為零),第5到6位表示月,第7到8位表示日.單擊“判斷”按鈕,判斷該日期是否合法,將結(jié)果依次輸出到列表框List1.程序界面如下圖所示:
提示:年份值符合下列兩種情況之一的是閏年.
1.年份是4的倍數(shù),但不是100的倍數(shù);
2.年份是400的倍數(shù).
(1)觀察程序代碼,可知“判斷”按鈕的對象名為
(2)為實(shí)現(xiàn)上述功能,請?jiān)跈M線處填入合適的代碼.
Private Sub Judge_Click( ?。〥im riqi As String,st As String
Dim year As Integer,month As Integer,day As Integer
Dim rn As Boolean,hefa As Boolean
riqi=Text1.Text
year=Val(Mid(riqi,1,4))
month=Val(Mid(riqi,5,2))
day=①
st=Str(year)+“年“+Str(month)+“月“+Str(day)+“日“
rn=False‘用于判斷是否為閏年
If②
If year Mod 4=0And year Mod 100<>0Then rn=True
hefa=True‘用于判斷是否為合法日期
If month=0Or month>12Then hefa=False
If day=0Then hefa=False
If (month=1Or month=3Or month=5Or month=7Or’與下一行語句同行
month=8Or month=10Or month=12)And day>31Then hefa=False
If (month=4Or month=6Or month=9Or month=11)’與下一行語句同行
And day>30Then hefa=False
If ③
’第③處,判斷閏年2月的天數(shù)是否合法
If month=2And Rn=False And day>28Then hefa=False
If hefa=True Then st=st+“合法日期“Else st=st+“非法日期“
List1.AddItem st
End Sub.發(fā)布:2024/10/31 8:0:1組卷:8引用:0難度:0.1
把好題分享給你的好友吧~~