- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.4 算法及举例 3.4.1算法分析 1. 算法的特点 作为算法应具有以下特点: (1)确定性 算法的确定性是指每个步骤都应准确无误,没有歧义性。 (2)可行性 算法的可行性是指算法都是计算机能够有效执行的、可以实现的,并能够得到确定的结果的。针对VB的算法应是VB的语言功能可以实现的算法。 (3)有穷性 一个算法的步骤必须是有限的,是计算机能够在合理的时间内完成的。程序的循环不会进入死循环,有循环的结束条件。 (4)输入性 算法可以有多个输入,也可以没有输入,算法的输入必须是计算机可以执行的。如果由计算机自己产生数据输入则表示没有输入。 (5)输出性 算法必须有一个或多个输出,因为算法是计算机用于解题的方法,必须将结果输出,否则没有意义,因此算法必须具有输出的功能。 3.4.1 算法分析 2. 算法的分类 计算机算法可以分为两大类: (1)数值算法 数值算法主要用于解决一般数学解析方法难以处理的一些数学问题,如解方程的根、求定积分、解微分方程等。 (2)非数值算法 非数值算法解决某些非数值问题的特定方法,如对数据的排序、查找等。 3.4.2 算法举例 1.用牛顿迭代法解方程 算法说明: 牛顿迭代法是求解一元超越方程根的常用算法,已知精确解在初始解x0 附近,则根据牛顿迭代公式: n=0,1,2,3,… ? 当| xn+1- xn|≤ε时,得出精确解xn+1。其中: 为 的导数。 循环结束条件:| xn+1- xn|≤ε。 输入:初始解x0。 输出:精确解xn+1。 3.4.2 算法举例 【例3-19】用牛顿迭代法求方程2x3-4x2+3x-6=0在x0=3的准确解x,误差ε小于等于0.0001。 计算步骤: (1)先计算f(x0)= 2x3-4x2+3x-6和f’(x0)= 6 x2-8x+3。 (2)再根据迭代公式计算出x1 。 (3)当| xn+1- xn|≤0.0001时,xn+1为所求的方程根;否则继续计算x2 、x3… xn。 方程曲线如图3.22所示。 图3.22方程2x3-4x2+3x-6=0曲线 3.4.2 算法举例 功能要求:单击窗体时,用牛顿迭代法计算方程的根,并用Print方法显示。 程序流程图如图3.22(a),运行结果如图3.22(b)所示,计算出方程的根为2。 x0 =3 计算 f(x0) 和 f1(x0) x=x0 - f(x0)/f1(x0) 直到 |x - x0| =0 输出 x (a)流程图 (b)运行界面 图3-23 用牛顿迭代法解方程 3.4.2 算法举例 程序代码如下: Private Sub Form_Click() 用牛顿迭代法解方程 Dim x As Single, x0 As Single, f As Single, f1 As Single x0 = 3 Do x0 = x f = ((2 * x0 - 4) * x0 + 3) * x0 - 6 f1 = (6 * x0 - 8) * x0 + 3 x = x0 - f / f1 Loop While Abs(x - x0) = 0.00001 Print Print Tab(8); 解方程 2x^3-4x^2+3x-6 = 0 Print Tab(8); 方程的解= x End Sub 3.4.2 算法举例 2. 矩阵相乘 算法说明: 矩阵A(m,k)为m行k列的矩阵,矩阵B(k,n)为k行n列的矩阵才能相乘,得出乘积C(m,n)为m行n列的矩阵。则矩阵C的元素为: Cij=Ai1·B1j + Ai2·B2j + …+Aik·Bkj 输入:矩阵A和B。 输出:矩阵C。 循环结束条件:循环次数为矩阵的行列数。 【例3-20】计算矩阵a和矩阵b的乘积。 3.4.2 算法举例 功能要求:单击窗体计算矩阵的乘积,并用Print语句将矩阵a、矩阵b和矩阵c显示出来。运行结果如图3.24(a)所示。 计算过程采用三重循环,程序流程图3.24(b)所示。 (a)运行界面 (b)流程图 图3-24 矩阵相乘 3.4.2 算法举例 程序代码如下。 程序分析: 使用“Option Base 1”语句,将数组的下界设置为1。 使用符号常数定义矩阵的上下界M、N、K。 矩阵有行和列,必须使用双重循环显示。 计算a和b的乘积必须用三重循环嵌套来实现:最内层循环是计算a矩阵的列与b矩阵的行乘积的和,
文档评论(0)