MATLAB偏微分方程求解 2

合集下载

MATLAB精通科学计算_偏微分方程求解

MATLAB精通科学计算_偏微分方程求解

一、Maple V 系统Maple V是由Waterloo大学开发的数学系统软件,它不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。

Maple V的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。

Maple提供了2000余种数学函数,涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。

它还提供了一套内置的编程语言,用户可以开发自己的应用程序,而且Maple自身的2000多种函数,基本上是用此语言开发的。

Maple采用字符行输入方式,输入时需要按照规定的格式输入,虽然与一般常见的数学格式不同,但灵活方便,也很容易理解。

输出则可以选择字符方式和图形方式,产生的图形结果可以很方便地剪贴到Windows应用程序内。

二、MATLAB 系统MATLAB原是矩阵实验室(Matrix Laboratory)在70年代用来提供Linpack和Eispac k软件包的接口程序,采用C语言编写。

从80年代出现3.0的DOS版本,逐渐成为科技计算、视图交互系统和程序语言。

MATLAB可以运行在十几个操作平台上,比较常见的有基于W indows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平台的系统。

MATLAB程序主要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包括复杂系统仿真、信号处理工具包、系统识别工具包、优化工具包、神经网络工具包、控制系统工具包、μ分析和综合工具包、样条工具包、符号数学工具包、图像处理工具包、统计工具包等。

而且5.x版本还包含一套几十个的PDF文件,从MATLAB的使用入门到其他专题应用均有详细的介绍。

MATLAB是数值计算的先锋,它以矩阵作为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已经成为首选工具,同时也是科研工作人员和大学生、研究生进行科学研究的得力工具。

matlab解二阶偏微分方程

matlab解二阶偏微分方程

<div align="center">一、Matlab求解二阶偏微分方程(ODE)的基本步骤</div>1. 数学模型:首先要确定求解的方程是哪一类的偏微分方程(ODE),然后建立其对应的数学模型,使其符合这类微分方程的形式;2. 确定边界条件:确定迭代范围$[a,b]$,边界条件函数 $y(a)=\alpha$ 、$y(b)=\beta$;3. 写出Matlab程序:在该类ODE中,通常会有某一种常用的数值求解方法,一般使用微分方程求解器(ODE),如ode45等;4. 获得实际结果:开始编写Matlab程序,完成参差和参数的输入以后,可以运行Matlab程序,然后求得结果,再用图像表示出来。

