
MATLAB 既可以求解初值问题,也可以求解边值问题。边界条件由一个单独的边界条件列表定义,因此对于例 10.10,我们有
syms x(t) lambda Dx = diff(x,t)dsolve(diff(x,t,2) + lambda^2*x,x(0) == 4, Dx(pi/lambda) == 3)
10.4.4 解析解与数值解
我们已经看到,有些微分方程非常简单,只要具备合理的微分知识,通过观察就能求解。但也有许多微分方程无法用这种方法求解。对于其中一些方程,我们可以通过使用更复杂的数学技巧,找到一个表示因变量与自变量之间函数关系的解。我们称这类方程具有解析解。而对于其他一些方程,我们可能无法找到这种形式的解——或者是因为不存在合适的求解数学技巧,或者是因为根本不存在解析解。在这些情况下,求解方程的唯一途径就是使用数值方法,从而得到数值解。
解析解几乎总是比数值解更可取。这主要是因为解析解是一个数学函数,因此可以针对自变量的任意值计算因变量的数值。与此相反,数值解的形式是一张表格,给出因变量在自变量的一组离散取值上的值。对于不在该离散集合中的自变量的任意取值,其对应的因变量的值只能通过表格插值来计算(或者重复整个数值求解过程,并确保所需的的自变量取值包含在解集中)。
如果待求解的微分方程含有参数(例如常数 $\lambda$ (例 10.7 中的),那么该方程的解析解将包含该参数。当参数值变化时,方程解的行为可以很容易地理解。而对于数值解,在计算解之前必须给参数指定一个具体的数值。这样得到的数值解仅对该参数值有效。如果关心参数值变化时解的行为,就必须使用不同的参数值反复求解方程。
当我们得到一个不含相应边界条件的微分方程的解析解时,解中的任意常数实际上是解的参数。如果不指定边界条件,就无法得到微分方程的数值解。这就是为什么有时将整个问题(微分方程和边界条件)作为一个整体来讨论会更方便,而不是将微分方程与其边界条件分开考虑的原因之一。
当解析解可得时,倾向于选择解析解而非数值解的另一个原因是,获得数值解所需的工作量通常远大于获得解析解所需的工作量。另一方面,