72
第七章 数学物理问题的 Mathematica求解
§7.1 偏微分方程的解析解
1.一阶偏微分方程的通解
Mathematica中的 DSolve命令也可以用来求偏微分方程的通解,使用格式为 DSolve[偏微
分方程,未知函数,{自变量}]。例如,求一阶偏微分方程 0x yu u+ = 的通解,命令语句为
DSolve[D[u[x,y],x]+D[u[x,y],y]m0,u[x,y],{x,y}]
输出结果为
{{u[x,y]→C[1][-x+y]}}
注意其中的 C[1]是一个任意函数,而不是常微分方程通解中的任意常数。上面的结果可以写成
我们更习惯的方式
1( , ) ( )u x y C y x= −
上例中的一阶偏微分方程是线性齐次的,现在我们再看一个线性非齐次的偏微分方程
1/( )x yu u xy+ = ,求解的命令语句为
DSolve[D[u[x,y],x]+D[u[x,y],y]m1/(x y),u[x,y],{x,y}]
输出结果为
::u@x, yD → −Log@xD + Log@yD+ xC@1D@−x+ yD− yC@1D@−x+ yDx− y >>
上面的结果可以写成
1 1
1
ln ln ( ) ( ) ln ln( , ) ( )x y x C y x y C y x x yu x y C y x
x y x y
− + + ⋅ − − ⋅ − −= = − −− −
结果中的第一项为对应齐次方程的通解,第二项为非齐次方程的特解。
下面再看一个非线性的一阶偏微分方程 2x yu u u+ = ,求解的命令语句为
DSolve[D[u[x,y],x]+D[u[x,y],y]mu[x,y]^2,u[x,y],{x,y}]
输出结果为
::u@x, yD → 1−x− C@1D@−x+ yD >>
上面的结果可以写成
1
1( , )
( )
u x y
x C y x
= − − −
73
2.二阶偏微分方程的通解
现在,我们来看二阶偏微分方程的求解。例如求波动微分方程 2tt xxu a u= 的通解,命令语
句为
DSolve[D[u[t,x],t,t]ma^2 D[u[t,x],x,x],u[t,x],{t,x}]
输出结果为
::u@t, xD → C@1DB−"#####a2 t+ xF+ C@2DB"#####a2 t+ xF>>
注意现在通解中有 C[1]和 C[2]二个任意函数,由于 Mathematica不知道参数 a的性质,因而未
对 2a 进行化简。设 a>0,写成习惯的形式为
1 2( , ) ( ) ( )u x t C x at C x at= − + +
按照方程的要求,这两个任意函数都应该存在二阶偏导数。
我们也可以用 DSolve来求拉普拉斯方程 0xx yyu u+ = 的通解,命令语句为
DSolve[D[u[x,y],x,x]+D[u[x,y],y,y]m0,u[x,y],{x,y}]
输出结果为
{{u[x,y]→C[1][Ç x+y]+C[2][-Ç x+y]}}
注意现在通解中的二个任意函数 C[1]和 C[2]都应该是解析函数。
不是所有的偏微分方程都可以用 DSolve 来求出通解的,例如,我们所熟悉的热传导方程
2
t xxu a u= 虽然存在形式上的通解
2( )
41( , ) ( )
2
x s
atu x t s e ds
a t
ϕπ
−−∞
−∞= ∫ ,但是用 DSolve命令
DSolve[D[u[t,x],t]ma^2 D[u[t,x],x,x],u[t,x],{t,x}]
得到的结果为
DSolve@uH1,0L@t, xD m a2 uH0,2L@t, xD, u@t, xD, 8t, x
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
原样输出,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
明它无法按要求执行。
DSolve 通常也不能求出非齐次二阶线性偏微分方程的通解。例如,非齐次波动方程
2
tt xxu a u x− = 的求解命令为
DSolve [ D[u[x,t],x,x]+D[u[x,t],t,t]mx , u[x,t] , {x,t} ]
输出结果为
DSolve@uH0,2L@x, tD + uH2,0L@x, tDm x, u@x, tD, 8x, t, u@t, xD, 8t, x]}}
这表明Mathematica得到了一个在 [0,1], [0,0.3]x t∈ ∈ 范围内的插值函数 u(x, t)。在此基础上,
我们可以用三维作图命令 Plot3D来画出插值函数的图像,命令语句为
Plot3D[Evaluate[u[x,t]/.First[%]],{x,0,1},{t,0,0.3}]
输出结果为
0
0.25
0.5
0.75
1 0
0.1
0.20
0.1
0.2
0
0.25
0.5
0.75
我们也可以用一系列的时间抽样图像来显示温度 u随着时间的演化情况,如果抽样的间隔
为 0.1,命令语句如下
Table[ Plot [Evaluate[u[x,t]/.First[%]],{x,0,1}],{t,0,0.3,0.1}]
输出结果为
0.2 0.4 0.6 0.8 1
0.05
0.1
0.15
0.2
0.25
t=
0.2 0.4 0.6 0.8 1
0.02
0.04
0.06
0.08
t=
76
0.2 0.4 0.6 0.8 1
0.005
0.01
0.015
0.02
0.025
0.03
0.035
t=
0.2 0.4 0.6 0.8 1
0.002
0.004
0.006
0.008
0.01
0.012
t=
虽然所显示的温度分布的图形相似,但是数值的标度范围在迅速变小,这说明物体中的温度随
时间迅速下降。
我们可以调整 Plot 中的参数来保持标度范围不变,如果要取作图的纵坐标范围固定为[0,
0.25],可以设置参数为 PlotRange->{0,0.25},命令语句为
Table[ Plot [Evaluate[u[x,t]/.First[%]],{x,0,1},PlotRange->{0,0.25}],{t,0,0.3,0.1}]
输出的结果为
0.2 0.4 0.6 0.8 1
0.05
0.1
0.15
0.2
0.25
t=
0.2 0.4 0.6 0.8 1
0.05
0.1
0.15
0.2
0.25
t=
77
0.2 0.4 0.6 0.8 1
0.05
0.1
0.15
0.2
0.25
t=
0.2 0.4 0.6 0.8 1
0.05
0.1
0.15
0.2
0.25
t=
这样就可以明显地看出不同时刻的温度分布情况的变化,即温度分布随着时间的演化情况。
我们也可以固定某个位置,观察温度随着时间变化的规律。如果固定位置的坐标为{0.1, 0.5,
0.9},对应的命令语句为
Table[ Plot [Evaluate[u[x,t]/.First[%]],{t,0,0.3},PlotRange->{0,0.25}],{x,0.1,0.9,0.4}]
输出的结果为
0.05 0.1 0.15 0.2 0.25 0.3
0.05
0.1
0.15
0.2
0.25
x=
0.05 0.1 0.15 0.2 0.25 0.3
0.05
0.1
0.15
0.2
0.25
x=
78
0.05 0.1 0.15 0.2 0.25 0.3
0.05
0.1
0.15
0.2
0.25
x=
上面的%表示引用刚刚结束的操作结果,因此对应的命令必须紧邻,如果隔开了就会出错。
为了提高用 Mathematica 解题的灵活性,我们可以给操作结果起一个名,以后可以在任何时候
按名引用。例如,上面的命令组可以改写为
Solution = NDSolve [ { D[u[x,t],t]==D[u[x,t],x,x] , u[x,0] x(1 -x) , u[0,t] 0 , u[1,t]==0 } , u ,
{x,0,1} , {t,0,0.3} ]
Table [ Plot [Evaluate[u[x,t]/.First[Solution]],{t,0,0.3},PlotRange->{0,0.25}] , { x,0.1,0.9,0.4} ]
2.其它热传导定解问题
下面,我们再考虑几个热传导方程的定解问题。
例 1 在时间范围 [0,1]t∈ 内数值求解第二类边界条件齐次泛定方程问题
0
2
0
, 0
| 0, | 0
| sin
t xx
x x x x
t
u u x
u u
u x
π
π
= =
=
= < < = = =
命令语句为
solution=
NDSolveA9∂tu@x, tD == ∂x,xu@x, tD, u@x,0D m Sin@xD2, uH1,0L@0, tD ==0,
uH1,0L@π, tD ==0=, u, 8x, 0, π<, 8t, 0, 1 = = = =
的命令语句组为
solution=
uê.
FirstANDSolveA9∂x,xu@x, yD+ ∂y,yu@x,yD ==0,u@x, 0D == Cos@2 π xD,uH0,1L@x, 0D == 0,
u@0,yD == 1,u@1,yD ==1=,u, 8x, 0,1<, 8y,0,180]
结果得到
0
0.25
0.5
0.75
1 0
0.25
0.5
0.75
1
-2×109
0
2×109
0
0.25
0.5
0.75
NDSolve命令还可以用来求解非线性问题。例如,求定解问题
0 1
0
, 0 1
| |
| sin 2
t x
x x
t
u uu x
u u
u xπ
= =
=
= − < < = =
的命令语句组为
solution=
uê. First@NDSolve@8∂tu@x, tD == −u@x,tD ∂xu@x, tD,u@x,0D == Sin@2 π xD,u@0,tD ==u@1,tD<,8u<, 8x,0,1<, 8t,0, .5]}}
追加一个绘图命令
Plot3D[Evaluate[u[t,x]/.First[solution]],{t,0,10},{x,-10,10},PlotPoints→80]
得到输出结果为
0
2
4
6
8
10 -10
-5
0
5
10
-1
0
1
0
2
4
6
8
我们也可以用下面的命令来绘制一张平面的灰度图
DensityPlot[Evaluate[u[10-t,x]/.First[solution]],{x,-10,10},{t,0,10},PlotPoints→200,Mesh→False]
85
结果得到
-10 -5 0 5 10
0
2
4
6
8
10
§7.3 拉普拉斯变换
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
1.典型案例
利用拉普拉斯变换也可以求解偏微分方程。例如,下面的热传导问题
0 4
0
, 0 4
| 0, | 0
| 6sin( / 2) 3sin
t xx
x x
t
u u x
u u
u x xπ π
= =
=
= < < = = = +
对时间变量 t作拉普拉斯变换,得到
( ) 6sin( / 2) 3sin ''( ), 0 4
(0) 0, (4) 0
sU x x x U x x
U U
π π− + = < < = =
其中 ( )U x 为 ( , )u x t 的拉普拉斯变换。由上式解出 ( )U x 后,再作拉普拉斯变换的逆变换,得到
( , )u x t 。
这个过程的Mathematica语句如下
eq= ∂tu@x, tD == ∂x,xu@x, tD;e1 = LaplaceTransform@eq,t, sD
e2= e1ê. 9u@x,0D→ 6 Sin@π xê2D +3 Sin@π xD, LaplaceTransform@u@x,tD,t,sD → U@xD,
LaplaceTransformAuH2,0L@x,tD,t, sE→ D@U@xD, 8x,2
本文档为【用mathematica解偏微分方程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。