How to| 验证 DSolve 的结果
尽管 DSolve 通常能够对所给的微分方程返回正确的解,它的常见用法是验证任意微分方程求解程序返回的解. 由 DSolve 给出的解可以通过多种方法验证. 最简单的方法是将解代入原方程. 如果结果为 True,则该解是正确的.
在这个例子中,解通过代入法验证.
为了以后方便,将 DSolve 的第一个参数的值赋为
:
当指定 DSolve 的第二个参数为
而不是
时,解以纯函数的形式返回. 该形式既有利于解的验证,也为在后继工作中使用提供了方便:
| Out[14]= |  |
使用
(ReplaceAll 的缩略形式)将解代回原方程:
| Out[15]= |  |
这里,使用同样的方法对解是否满足方程及初始条件进行验证:
| Out[17]= |  |
| Out[18]= |  |
有时代入的结果会过于复杂,而不能立即给出 True 或 False 的结果. 这时可通过 Simplify 将代入结果化简来进行验证. 如果化简后的结果为 True,则解是正确的.
得到一个二阶非齐次方程的解:
| Out[20]= |  |
将解代回原方程:
| Out[21]= |  |
使用 Simplify 来验证解:
| Out[22]= |  |
这里,用同样的方法来验证线性偏微分方程的解:
| Out[24]= |  |
| Out[25]= |  |
如果方程涉及特殊函数,可能有必要使用 FullSimplify 来验证解.
例如,这个解含有 Bessel 函数:
| Out[2]= |  |
使用 Simplify 不能使解得到验证:
| Out[3]= |  |
可以使用 FullSimplify:
| Out[4]= |  |
另一个重要的验证方法是对问题中的所有变量和参数进行数值检查. 在这种情况下,最好是对多个随机值的集合重复检查.
在这个例子中,数值验证是有效的:
| Out[2]= |  |
| Out[3]= |  |
尽管数值检查无法使解得到充分验证,通过使用更高的精度,或允许变量采取复值进行更严格的检查是可以的.
这里用更高的精度对前面的解进行验证:
| Out[33]= |  |
这里使用复数随机值验证前面的解:
| Out[35]= |  |