- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20數值分析
第十九章 數值分析
19-1 遞 迴
19-2 數值分析範例
二三十年前沒有電腦的時候,數值分析這個研究主題其計算過程通常是最令人畏懼的問題,所以通常要有一批工讀生日以繼夜從事計算工作,隨著電腦科技的進步許多數學家的數值分析結論才又被人從新驗證,並讚嘆其偉大。
數值分析大部份都在解決級數問題,級數問題如能充份理解遞迴的觀念答案即可迎刃而解,而遞迴在近十年的程式語言裏已列為標準配備,連VB也難脫俗,所以本章10-1節先強調基本遞迴的觀念及程式撰寫法,並以快速排序法為例先以遞迴法強調其程式的簡潔性,再以非遞迴法自行安排堆疊來說明遞迴的觀念,其次10-2節再以數值分析實際面對的問題如割線法(Secant)法解方程式的解及牛頓除差法(Newton divided-difference)來解多項式的對應值,若讀者能充份了解以上問題的程式設計過程,相信都能解決所有的數值分析問題,筆者再強調一次千萬不要每一題都去找解答,一定要自己作才會有深刻的印象。
19-1 遞 迴
所謂遞迴就是程序自己呼叫自己。在程式設計的領域裏,有許多情況使用遞迴可以減輕程式設計的負擔,並增加程式的可讀性,就如同人類日常思考模式常有重覆某一件事直到什麼條件時結束。所以遞迴也是一種特殊的迴路,尤其數值分析的問題用得最多。
範例19-1A 試以二分猜值法求輸入正數的平方根。(本範例使用程序Sub)。
目 的
使讀者了解遞迴的使用。
輸出結果
程式列印
Rem 19_1A
Private Sub cmd_Click()
Dim Msg, x1, x2
value = InputBox(, 輸入正數, 16)
x1 = 0: x2 = value: x = value
sqrt x1, x2, x
Msg = value 的其平方根是 x
MsgBox Msg
End Sub
Private Sub sqrt(ByVal x1, ByVal x2, value)
Dim x3
If Abs(x1 - x2) 0Then
value = x1
Exit Sub
End If
x3 = (x1 + x2) / 2
If x3 * x3 - value 0 Then
sqrt x3, x2, value
Else
sqrt x1, x3, value
End If
End Sub
程式說明
遞迴過程須變動的參數,必須用傳值法。本例value參數使用傳址法傳回運算結果。
範例19-1B 以Function重作上範例。
程式列印
Rem 19_1B
Dim x, value As Double
Private Sub cmd_Click()
Dim Msg, x1, x2
value = InputBox(, 輸入正數, 16)
x1 = 0: x2 = value
x = sqrt(x1, x2)
Msg = value 的其平方根是 x
MsgBox Msg
End Sub
Private Function sqrt(ByVal x1, ByVal x2)
If Abs(x1 - x2) 0.0000001 Then
sqrt = x1
Exit Function
End If
x = (x1 + x2) / 2
If x * x - value 0 Then
sqrt = sqrt(x, x2)
Else
sqrt = sqrt(x1, x)
End If
End Function
範例19-1C 以遞迴法求算10+9+8+7...+1之和。
程式列印
Rem 19_1C
Private Sub cmd_Click()
d = sum(10)
Print d
End Sub
Private Function sum(m As Integer)
If m = 1 Then
sum = 1
Exit Function
Else
sum = m + sum(m - 1)
End If
End Function
程式說明
以 d=sum(4) 解說
m=4 執行Else sum=4+sum(3) 繼續呼叫sum函數
m=3 執行Else sum=4+3+sum(2) 繼續呼叫sum函數
m=2 執行Else sum=
文档评论(0)