<div align="center">二、具体求解</div>$$\frac{d^2y}{dx^2}+y=6sin(2x)$$微分方程为二阶常微分方程,求解条件如下:$[a,b]=[0,\pi], y(0)=1,y(\pi)=3.$(1)Matlab函数表达式首先建立与二阶非齐次线性常微分方程相符合的数学模型,其Matlab函数表达式为$$ f(x,y,y')=\frac{dy}{dx}-y'-6sin2x $$其中,$y=y(x)$;(2)函数程序在Matlab中,定义函数程序 $myode.m$ ,此程序返回右端函数 $f(x,y,y')$ 的值表达式,程序内容如下。

```MATLAB% 右端函数程序function dy=myode(x,y)dy=[y(2);-y(2)-6*sin(2*x)];end```(3)调用Matlab函数olvede45调用Matlab函数 solvede45 求解二阶ODN,程序内容如下:```MATLAB% 主程序求解% maxstep表示分裂的步长大小% Tolerence表示误差,控制求解精度Maxstep=0.25;Tolerence=1e-4;a=0;b=pi;y0=[1;0];[x,y] = ode45('myode',[a,b],y0,options);```(4)结果展示输入参数之后,运行Matlab程序,得到如下图:![](../images/matlab_2_diff.png)此图为$y(x)$随$x$变化的曲线,可以看出,二阶偏微分的求解结果满足了边界条件,即$y(0)=1,y(\pi)=3$ ,如图中红色圆点所示。

实验二MATLAB 求微分方程的解

实验二MATLAB    求微分方程的解

实验二 微分方程求解一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解).对微分方程(组)的解析解法(精确解),Matlab 有专门的函数可以用,本实验将作一定的介绍.本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍 Euler 折线法.二、相关函数(命令)及简介1.dsolve('equ1','equ2',…):Matlab 求微分方程的解析解.equ1、equ2、…为方程(或条件).写方程(或条件)时用 Dy 表示y 关于自变量的一阶导数,用用 D2y 表示 y 关于自变量的二阶导数,依此类推.2.simplify(s):对表达式 s 使用 maple 的化简规则进行化简. 例如: syms xsimplify(sin(x)^2 + cos(x)^2) ans=13.[r,how]=simple(s):由于 Matlab 提供了多种化简规则,simple 命令就是对表达式 s 用各种规则进行化简,然后用 r 返回最简形式,how 返回形成这种形式所用的规则.例如: syms x[r,how]=simple(cos(x)^2-sin(x)^2) r = cos(2*x) how = combine4.[T,Y] = solver(odefun,tspan,y 0) 求微分方程的数值解. 说明:(1) 其中的 solver 为命令 ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 之一.(2) odefun是显式常微分方程:⎪⎩⎪⎨⎧==00)(),(yt y y t f dt dy(3) 在积分区间 tspan =],[0f t t 上,从0t 到f t ,用初始条件0y 求解.(4) 要获得问题在其他指定时间点 ,210,,t t t 上的解,则令 tspan =],,,[,210f t t t t (要求是单调的).(5) 因为没有一种算法可以有效地解决所有的 ODE 问题,为此,Matlab 提供了多种求解器 Solver ,对于不同的ODE 问题,采用不同的Solver .(6) 要特别的是:ode23、ode45 是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的 Matlab 的常用程序,其中:ode23 采用龙格-库塔2 阶算法,用3 阶公式作误差估计来调节步长,具有低等的精度.ode45 则采用龙格-库塔4 阶算法,用5 阶公式作误差估计来调节步长,具有中等的精度.5.ezplot(x,y ,[tmin,tmax]):符号函数的作图命令.x,y 为关于参数t 的符号函数,[tmin,tmax] 为 t 的取值范围.6.inline():建立一个内联函数.格式:inline('expr', 'var1', 'var2',…) ,注意括号里的表达式要加引号.例:Q = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)三、实验内容1. 几个可以直接用 Matlab 求微分方程精确解的例子: 例1:求解微分方程22xxexy dxdy -=+,并加以验证.求解本问题的Matlab 程序为:syms x y %line1 y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2diff(y ,x)+2*x*y-x*exp(-x^2) %line3 simplify(diff(y ,x)+2*x*y-x*exp(-x^2)) %line4 说明:(1) 行line1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性,建议写上;(2) 行line2是用命令求出的微分方程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3) 行line3使用所求得的解.这里是将解代入原微分方程,结果应该为0,但这里给出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4) 行line4 用 simplify() 函数对上式进行化简,结果为 0, 表明)(x y y =的确是微分方程的解.例2:求微分方程0'=-+x e y xy 在初始条件e y 2)1(=下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x yy=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x') ezplot(y)微分方程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即xe e y x+=,解函数的图形如图 1:图1例3:求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++035y x dt dy e y x dtdx t在初始条件0|,1|00====t t y x 下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x y t[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t') simple(x); simple(y);ezplot(x,y ,[0,1.3]);axis auto微分方程的特解(式子特别长)以及解函数的图形均略. 2. 用ode23、ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问题的数值解(近似解).例4:求解微分方程初值问题⎪⎩⎪⎨⎧=++-=1)0(2222y x x y dxdy 的数值解,求解范围为区间[0, 0.5].fun=inline('-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fun,[0,0.5],1); x'; y';plot(x,y ,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.1900 0.2400 0.2900 0.3400 0.3900 0.4400 0.4900 0.5000 >> y' ans =1.0000 0.9247 0.8434 0.7754 0.7199 0.6764 0.6440 0.6222 0.6105 0.6084 0.6154 0.6179 图形结果为图 2.图2例 5:求解描述振荡器的经典的 V er der Pol 微分方程.7,0)0(',1)0(,0)1(222====+--μμy y y dtdy y dty d分析:令,,121dtdx x y x ==则.)1(,1221221x x x dtdx x dtdx --==μ先编写函数文件verderpol.m : function xprime = verderpol(t,x) global mu;xprime = [x(2);mu*(1-x(1)^2)*x(2)-x(1)]; 再编写命令文件vdp1.m : global mu; mu = 7; y0=[1;0][t,x] = ode45('verderpol',[0,40],y0); x1=x(:,1);x2=x(:,2); plot(t,x1)图形结果为图3.图33. 用 Euler 折线法求解前面讲到过,能够求解的微分方程也是十分有限的.下面介绍用 Euler 折线法求微分方程的数值解(近似解)的方法.Euler 折线法求解的基本思想是将微分方程初值问题⎪⎩⎪⎨⎧==00)(),,(yx y y x f dx dy化成一个代数方程,即差分方程,主要步骤是用差商hx y h x y )()(-+替代微商dxdy ,于是:⎪⎩⎪⎨⎧==-+)()),(,()()(00x y y x y x f h x y h x y k k k k 记)(,1k k k k x y y h x x =+=+,从而)(1h x y y k k +=+,则有1,,2,1,0).,(,),(1100-=⎪⎩⎪⎨⎧+=+==++n k y x hf y yh x x x y y k k k k k k 例 6:用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=+=1)0(,22y y x y dxdy 的数值解(步长h 取0.4),求解范围为区间[0,2].解:本问题的差分方程为1,,2,1,0).2),( ),(,,4.0,1,021100-=⎪⎪⎪⎩⎪⎪⎪⎨⎧+=+=+====++n k y x y y x f y x hf y y h x x h y x k k k k k k (其中: 相应的Matlab 程序见附录 1. 数据结果为:0 1.0000 0.4000 1.4000 0.8000 2.1233 1.2000 3.1145 1.6000 4.4593 2.0000 6.3074图形结果见图4:图4特别说明:本问题可进一步利用四阶 Runge-Kutta 法求解,读者可将两个结果在一个图中显示,并和精确值比较,看看哪个更“精确”?(相应的 Matlab 程序参见附录 2).四、自己动手1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分方程x e y y y x sin 5'2''=+-的通解.3. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dtdx在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形. 4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.5. 用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=-=1)0(,12'32y y xy y 的数值解(步长h 取0.1),求解范围为区间[0,2].6. 用四阶 Runge-Kutta 法求解微分方程初值问题⎩⎨⎧=-=1)0(,cos 'y x e y y x 的数值解(步长h 取0.1),求解范围为区间[0,3].四阶 Runge-Kutta 法的迭代公式为(Euler 折线法实为一阶 Runge-Kutta 法):1,,2,1,0),()2,2()2,2(),()22(6,),(342312143211100-=⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧++=++=++==++++=+==++n k hL y h x f L L h y h x f L L h y h x f L y x f L L L L L hy y h x x x y y k k k k k k k k k k k k 相应的 Matlab 程序参见附录 2.试用该方法求解第5题中的初值问题. 7. 用 ode45 方法求上述第 6 题的常微分方程初值问题的数值解(近似解),从而利用画图来比较两者间的差异.五、附录附录 1:(fulu1.m)clearf=sym('y+2*x/y^2'); a=0; b=2; h=0.4;n=(b-a)/h+1; x=0; y=1;szj=[x,y]; for i=1:n-1y=y+h*subs(f,{'x','y'},{x,y}); x=x+h;szj=[szj;x,y]; end szjplot(szj(:,1),szj(:,2))附录 2:(fulu2.m)clearf=sym('y-exp(x)*cos(x)'); a=0; b=3; h=0.1;n=(b-a)/h+1; x=0; y=1;szj=[x,y];for i=1:n-1l1=subs(f,{'x','y'},{x,y});l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});l4=subs(f,{'x','y'},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2))。

matlab求解二维抛物线型偏微分方程

matlab求解二维抛物线型偏微分方程

一、简介二维抛物线型偏微分方程是一类常见的偏微分方程,在科学与工程领域有着重要的应用。

利用Matlab求解二维抛物线型偏微分方程是一种常见的数值求解方法,它可以帮助我们快速地得到方程的数值解,并对问题进行分析和研究。

二、二维抛物线型偏微分方程的一般形式二维抛物线型偏微分方程一般可表示为:∂u/∂t = ∂^2u/∂x^2 + ∂^2u/∂y^2 + f(x, y, t)其中,u是未知函数,f(x, y, t)是给定的函数,代表外力或源项。

这类偏微分方程描述了许多现实世界中的问题,如传热传质、扩散反应等。

三、使用Matlab求解二维抛物线型偏微分方程的基本步骤1. 网格划分:将求解区域进行离散化,构建网格。

2. 离散化方程:将偏微分方程进行差分处理,得到一个离散的代数方程组。

3. 求解代数方程组:利用Matlab中的求解器求解得到问题的数值解。

4. 后处理:对数值解进行可视化和分析,得出结论并进行讨论。

四、具体例子考虑二维热传导方程:∂u/∂t = α(∂^2u/∂x^2 + ∂^2u/∂y^2)其中,α是热传导系数。

假设我们要求解一个长方形区域上的热传导问题,边界条件已知,初值条件也已给出。

我们可以利用Matlab 进行数值求解。

五、Matlab代码示例下面是一个简单的Matlab代码示例,用于求解二维热传导方程:定义问题的基本参数Lx = 1; 区域长度Ly = 1; 区域宽度Nx = 100; 网格数Ny = 100;dx = Lx / Nx; 网格步长dy = Ly / Ny;alpha = 0.01; 热传导系数dt = 0.001; 时间步长Nt = 1000; 时间步数初始化温度场u = zeros(Nx, Ny);设置边界条件和初值条件...用有限差分方法离散化方程for n = 1:Nt计算下一个时间步的温度场...end可视化结果...后处理...六、结论利用Matlab求解二维抛物线型偏微分方程是一种高效、便捷的数值方法,能够帮助我们快速地得到问题的数值解,并对问题进行分析和研究。

用MATLAB求解微分方程

用MATLAB求解微分方程
用MATLAB求解微分方程
1. 微分方程的解析解
求微分方程(组)的解析解命令:
dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
结 果:u = tan(t-c)
解 输入命令:dsolve('Du=1+u^2','t')
STEP2
STEP1
解 输入命令: y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
导弹追踪问题
设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度v0(是常数)沿平行于y轴的直线行驶,导弹的速度是5v0,求导弹运行的曲线方程.又乙舰行驶多远时,导弹将它击中? 解法一(解析法)
由(1),(2)消去t整理得模型:
解法二(数值解)
结 果 为:x = (c1-c2+c3+c2e -3t-c3e-3t)e2t y = -c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2t z = (-c1e-4t+c2e-4t+c1-c2+c3)e2t
2、取t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
3、结果如图
图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.

二阶偏微分方程的Matlab有限元法求解

二阶偏微分方程的Matlab有限元法求解

二阶偏微分方程的 Matlab有限元法求解摘要:本文基于偏微分方程有限元法求解原理,运用Matlab中的偏微分方程工具箱(PDE Toolbox)对三类典型的二阶偏微分方程:椭圆型方程、双曲线型方程和抛物线型方程算例进行求解,为求解偏微分方程的提供参考。

关键词:偏微分方程,有限元,Matlab偏微分方程工具箱0引言偏微分方程定解问题是描述许多自然现象或工程问题的最重要的数学模型,应用非常广泛[1]。

解析法只能求解非常简单的偏微分方程,远远不能满足科学研究和工程实际的需要。

随着计算机技术和科学计算的迅速发展,数值解法成为求解偏微分方程的重要工具[2-3]。

数值解法将连续问题离散化,最后将偏微分方程化成线性代数方程组。

根据离散化方法不同,偏微分方程数值解法主要有差分法和有限元法。

有限元法是分片定义试函数与变分原理相结合的产物。

它能适应各种形状的区域,且通用性强,现已成为求解偏微分方程定解问题的一种有效数值方法[4]。

本文首先简述了偏微分方程有限元法原理,然后,对Matlab中的偏微分方程工具箱(Partial Differential Equations Toolbox)的功能和求解思路进行了阐述[5-6],最后,给出了用PDE Toolbox求解椭圆方程、、双曲线方程和抛物线方程的计算实例。

1偏微分方程有限元法原理偏微分方程有限元法的基本思想是将实际上连续的整个求解域进行离散化处理,即用一些假想的面或线将求解域分割为一系列的单元,各个单元之间仅在有限个节点处相互连接。

取未知函数的节点值作为基本未知量,在每个单元上选取一个近似的插值函数表示单元中场函数的分布规律。

利用变分原理来获得单元的刚度方程,然后按一定的规则把所有单元的刚度方程组集合起来,经适当的边界条件处理,便得到整个系统的总体方程组。

这样,偏微分方程便转化为一组常微分方程。

最后,求解总体方程组,得到节点值和用插值函数确定整个求解域上的场函数。

matlab解偏微分方程

matlab解偏微分方程

matlab解偏微分方程Matlab是一种非常强大的数学计算工具,它可以用于解决各种数学问题。

在本文中,我们将学习如何使用Matlab解偏微分方程。

偏微分方程是一类包含未知函数的偏导数的方程。

通常,解偏微分方程是困难的,需要使用复杂的数学方法。

然而,Matlab可以大大简化这个过程。

在Matlab中,我们可以使用pdepe函数来解偏微分方程。

pdepe函数采用一个偏微分方程的系统,并返回一个包含解的向量的矩阵。

下面是一个解二维扩散方程的示例程序:%定义二维扩散方程 function [c,f,s] = diffusionpde(x,t,u,DuDx)c = 1; %系数f = DuDx; %带有时间和空间导数的项s = 0; %不带导数的项end%定义边界条件(例)function [pl,ql,pr,qr] =diffusionbc(xl,ul,xr,ur,t)pl = 0; ql = 1; %左边界(u=0)pr = 0; qr = 1; %右边界(u=0)end%定义初始条件(例)function u0 = diffusionic(x)u0 = sin(pi*x); %sin(pi*x)是初始条件方程end%主程序x = linspace(0,1,50); %空间网格t = linspace(0,1,10); %时间网格sol =pdepe(0,@diffusionpde,@diffusionic,@diffusionbc,x,t );u = sol(:,:,1); %提取第一个解%绘制解surfc(x,t,u)xlabel('位置')ylabel('时间')title('二维扩散方程的解')从上述程序中,我们可以看到pdepe的使用方法。

在主程序中,我们选择了空间和时间网格,然后定义了偏微分方程、初始条件和边界条件的函数。

最后,我们调用pdepe函数,并将解存储在变量sol中。

偏微分方程的MATLAB解法

偏微分方程的MATLAB解法

偏微分⽅程的MATLAB解法引⾔偏微分⽅程定解问题有着⼴泛的应⽤背景。

⼈们⽤偏微分⽅程来描述、解释或者预见各种⾃然现象,并⽤于科学和⼯程技术的各个领域fll。

然⽽,对于⼴⼤应⽤⼯作者来说,从偏微分⽅程模型出发,使⽤有限元法或有限差分法求解都要耗费很⼤的⼯作量,才能得到数值解。

现在,MATLAB PDEToolbox已实现对于空间⼆维问题⾼速、准确的求解过程。

偏微分⽅程如果⼀个微分⽅程中出现的未知函数只含⼀个⾃变量,这个⽅程叫做常微分⽅程,也简称微分⽅程;如果⼀个微分⽅程中出现多元函数的偏导数,或者说如果未知函数和⼏个变量有关,⽽且⽅程中出现未知函数对⼏个变量的导数,那么这种微分⽅程就是偏微分⽅程。

常⽤的⽅法有变分法和有限差分法。

变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数⽅程,然后⽤计算机进⾏计算;还有⼀种更有意义的模拟法,它⽤另⼀个物理的问题实验研究来代替所研究某个物理问题的定解。

虽然物理现象本质不同,但是抽象地表⽰在数学上是同⼀个定解问题,如研究某个不规则形状的物体⾥的稳定温度分布问题,由于求解⽐较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从⽽也解决了所研究的稳定温度场中的温度分布问题。

随着物理科学所研究的现象在⼴度和深度两⽅⾯的扩展,偏微分⽅程的应⽤范围更⼴泛。

从数学⾃⾝的⾓度看,偏微分⽅程的求解促使数学在函数论、变分法、级数展开、常微分⽅程、代数、微分⼏何等各⽅⾯进⾏发展。

从这个⾓度说,偏微分⽅程变成了数学的中⼼。

⼀、MATLAB⽅法简介及应⽤1.1 MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,⽤于算法开发、数据可视化、数据分析以及数值计算的⾼级技术计算语⾔和交互式环境,主要包括MATLAB和Simulink两⼤部分。

1.2 Matlab主要功能数值分析数值和符号计算⼯程与科学绘图控制系统的设计与仿真数字图像处理数字信号处理通讯系统设计与仿真财务与⾦融⼯程1.3 优势特点1) ⾼效的数值计算及符号计算功能,能使⽤户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的⽤户界⾯及接近数学表达式的⾃然化语⾔,使学者易于学习和掌握;4) 功能丰富的应⽤⼯具箱(如信号处理⼯具箱、通信⼯具箱等) ,为⽤户提供了⼤量⽅便实⽤的处理⼯具。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11.46*temp));
MATLAB偏微分方程求解 2
• 初值条件改写为
• %% 初值条件函数 • function u0=pdeic(x) • u0=[1;0];
MATLAB偏微分方程求解 2
• 边界条件改写为
• %% 边界条件函数 • function
[pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t) • %a表示左边界,b表示右边界 • pa=[0;ua(2)];qa=[1;0]; • pb=[ub(1)-1;0];qb=[0;1];
MATLAB偏微分方程求解 2
• MATLAB提供了两种方法解决PDE 问题:① pdepe()函数,它可以求解一般的PDEs,具有较 大的通用性,但只支持命令行形式调用。
• ②PDE 工具箱,可以求解特殊PDE 问题, PDEtool 有较大的局限性,比如只能求解二阶 PDE 问题,并且不能解决偏微分方程组,但是它 提供了GUI界面,从繁杂的编程中解脱出来了, 同时还可以通过File->Save As直接生成M代码
MATLAB偏微分方程求解 2
• 主讲人:
MATLAB偏微分方程求解 2
• 微分方程的MATLAB求解包含 • 1:常微分方程的MATLAB求解(上
节课已经讲过)这里不再赘述。
• 2:偏微分方程的MATLAB求解(本 次教学内容)
MATLAB偏微分方程求解 2
• 偏微分方程(Partial Differential Equation ,简称PDE)指含有未知函数及其偏导数 的方程。描述自变量、未知函数及其偏导 数之间的关系。
x t x
x
x
MATLAB偏微分方程求解 2
• @pdefun:是PDE 的问题描述函数,它必 须换成下面的标准形式
c (x ,t,u , u ) u x m [x m f(x ,t,u , u ) ] st (u ,x u ,), (1
x t x
x
x
• PDE 就可以编写下面的入口函数
MATLAB偏微分方程求解 2
c (x ,t,u , u ) u x m [x m f(x ,t,u , u ) ] st (u ,x u ,), (1
x t x
x
x
• m:就是对应于(式1)中相关参数 • x,t:就是对应于(式1)中自变量
MATLAB偏微分方程求解 2
• sol:是一个三维数组,sol(:,:,i)表示ui的解, 换句话说uk对应x(i)和t(j)时的解为sol(i,j,k)
• 偏微分方程分为①线性偏微分方程式与② 非线性偏微分方程式,常常有几个解而且 涉及额外的边界条件。
常微分方程:在微分方程中,若自变量的个数只有一个的微分方程。
偏微分方程:自变量的个数有两个或两个以上的微分方程。
MATLAB偏微分方程求解 2
• 求解偏微分方程的数值方法: • 1. 有限元法(Finite Element Method, FEM)---
是name后边的名字'NumberTitle','off'是关掉默认显示名字。 • subplot(211) • surf(x,t,sol(:,:,1))%sol(:,:,i)表示ui的解 • title('The Solution of u_1') • xlabel('X') • ylabel('T') • zlabel('U') • subplot(212) • surf(x,t,sol(:,:,2))%sol(:,:,i)表示ui的解 • title('The Solution of u_2') • xlabel('X') • ylabel('T') • zlabel('U')
• [c,f,s]=pdefun(x,t,u,du)
• m,x,t就是对应于(式1)中相关参数和自变量, du是u的一阶导数,由给定的输入变量即可 表示出出c,f,s这三个函数
MATLAB偏微分方程求解 2
• @pdeic:是PDE 的初值条件,必须化为下 面的形式
u(x,t0)u0
• 我们使用下面的简单的函数来描述为 u0=pdeic(x)
hp-FEM • 2. 有限体积法(Finite Volume Method, FVM) • 3. 有限差分法(Finite Difference Method, FDM)。
• 其它:广义有限元法(Generalized Finite Element Method, FFEM)、扩展有限元法(eXtended Finite Element Method, XFEM)、无网格有限元法(Meshfree Finite Element Method)、离散迦辽金有限元法(Discontinuous Galerkin Finite Element Method, DGFEM)等。
• 使用pdeval()直接计算某个点的函数值???
MATLAB偏微分方程求解 2
• 直接求解一般偏微分方程(组),它的调用格式 为 sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)
输出 参数
参数
问题描 述函数
初值 条件
边界 条件
自变 量
ห้องสมุดไป่ตู้
c (x ,t,u , u ) u x m [x m f(x ,t,u , u ) ] st (u ,x u ,), (1
MATLAB偏微分方程求解 2
• 例:
初值条 件 边界条件
MATLAB偏微分方程求解 2
• 【解】第一步根据(1)对照给出的偏微分 方程,则原方程可以改写为
MATLAB偏微分方程求解 2
• %% 目标PDE函数 • function [c,f,s]=pdefun (x,t,u,du) • c=[1;1]; • f=[0.024*du(1);0.17*du(2)]; • temp=u(1)-u(2); • s=[-1;1].*(exp(5.73*temp)-exp(-
MATLAB偏微分方程求解 2
• @pdebc:是PDE的边界条件描述函数,必 须先化为下面的形式
p(tu x , ),q(tu ,x* )f ,(.x tu ,, u ,)0 x
• 于是边值条件可以编写下面函数描述为 [pa,qa,pb,qb]=pdebc(x,t,u,du)其中a 表示下 边界,b 表示下边界
MATLAB偏微分方程求解 2
• clc • x=0:0.05:1; • t=0:0.05:2; • m=0; • sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t); • figure('numbertitle','off','name','PDE Demo——by Matlabsky')%创建个窗口,窗口名字
相关文档
最新文档