How to| 用导数建立微分方程
Mathematica 中求解微分方程的函数可用于求解多种类别的微分方程,包括常微分方程(ODE)、偏微分方程(PDE)、微分代数方程(DAE)以及边界值问题(BVP)等. 利用导数建立这些方程以在 Mathematica 中求解是非常重要的.
对于常微分方程,有多种方式可以表示以
为自变量的函数
对
的导数.
最普通的方法是使用 D:
| In[8]:= |
| Out[8]= |
| In[4]:= |
| Out[4]= |
| In[9]:= |
| Out[9]= |
符号
是 Derivative 的简写符号:
| In[10]:= |
| Out[10]= |
FullForm 表明
与 Derivative 等价:
| In[2]:= |
Out[2]//FullForm= | |
用 D 建立常微分方程
以求解,并将该方程存为
:
| In[6]:= |
| Out[6]= |
使用 TraditionalForm 将常微分方程以数学教科书或期刊中的形式显示:
| In[7]:= |
Out[7]//TraditionalForm= | |
常微分方程建立好后,可以使用 DSolve 对其进行符号式求解:
| In[8]:= |
| Out[8]= |
解
用一个嵌套列表中的规则表示. 关于如何将此解从列表中提出并使用的信息,请参见 How to: 使用规则形式的解.
大多数时候,常微分方程伴随着边界及初始条件. 因此,计算函数在给定变量值时的导数将频繁用到. 这可以用多种方式完成. 此处,使用
作为一个范例.
使用
(ReplaceAll 的简写符号)将
代入
. Mathematica 首先计算 D,然后执行替换:
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
这也等价于 Derivative:
| In[14]:= |
| Out[14]= |
| In[1]:= |
| Out[1]= |
使用 DSolve 获得符号解:
| In[3]:= |
| Out[3]= |
| In[4]:= |
| Out[4]= |
另外,您可以将常微分方程用偏微分方程表示,并求解
而不是
:
| In[17]:= |
| Out[17]= |
| In[19]:= |
| Out[19]= |
| In[4]:= |
| Out[4]= |
使用 DSolve 获得符号解:
| In[5]:= |
| Out[5]= |
除了使用 DSolve,您可以使用 NDSolve 得到一个数值解,对应于该常微分方程的一个系数相关的
的特定值.
下面的范例给出
时的解. NDSolve 给出的结果是 InterpolatingFunction 对象的形式:
| In[6]:= |
| Out[6]= |
| In[32]:= |
绘制
及
处的图形. 使用 Evaluate 以确保
在 Plot 中的正确计算:
| In[34]:= |
| Out[34]= | ![]() |
更多信息请参见 How to: 绘制 NDSolve 的结果.
此处使用
来说明 Mathematica 中偏导数的各种不同表示方式.
得到偏导数最常见的方法是使用 D:
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| Out[8]= |
使用 D 略有不同的语法可以完成同一任务:
| In[11]:= |
| Out[11]= |
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
另一种方法是使用 Derivative:
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
| In[14]:= |
| Out[14]= |
FullForm 表明这些方法是等价的:
| In[15]:= |
Out[15]//FullForm= | |
| In[17]:= |
| Out[17]= |
使用 DSolve 求该偏微分方程的符号解. 结果以任意函数 C[1] 的形式给出:
| In[19]:= |
| Out[19]= |
该解也可以纯函数的形式得到. Function 代表 Mathematica 中的一个纯函数:
| In[18]:= |
| Out[18]= |
使用 DSolve 获得该偏微分方程的符号解
,
:
| In[10]:= |
| Out[10]= |
使用 NDSolve 获得该偏微分方程的数值解
,
,
. 解存为
,以便日后使用:
| In[14]:= |
| Out[14]= |
| In[19]:= |
| Out[19]= | ![]() |
在以上的情形中,导数与偏导数以变量的形式给出. 这里,对它们进行数值计算.
| In[29]:= |
| Out[29]= |
| In[28]:= |
| Out[28]= |
除了常微分方程与偏微分方程外,Mathematica 还可以求解微分代数方程.
| In[31]:= |
使用 DSolve 获得该微分代数方程的符号解:
| In[32]:= |
| Out[32]= | ![]() |
| In[33]:= |
| Out[33]= | ![]() |
| In[34]:= |
| Out[34]= | ![]() |
同一图形也可以通过先将
与
代入
,然后使用 NDSolve 得到:
| In[35]:= |
| Out[35]= |
如前所述,解的可视化通过 Plot 实现:
| In[36]:= |
| Out[36]= | ![]() |






