20數值分析.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

75986597 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档