算法中可以用数学解析法直接求出的为什么要用迭代法计算
发布网友
发布时间:2022-05-07 08:34
我来回答
共1个回答
好二三四
时间:2022-09-14 10:49
作为物理专业的,最近还在做这方面相关的人,其实解析解和数值解完全不一样。解析解可以研究出物理变量之间本质的联系和规律,但是数值解,就只是数字而已,没什么太重大的意义。话虽明白,但是解析解好难求。一般来说如果自己有显示表达,那么计算起来一般会方便很多,当然了,有一些收敛速度还不如迭代法,有一些显示表达只是符号的。稀疏矩阵还是用数值解的,而不是真的去求行列式。但是,一般情况下,解析解显示解肯定方便多了,比如自己知道一个方程的解是某个开方数加某个定积分,要用数值去计算开方加定积分也比你设计一个牛顿法的迭代法计算时间少和精度高。
热心网友
时间:2024-10-27 00:31
1、递归
是指对一个问题的求解,可以通过同一问题的更简单的形式的求解来表示. 并通过问题的简单形式的解求出复杂形式的解. 递归是解决一类问题的重要方法. 递归程序设计是程序设计中常用的一种方法,它可以解决所有有递归属性的问题,并且是行之有效的. 但对于递归程序运行的效率比较低,无论是时间还是空间都比非递归程序更费,若在程序中消除递归调用,则其运行时间可大为节省. 以下讨论递归的时间效率分析方法,以及与非递归设计的时间效率的比较.
2、时间复杂度的概念及其计算方法
算法是对特定问题求解步骤的一种描述. 对于算法的优劣有其评价准则,主要在于评价算法的时间效率,算法的时间通过该算法编写的程序在计算机中运行的时间来衡量,所花费的时间与算法的规模n有必然的联系,当问题的规模越来越大时,算法所需时间量的上升趋势就是要考虑的时间度量。
算法的时间度量是依据算法中最大语句频度(指算法中某条语句重复执行的次数)来估算的,它是问题规模n的某一个函数f(n). 算法时间度量记作:T(n)=O(f(n)) 。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的时间复杂度,简称时间复杂度[2]。
例如下列程序段:
(1)x=x+1;(2)for(i=1;i<=n;i++) x=x+1;(3)for(j=1;j<=n;j++) for(k=1;k<=n;k++) x=x+1. 以上三个程序段中,语句x=x+1的频度分别为1,n,n2,则这三段程序的时间复杂度分别为O(1),O(n),O(n2)。
求解过程为:先给出问题规模n的函数的表达式,然后给出其时间复杂度T(n)。
但是在现实程序设计过程中,往往遇到的问题都是比较复杂的算法,就不能很容易地写出规模n的表达式,也比较难总结其时间复杂度. 递归函数就是属于这种情况. 下面举例说明递归函数的时间复杂度的分析方法。