特别鸣谢原文作者:苏剑林

本文以尽可能清晰、简明的方式来介绍了一阶偏微分方程的特征线法。个人认为这是偏微分方程理论中较为简单但事实上又容易让人含糊的一部分内容,因此尝试以自己的文字来做一番介绍。当然,更准确来说其实是笔者自己的备忘。

拟线性情形 ↺

一般步骤 ↺

考虑偏微分方程

α(x,u)⋅∂∂xu=β(x,u)(1)(1)α(x,u)⋅∂∂xu=β(x,u)

\begin{equation}\boldsymbol{\alpha}(\boldsymbol{x},u) \cdot \frac{\partial}{\partial \boldsymbol{x}} u = \beta(\boldsymbol{x},u)\tag{1}\end{equation}

其中 αα\boldsymbol{\alpha}是一个 nnn维向量函数,β" role="presentation">ββ\beta是一个标量函数, ⋅⋅\cdot是向量的点积, u≡u(x)u≡u(x)u\equiv u(\boldsymbol{x})是 nnn元函数,x" role="presentation">xx\boldsymbol{x}是它的自变量。

特征线法的思路是,设想xx\boldsymbol{x}是某个参数sss的函数,这时候x(s)" role="presentation">x(s)x(s)\boldsymbol{x}(s)实际上就是某条高维曲线的参数方程,也就是所谓的特征线,这样uuu也成为了参数s" role="presentation">sss的函数。并且我们有

duds=∂u∂x⋅dxds(2)(2)duds=∂u∂x⋅dxds

\begin{equation}\tag{2}\frac{du}{ds}=\frac{\partial u}{\partial \boldsymbol{x}}\cdot\frac{d\boldsymbol{x}}{ds}\end{equation}

对比原来的偏微分方程 (1)(1)(1),我们发现可以让

dxds=α(x,u)(3)(3)dxds=α(x,u)

\begin{equation}\frac{d\boldsymbol{x}}{ds}=\boldsymbol{\alpha}(\boldsymbol{x},u)\tag{3}\end{equation}

那么就有

duds=β(x,u)(4)(4)duds=β(x,u)

\begin{equation}\tag{4}\frac{du}{ds}=\beta(\boldsymbol{x},u)\end{equation}

联合 (3)(3)(3)和 (4)(4)(4),我们就得到了一个 n+1n+1n+1个方程组成的常微分方程组了。

