How to| 求解偏微分方程

Mathematica 的微分方程求解函数可以用于许多不同种类的微分方程,自动选择合适的算法,而无须用户进行预处理. 其中一种类型是偏微分方程(PDE).

使用 D 来求导,以下建立 输运方程,,并把它存储为

In[14]:=
Click for copyable input
Out[14]=

使用 DSolve 来求解方程,并且把解存储为 . DSolve 的第一个变量是一个方程,第二个变量是要求解的函数,而第三个变量是自变量组成的列表:

In[15]:=
Click for copyable input
Out[15]=

答案作为一个规则给出,并且 C[1] 是一个任意函数.

若要把解作为一个函数来使用,比方说 ,则使用 ReplaceAll 的简写形式)和 Part 的简写形式):

In[16]:=
Click for copyable input
Out[16]=

接着,您可以计算 正如您即时任何其它函数一样:

In[17]:=
Click for copyable input
Out[17]=

您也可以通过使得 DSolve 的第一个变量为一个列表来增加一个初始条件,比如 . 该解被存储为

In[18]:=
Click for copyable input
Out[18]=

使用 Plot3D 来绘制解:

In[20]:=
Click for copyable input
Out[20]=
    

对非齐次偏微分放出 使用 DSolve,并且具有初始条件

In[1]:=
Click for copyable input
Out[1]=

从嵌套列表得到解:

In[2]:=
Click for copyable input
Out[2]=

对给定参数值计算解:

In[3]:=
Click for copyable input
Out[3]=

现在,使用 Plot3D 来绘制解:

In[5]:=
Click for copyable input
Out[5]=
    

用户也可以对具有非数值系数的偏微分方程进行操作.

使用 DSolve 来求解非齐次偏微分方程,例如,,其中初始条件为 . 其解被存储为

In[6]:=
Click for copyable input
Out[6]=

定义一个函数 ,对应于解

In[7]:=
Click for copyable input
Out[7]=

对参数的给定值,计算解函数:

In[8]:=
Click for copyable input
Out[8]=

替换参数值:

In[9]:=
Click for copyable input
Out[9]=

对给定参数值集合,绘制解

In[10]:=
Click for copyable input
Out[10]=

使用 Manipulate 来显示解 如何随着参数 而改变:

    

到目前为止的例子中都使用 DSolve 来获取偏微分方程的符号解. 当一个给定的偏微分方程不包含参数时,NDSolve 可以被用来获取数值解. NDSolve 的结果作为 InterpolatingFunction 对象给出.

以下,由 NDSolve 产生的解被存储为

In[12]:=
Click for copyable input
Out[12]=

使用 Plot3D 绘制解:

In[15]:=
Click for copyable input
Out[15]=

InterpolatingFunction 对象可以被计算、绘图以及使用在其它操作中.

即可获得解 InterpolatingFunction 并且把它赋给新符号

In[13]:=
Click for copyable input
Out[13]=

对于 的指定值计算解:

In[14]:=
Click for copyable input
Out[14]=

使用 Plot3D 绘制解

In[24]:=
Click for copyable input
Out[24]=
    

当偏微分方程包含参数,NDSolve 可以用于每个特定的参数值. 另外,用户可以建立一个使用 NDSolve 的函数,并且采用参数值.

使用 NumericQ 防止函数 对非数值参数值进行计算:

In[7]:=
Click for copyable input

求对应于参数的某个特定值的解,在这个例子中,参数值为5:

In[9]:=
Click for copyable input
Out[9]=

使用 Plot3D 绘制解. Evaluate 是必须的,以使得计算以正确的顺序出现:

In[10]:=
Click for copyable input
Out[10]=

NDSolve 也可以与其他 Mathematica 函数一起使用, 比如 Manipulate.

求解对应于参数 的某个特定值的偏微分方程,然后绘制所得的解: