How to| 求解偏微分方程
Mathematica 的微分方程求解函数可以用于许多不同种类的微分方程,自动选择合适的算法,而无须用户进行预处理. 其中一种类型是偏微分方程(PDE).
使用 D 来求导,以下建立
输运方程,
,并把它存储为
:
| In[14]:= |
| Out[14]= |
使用 DSolve 来求解方程,并且把解存储为
. DSolve 的第一个变量是一个方程,第二个变量是要求解的函数,而第三个变量是自变量组成的列表:
| In[15]:= |
| Out[15]= |
答案作为一个规则给出,并且 C[1] 是一个任意函数.
若要把解作为一个函数来使用,比方说
,则使用
(ReplaceAll 的简写形式)和
(Part 的简写形式):
| In[16]:= |
| Out[16]= |
| In[17]:= |
| Out[17]= |
您也可以通过使得 DSolve 的第一个变量为一个列表来增加一个初始条件,比如
. 该解被存储为
:
| In[18]:= |
| Out[18]= |
使用 Plot3D 来绘制解:
| In[20]:= |
| Out[20]= | ![]() |
对非齐次偏微分放出
使用 DSolve,并且具有初始条件
:
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
现在,使用 Plot3D 来绘制解:
| In[5]:= |
| Out[5]= | ![]() |
使用 DSolve 来求解非齐次偏微分方程,例如,
,其中初始条件为
. 其解被存储为
:
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| Out[8]= |
| In[9]:= |
| Out[9]= |
| In[10]:= |
| Out[10]= | ![]() |
使用 Manipulate 来显示解
如何随着参数
、
和
而改变:
| In[11]:= |
| Out[11]= | Play Animation ▪![]() |
到目前为止的例子中都使用 DSolve 来获取偏微分方程的符号解. 当一个给定的偏微分方程不包含参数时,NDSolve 可以被用来获取数值解. NDSolve 的结果作为 InterpolatingFunction 对象给出.
以下,由 NDSolve 产生的解被存储为
:
| In[12]:= |
| Out[12]= |
使用 Plot3D 绘制解:
| In[15]:= |
| Out[15]= | ![]() |
InterpolatingFunction 对象可以被计算、绘图以及使用在其它操作中.
从
即可获得解 InterpolatingFunction 并且把它赋给新符号
:
| In[13]:= |
| Out[13]= |
| In[14]:= |
| Out[14]= |
使用 Plot3D 绘制解
:
| In[24]:= |
| Out[24]= | ![]() |
当偏微分方程包含参数,NDSolve 可以用于每个特定的参数值. 另外,用户可以建立一个使用 NDSolve 的函数,并且采用参数值.
使用
NumericQ 防止函数
对非数值参数值进行计算:
| In[7]:= |
| In[9]:= |
| Out[9]= |
使用 Plot3D 绘制解. Evaluate 是必须的,以使得计算以正确的顺序出现:
| In[10]:= |
| Out[10]= | ![]() |
NDSolve 也可以与其他 Mathematica 函数一起使用, 比如 Manipulate.
求解对应于参数
的某个特定值的偏微分方程,然后绘制所得的解:
| In[11]:= |
| Out[11]= | Play Animation ▪![]() |