⎧⎩⎨⎪⎪⎪⎪<br/>dxds=α(x,u)duds=β(x,u)(5)(5){dxds=α(x,u)<br/>duds=β(x,u)

\begin{equation}\left\{\begin{aligned}&\frac{d\boldsymbol{x}}{ds}=\boldsymbol{\alpha}(\boldsymbol{x},u)\\
&\frac{du}{ds}=\beta(\boldsymbol{x},u)\end{aligned}\right. \tag{5}\end{equation}

由于 sss只是一个额外引入的变量,所以原则上我们可以解得与s" role="presentation">sss无关的结果

c=f(x,u)(6)(6)c=f(x,u)

\begin{equation}\boldsymbol{c}=\boldsymbol{f}(\boldsymbol{x},u)\tag{6}\end{equation}

其中 cc\boldsymbol{c}是一个 nnn维向量,是该常微分方程组的积分常数,f" role="presentation">ff\boldsymbol{f}是 nnn维向量函数。剩下的就是根据初值条件来确定各个积分常数之间的关系了。当然,如果要求出一个通解表达式,那就是

(7)G(f(x,u))=0" role="presentation">G(f(x,u))=0(7)(7)G(f(x,u))=0

\begin{equation}G(\boldsymbol{f}(\boldsymbol{x},u))=0\tag{7}\end{equation}

其中 GGG是任意的n" role="presentation">nnn元函数,原则上我们可以从中求解得到 uuu关于x" role="presentation">xx\boldsymbol{x}的表达式。

简单例子 ↺

上面的步骤比较理论化,在实际处理问题中,可以更加灵活些。下面我们来求解

∂u∂t+x∂u∂x=u2,u(x,0)=f(x)(8)(8)∂u∂t+x∂u∂x=u2,u(x,0)=f(x)

\begin{equation}\frac{\partial u}{\partial t} + x \frac{\partial u}{\partial x} = u^2,\quad u(x,0)=f(x)\tag{8}\end{equation}

我们得到特征线方程

dt=dxx=duu2(9)(9)dt=dxx=duu2

\begin{equation}dt = \frac{dx}{x}=\frac{du}{u^2}\tag{9}\end{equation}

求得

x=C1et,u=1C2−t(10)(10)x=C1et,u=1C2−t

\begin{equation}x=C_1 e^t, u = \frac{1}{C_2-t}\tag{10}\end{equation}

当 t=0t=0t=0时,有 x=C1,u=1C2=f(C1)x=C1,u=1C2=f(C1)x=C_1,u=\frac{1}{C_2}=f(C_1),从而解得 C2=1f(C1)C2=1f(C1)C_2 = \frac{1}{f(C_1)},因为我们有 C1=xe−t,C2=u−1+tC1=xe−t,C2=u−1+tC_1 = xe^{-t}, C_2 = u^{-1} + t,所以代入得到

u−1+t=1f(xe−t)(11)(11)u−1+t=1f(xe−t)

\begin{equation}u^{-1} + t = \frac{1}{f(xe^{-t})}\tag{11}\end{equation}

u=f(xe−t)1−t×f(xe−t)(12)(12)u=f(xe−t)1−t×f(xe−t)

\begin{equation}u = \frac{f(xe^{-t})}{1-t\times f(xe^{-t})}\tag{12} \end{equation}

一点讨论 ↺

特征线究竟是什么含义呢?对于初学者来说,上述过程可能像变魔术一样,先求解出常数,然后消去常数,好像把握不到主干。这就是笔者一开始学习特征线法的困惑。

事实上,我们可以这样认为,特征线已经是偏微分方程的解了,只不过它是在解上的一条线,而完整来说解应该是一个高维的曲面。显然,点动成线、线动成面,想办法让这些线动起来,那么就可以得到这个曲面的方程了,也就是说,各个积分常数cc\boldsymbol{c}要“动起来”

当然,它们不能毫无约束地乱动,随意动的话,可能就覆盖了整个空间了,该怎么动是取决于初值条件的,因此我们根据初值条件来确定积分常数之间的约束关系。确定完后,我们已经得到了这个曲面的参数方程,从求解的角度,我们没有必要消去各个常数,但很多时候我们更喜欢显式解,所以我们想办法消去常数。

整个过程的逻辑大概就是这样了。

一般情形 ↺

一般的教材对特征线法的介绍仅限于拟线性偏微分方程,事实上,对于一般的一阶偏微分方程

F(x,u,∂u∂x)=0(13)(13)F(x,u,∂u∂x)=0

\begin{equation}F\left(\boldsymbol{x}, u, \frac{\partial u}{\partial\boldsymbol{x}}\right)=0\tag{13}\end{equation}

特征线法也是适用的,其中 FFF是任意多元函数。

这部分工作主要参考自英文维基百科:
https://en.wikipedia.org/wiki/Method_of_characteristics

推导

为此,我们先记

(14)p=∂u∂x" role="presentation">p=∂u∂x(14)(14)p=∂u∂x

\begin{equation}\boldsymbol{p} = \frac{\partial u}{\partial\boldsymbol{x}}\tag{14}\end{equation}

然后对 F(x,u,p)=0F(x,u,p)=0F\left(\boldsymbol{x}, u, \boldsymbol{p}\right)=0两边求导,得到

0=<br/>∂F∂x⋅dxds+∂F∂u∂u∂x⋅dxds+∂F∂p⋅dpds=(∂F∂x+∂F∂up)⋅dxds+∂F∂p⋅dpds<br/>(15)(15)0=∂F∂x⋅dxds+∂F∂u∂u∂x⋅dxds+∂F∂p⋅dpds<br/>=(∂F∂x+∂F∂up)⋅dxds+∂F∂p⋅dpds<br/>

\begin{equation}\begin{aligned}0 =& \frac{\partial F}{\partial\boldsymbol{x}}\cdot\frac{d\boldsymbol{x}}{ds}+\frac{\partial F}{\partial u}\frac{\partial u}{\partial \boldsymbol{x}}\cdot\frac{d\boldsymbol{x}}{ds}+\frac{\partial F}{\partial\boldsymbol{p}}\cdot\frac{d\boldsymbol{p}}{ds}\\
&=\left(\frac{\partial F}{\partial\boldsymbol{x}}+\frac{\partial F}{\partial u}\boldsymbol{p}\right)\cdot\frac{d\boldsymbol{x}}{ds}+\frac{\partial F}{\partial\boldsymbol{p}}\cdot\frac{d\boldsymbol{p}}{ds}
\end{aligned}\tag{15}\end{equation}

可以发现,上面是两组向量的点积,它们加起来为0,那么一个有意思的解决方法就是让

dxds=∂F∂p,dpds=−∂F∂x−∂F∂up(16)(16)dxds=∂F∂p,dpds=−∂F∂x−∂F∂up

\begin{equation}\frac{d\boldsymbol{x}}{ds}=\frac{\partial F}{\partial\boldsymbol{p}},\quad \frac{d\boldsymbol{p}}{ds}=-\frac{\partial F}{\partial\boldsymbol{x}}-\frac{\partial F}{\partial u}\boldsymbol{p}\tag{16}\end{equation}

并且我们还有

duds=∂u∂x⋅dxds=p⋅∂F∂p(17)(17)duds=∂u∂x⋅dxds=p⋅∂F∂p

\begin{equation}\frac{du}{ds}=\frac{\partial u}{\partial\boldsymbol{x}}\cdot\frac{d\boldsymbol{x}}{ds}=\boldsymbol{p}\cdot\frac{\partial F}{\partial\boldsymbol{p}}\tag{17}\end{equation}

联合起来我们就得到常微分方程组

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪<br/><br/><br/>dxds=∂F∂pdpds=−∂F∂x−∂F∂upduds=p⋅∂F∂pF(x,u,p)=0(18)(18){dxds=∂F∂p<br/>dpds=−∂F∂x−∂F∂up<br/>duds=p⋅∂F∂p<br/>F(x,u,p)=0

\begin{equation}\left\{\begin{aligned}&\frac{d\boldsymbol{x}}{ds}=\frac{\partial F}{\partial\boldsymbol{p}}\\
&\frac{d\boldsymbol{p}}{ds}=-\frac{\partial F}{\partial\boldsymbol{x}}-\frac{\partial F}{\partial u}\boldsymbol{p}\\
&\frac{du}{ds}=\boldsymbol{p}\cdot\frac{\partial F}{\partial\boldsymbol{p}}\\
&F\left(\boldsymbol{x}, u, \boldsymbol{p}\right)=0\end{aligned}\right.\tag{18}\end{equation}

接下来的步骤就跟拟线性情形的没什么差别了,只不过多引入了 nnn个变量p" role="presentation">pp\boldsymbol{p}。解出这个方程来,然后得到 2n2n2n个与 sss积分常数的积分常数,根据初值条件来找出常数之间的关系。不同的是,因为多了n" role="presentation">nnn个变量 pp\boldsymbol{p},所以要对初值条件也考虑偏导数,这导致了求解过程更加复杂。请看下面的例子。

又一个例子 ↺

∂u∂t=(∂u∂x)2,u(x,0)=f(x)(19)(19)∂u∂t=(∂u∂x)2,u(x,0)=f(x)

\begin{equation}\frac{\partial u}{\partial t} = \left(\frac{\partial u}{\partial x}\right)^2,\quad u(x,0)=f(x)\tag{19}\end{equation}

也就是 0=F(p)=pt−p2x0=F(p)=pt−px20=F(\boldsymbol{p})=p_t - p_x^2,于是根据 (18)(18)(18)式我们得到特征线方程

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪<br/><br/>dtds=1,dxds=−2pxdptds=0,dpxds=0duds=pt−2p2x=−p2x(20)(20){dtds=1,dxds=−2px<br/>dptds=0,dpxds=0<br/>duds=pt−2px2=−px2

\begin{equation}\left\{\begin{aligned}&\frac{dt}{ds}=1,\frac{dx}{ds}=-2p_x\\
&\frac{dp_t}{ds}=0,\frac{dp_x}{ds}=0\\
&\frac{du}{ds}=p_t - 2p_x^2 = -p_x^2\end{aligned}\right.\tag{20}\end{equation}
直接取 s=ts=ts=t,然后可以得到 pt=C1,px=C2pt=C1,px=C2p_t=C_1,p_x=C_2都是常数,从而 x=−2C2t+C3,u=−C22t+C4x=−2C2t+C3,u=−C22t+C4x=-2C_2 t + C_3, u = -C_2^2 t + C_4。接着根据初值条件,当 t=0t=0t=0时,有 x=C3,u=C4x=C3,u=C4x=C_3,u=C_4,这表明 C4=f(C3)C4=f(C3)C_4=f(C_3),代入后有

u=−C22t+f(x+2C2t)(21)(21)u=−C22t+f(x+2C2t)

\begin{equation}u = -C_2^2 t + f(x + 2C_2 t)\tag{21}\end{equation}

然后对初值条件的 xxx变量求偏导,那么当t=0" role="presentation">t=0t=0t=0时有

C2=px=f′(x)=f′(C3)(22)(22)C2=px=f′(x)=f′(C3)

\begin{equation}C_2 = p_x = f'(x)=f'(C_3)\tag{22}\end{equation}

注意 fff是事先给定的初值函数,因此上式实际上是一个代数方程,所以我们有

(23)u=−t×f′(C3)2+f(x+2t×f′(C3))&lt;br/&gt;=−t×f′(C3)2+f(C3)&lt;br/&gt;" role="presentation">u=<br/>=−t×f′(C3)2+f(x+2t×f′(C3))−t×f′(C3)2+f(C3)<br/>(23)(23)u=−t×f′(C3)2+f(x+2t×f′(C3))<br/>=−t×f′(C3)2+f(C3)<br/>

\begin{equation}\begin{aligned}u =& -t\times f'(C_3)^2 + f\Big(x + 2t\times f'(C_3)\Big)\\
=& -t\times f'(C_3)^2 + f(C_3)
\end{aligned}\tag{23}\end{equation}

并且

x=−2C2t+C3=−2t×f′(C3)+C3(24)(24)x=−2C2t+C3=−2t×f′(C3)+C3

\begin{equation}x=-2C_2 t + C_3=-2t\times f'(C_3) + C_3\tag{24}\end{equation}

从中反解出 C3C3C_3并代入前一式就可以得到完整解。比如当 f(x)=x2f(x)=x2f(x)=x^2时,解得

C3=x1−4t(25)(25)C3=x1−4t

\begin{equation}C_3=\frac{x}{1-4t}\tag{25}\end{equation}

代入得到

u=x21−4t(26)(26)u=x21−4t

\begin{equation}u=\frac{x^2}{1-4t}\tag{26}\end{equation}

自上而下的过程 ↺

从形式上来看,一般情形的特征线法跟拟线性情形的特征线法差别很大。那么一般情形的特征线法能不能退化到拟线性情形?

事实上,将F=α⋅p−βF=α⋅p−βF=\boldsymbol{\alpha}\cdot\boldsymbol{p}-\beta代入(18)(18)(18)式,就可以得到

⎧⎩⎨⎪⎪⎪⎪<br/>dxds=αduds=p⋅α(27)(27){dxds=α<br/>duds=p⋅α

\begin{equation}\left\{\begin{aligned}&\frac{d\boldsymbol{x}}{ds}=\boldsymbol{\alpha}\\
&\frac{du}{ds}=\boldsymbol{p}\cdot\boldsymbol{\alpha}\end{aligned}\right.\tag{27}\end{equation}

关于 pp\boldsymbol{p}的方程就不必写出来了,因为我们有 p⋅α=βp⋅α=β\boldsymbol{p}\cdot\boldsymbol{\alpha}=\beta,代入上式就可以得到封闭的方程组。这就退化为 (5)(5)(5)式了。

另外,一种特别简单的情形是FFF仅仅是p" role="presentation">pp\boldsymbol{p}的函数,这时候∂F∂x∂F∂x\frac{\partial F}{\partial\boldsymbol{x}}和∂F∂u∂F∂u\frac{\partial F}{\partial u}都是0,那么特征线方程中pp\boldsymbol{p}是常数,从而xx\boldsymbol{x}和uuu都是关于s" role="presentation">sss的线性函数,整个方程都是完全可解的。之后,就变成了一个纯粹的代数方程问题了。

方程组的情形 ↺

上述特征线技巧能否推广到一阶偏微分方程组?一般是不可行的,因为解决了一阶偏微分方程组就相当于解决了任意阶的偏微分方程了,显然我们没有看到这样的工作(要是可能的话,早就被人做了)。

不过,要是方程组中偏导算子的部分是一致的话,那么特征线法还是可用的。具体来说,考虑偏微分方程

(α(x,u)⋅∂∂x)u=β(x,u)(28)(28)(α(x,u)⋅∂∂x)u=β(x,u)

\begin{equation}\left(\boldsymbol{\alpha}(\boldsymbol{x},\boldsymbol{u}) \cdot \frac{\partial}{\partial \boldsymbol{x}}\right) \boldsymbol{u} = \boldsymbol{\beta}(\boldsymbol{x},\boldsymbol{u})\tag{28}\end{equation}

这时候 uu\boldsymbol{u}也是一个向量,但是左边的偏导数算子是共享的,右边的 ββ\boldsymbol{\beta}的各个分量可以不一样。这时候也可以用特征线法得到

⎧⎩⎨⎪⎪⎪⎪<br/>dxds=α(x,u)duds=β(x,u)(29)(29){dxds=α(x,u)<br/>duds=β(x,u)

\begin{equation}\left\{\begin{aligned}&\frac{d\boldsymbol{x}}{ds}=\boldsymbol{\alpha}(\boldsymbol{x},u)\\
&\frac{d\boldsymbol{u}}{ds}=\boldsymbol{\beta}(\boldsymbol{x},u)\end{aligned}\right.\tag{29}\end{equation}
当然,这只是原来方法的平凡推广。

原文地址

偏微分方程的特征线法相关推荐

  1. 生成扩散模型漫谈:构建ODE的一般步骤(上)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 书接上文,在<生成扩散模型漫谈:从万有引力到扩散模型>中,我们介绍了一个由万有引力 ...

  2. ​生成扩散模型漫谈:构建ODE的一般步骤(下)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 上周笔者写了<生成扩散模型漫谈:构建ODE的一般步骤(上)>,本以为已经窥见了构建 ...

  3. 海天讲座(三)最优传输理论

    由于原链接公式看不到,所以转了下,如有侵权,联系删除 2016 农历小年附近,老顾从北京回到纽约.与北京火爆热烈的节日气氛相比,纽约的氛围孤独寂寥,冷漠凄清.与几位访问学者和学生漫步在长岛石溪海滩,气 ...

  4. 加州理工华人博士提出傅里叶神经算子,偏微分方程提速1000倍,告别超算!

    视学算法报道   编辑:LRS [新智元导读]偏微分方程存在于生活中的方方面面,但这个方程通常需要借助超算才能求解.最近加州理工的一个博士生提出了一种傅里叶神经算子,能让求解速度提升1000倍,从此让 ...

  5. 北大数院校友最新成果登数学四大顶刊,偏微分方程突破,可用于W-GAN,现已回国任教中科大...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 数 ...

  6. 清华大学史作强副教授专访:用流形、偏微分方程揭秘人工智能

    基础理论的缺失是人工智能进一步发展的瓶颈之一,国内外很多学者正在从各个学科的角度,为揭开AI算法黑匣子探索新的突破口.而本文介绍的嘉宾,智源学者史作强近年来则独辟蹊径地将常用于物理学研究的数学工具-- ...

  7. 董彬教授:用深度神经网络学习偏微分方程及其数值求解的离散格式

    2019年10月31日下午,在北京智源大会的"人工智能的数理基础专题论坛"上,北京大学副教授.智源学者董彬做了题为<Learning and Learning to Solv ...

  8. 北大杨超:以偏微分方程求解为例,AI如何助力科学计算?

    2020-05-17 21:09:13 作者 | 未来论坛 编辑 | 蒋宝尚 AI技术,特别是机器学习和强化学习方法,基于实验或者计算产生的数据对所求解的问题进行可计算建模,从而得到复杂问题的有效解决 ...

  9. matlab 文件名分离_MATLAB偏微分方程

    4.8.2  偏微分方程 在自然科学的很多领域内,都会遇到微分方程初值问题,特别是偏微分方程,它的定解问题是描述自然界及科学现象的最重要的工具.可以说,几乎自然界和各种现象都可以通过微分方程(特别是偏 ...

最新文章

  1. Android 获取App的版本号与版本名称的2中方法
  2. DFA确定性有穷自动机及其化简
  3. highchairs绘图随记
  4. java全双工_TCP双向还是全双工?
  5. SAP WebService基础知识
  6. 算法练习day4——190321(小和、逆序对、划分、荷兰国旗问题)
  7. React 篇 Search Bar and content Table
  8. OpenGL 人物走动源码
  9. SQL Server JSON:性能手册
  10. phoenixframework自动化测试平台1.4.6版本发布
  11. ssh相互访问不用密码
  12. C++的类型转换操作符
  13. sqlmap注入之tamper绕过WAF防火墙过滤
  14. video.js插件的使用
  15. 在mtk6223的软t卡上实现对sdhc卡的读写
  16. 数据挖掘导论课后习题答案-第七章
  17. 微信小程序 黑色背景 页面跳转闪屏
  18. Tableau实战 Tableau官网各版块访问情况(三)页面停留访问人数交叉分析
  19. 关于int.prase的一些解析
  20. 玩转华为数据中心交换机系列 | 配置基于子网划分VLAN示例

热门文章

  1. python——正则表达式(re模块)详解
  2. python pandas 增加一列_Python之pandas新增列
  3. python3.9.0 安装教程
  4. H5视频播放器--西瓜视频播放器
  5. 【RDMA】infiniband网卡安装|ib网卡命令|ibdump 用法说明
  6. 【java】黑白图像
  7. 如何通过 WhatsApp 开展营销活动?
  8. 国家宝藏第三季开篇神级文案
  9. Hack The Box - Catch 利用let chat API查询信息,Cachet配置泄露漏洞获取ssh登录密码,apk代码注入漏洞利用获取root权限
  10. 7.6-7.13牟尼沟、若尔盖旅游日记