一维偏微分方程的pdepe(matlab)函数 解法
一维偏微分方程的pdepe(matlab)函数 解法
本文根据matlab帮助进行加工,根据matlab帮助上的例子,帮助更好的理解一维偏微分方程的pdepe函数解法,主要加工在于程序的注释上。
ExamplesExample 1.This example illustrates the straightforward formulation, computation, and plotting of the solution of a single PDE.This equation holds on an intervalfor times.The PDE satisfies the initial conditionand boundary conditionsIt is convenient to use subfunctions to place all the functions required by pdepe in a single function.function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
%其中x1、x2、N分别为起始值、终止值、元素个数。
若缺省N,默认点数为100t = linspace(0,2,5);sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);% Extract the first solution component as u.u = sol(:,:,1);% A surface plot is often a good way to study a solution.surf(x,t,u)title('Numerical solution computed with 20 mesh points.')xlabel('Distance x')ylabel('Time t')% A solution profile can also be illuminating.figureplot(x,u(end,:))title('Solution at t = 2')xlabel('Distance x')ylabel('u(x,2)')% --------------------------------------------------------------function [c,f,s] = pdex1pde(x,t,u,DuDx)c = pi^2;f = DuDx;s = 0;% --------------------------------------------------------------function u0 = pdex1ic(x)u0 = sin(pi*x);% --------------------------------------------------------------function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = pi * exp(-t);qr = 1;In this example, the PDE, initial condition, and boundary conditions are coded in subfunctions pdex1pde, pdex1ic, and pdex1bc.The surface plot shows the behavior of the solution.The following plot shows the solution profile at the final value of t (i.e., t = 2).我们再将该问题复杂化,比如在原方程右边加一项,对于标准形式,其余条件不变function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
matlab求解最简单的一阶偏微分方程
matlab求解最简单的一阶偏微分方程一、引言在科学和工程领域,偏微分方程是非常重要的数学工具,用于描述各种现象和过程。
而MATLAB作为一种强大的数值计算软件,可以用来求解各种复杂的偏微分方程。
本文将以MATLAB求解最简单的一阶偏微分方程为主题,探讨其基本原理、数值求解方法以及具体实现过程。
二、一阶偏微分方程的基本原理一阶偏微分方程是指只含有一个未知函数的偏导数的微分方程。
最简单的一阶偏微分方程可以写成如下形式:\[ \frac{\partial u}{\partial t} = F(x, t, u, \frac{\partial u}{\partial x}) \]其中,\(u(x, t)\) 是未知函数,\(F(x, t, u, \frac{\partial u}{\partial x})\) 是给定的函数。
一阶偏微分方程可以描述很多实际问题,比如热传导、扩散等。
在MATLAB中,我们可以使用数值方法求解这类方程。
三、数值求解方法1. 有限差分法有限差分法是一种常用的数值求解偏微分方程的方法。
其基本思想是用离散的方式来逼近偏导数,然后将偏微分方程转化为代数方程组。
在MATLAB中,我们可以使用内置的求解器来求解离散化后的代数方程组。
2. 特征线法特征线法是另一种常用的数值求解方法,它利用特征线方程的特点来求解偏微分方程。
这种方法在求解一维情况下的偏微分方程时特别有效,可以提高求解的效率和精度。
四、MATLAB求解过程在MATLAB中,我们可以使用`pdepe`函数来求解一阶偏微分方程。
该函数可以针对特定的方程和边界条件,利用有限差分法进行离散化求解。
下面给出一个具体的例子来说明如何使用MATLAB求解最简单的一阶偏微分方程。
假设我们要求解如下的一维热传导方程:\[ \frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2} \]其中,\(\alpha\) 是热传导系数。
pdepe解偏微分方程
pdepe解偏微分方程pdepe 是 MATLAB 中的一个函数,用于求解偏微分方程。
它的一般调用格式是:solpdepe(m,@pdefun,@pdeic,@pdebc,x,t)其中,m 是一个整数,表示偏微分方程的阶数。
pdefun 是偏微分方程的描述函数,必须写成如下标准形式:c[1;1];yu(1)-u(2);F[exp(5.73y)-exp(-11.46y)];s[-1;1];f[0.02 4ux(1);0.017ux(2)];pdeic 是偏微分方程的初始条件,可以用 MATLAB 中的函数来描述:function[u0]pdeic(x)u0[1;0];pdebc 是偏微分方程的边界条件,它的标准形式为:p(x,t,u)q(x,t,u).f(x,t,u,ux)0;其中,p(x,t,u) 和 q(x,t,u) 是系数,f(x,t,u,ux) 是函数,可以由用户自定义。
x 和 t 是偏微分方程的输入变量,可以自由选择。
举例来说,要求解下面的偏微分方程组:yu(1)-u(2)=f(x,t)u(1)=g(x,t)u(2)=h(x,t)可以使用以下代码来求解:m=1; % 设置偏微分方程的阶数pdefun=@(x,t,u,ux)[c;yu(1)-u(2);F[exp(5.73y)-exp(-11.46y)];pdeic=@(x) [u(1);u(2)];pdebc=@(x,t,u,ux) [p(x,t,u);q(x,t,u).f(x,t,u,ux)];x0=0.05; % 设置输入变量的范围t0=0.05; % 设置输入变量的时间范围x=x0:0.01:x0+0.05; % 设置输入变量的网格t=t0:0.01:t0+0.05; % 设置输入变量的时间网格[u1,u2,u3]=pdepe(m,pdefun,pdeic,pdebc,x,t); % 求解偏微分方程组figure;plot3(x,t,u1);title("u1(x,t)");xlabel("x");ylabel("t");label("u1");figure;plot3(x,t,u2);title("u2(x,t)");xlabel("x");ylabel("t");label("u2");figure;plot3(x,t,u3);title("u3(x,t)");xlabel("x");ylabel("t");label("u3");其中,pdefun 和 pdeic 分别定义了偏微分方程的描述函数和初始条件,pdebc 定义了偏微分方程的边界条件。
(完整版)偏微分方程的MATLAB解法
引言偏微分方程定解问题有着广泛的应用背景。
人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。
然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。
现在,MATLAB PDEToolbox已实现对于空间二维问题高速、准确的求解过程。
偏微分方程如果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。
常用的方法有变分法和有限差分法。
变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数方程,然后用计算机进行计算;还有一种更有意义的模拟法,它用另一个物理的问题实验研究来代替所研究某个物理问题的定解。
虽然物理现象本质不同,但是抽象地表示在数学上是同一个定解问题,如研究某个不规则形状的物体里的稳定温度分布问题,由于求解比较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从而也解决了所研究的稳定温度场中的温度分布问题。
随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。
从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。
从这个角度说,偏微分方程变成了数学的中心。
一、MATLAB方法简介及应用1.1 MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
1.2 Matlab主要功能数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程1.3 优势特点1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
matlab求解偏微分方程组
matlab求解偏微分方程组偏微分方程组是数学中的重要问题之一,它描述了自然界中许多现象的变化规律。
而matlab作为一种强大的数值计算软件,可以用来求解偏微分方程组,为科学研究和工程应用提供了便利。
在matlab中,求解偏微分方程组可以使用pdepe函数。
pdepe函数是一个用于求解偏微分方程组的通用求解器,可以处理各种类型的偏微分方程组。
它的基本用法是定义一个偏微分方程组的初始条件、边界条件和方程形式,然后调用pdepe函数进行求解。
首先,我们需要定义偏微分方程组的初始条件和边界条件。
初始条件是指在初始时刻各个变量的取值,而边界条件是指在空间上的边界上各个变量的取值。
这些条件可以是数值或函数形式的。
接下来,我们需要定义偏微分方程组的方程形式。
方程形式是指偏微分方程组的具体形式,包括方程的类型、系数和非线性项等。
在matlab中,可以使用函数句柄的形式来定义方程形式。
然后,我们可以调用pdepe函数进行求解。
pdepe函数的基本语法是:sol = pdepe(m,@pdex1,@pdex2,@pdex3,x,t)其中,m是一个表示方程个数的整数,@pdex1、@pdex2和@pdex3分别是定义初始条件、边界条件和方程形式的函数句柄,x和t分别是表示空间和时间的向量。
最后,我们可以通过sol来获取求解结果。
sol是一个包含求解结果的三维数组,其中第一维表示时间,第二维表示空间,第三维表示方程个数。
我们可以通过索引来获取特定时间和空间点的解。
总之,matlab提供了强大的工具来求解偏微分方程组。
通过定义初始条件、边界条件和方程形式,然后调用pdepe函数进行求解,我们可以得到偏微分方程组的数值解。
这为科学研究和工程应用提供了便利,使得我们能够更好地理解和预测自然界中的变化规律。
有限差分和Matlabpde求解一维稳态传热问题
有限差分和pde 函数求解一维定态热传导方程分别用有限差分方法和pde 函数求解一维定态热传导方程,初始条件和边界条件,热扩散系数α=0.00001,22T T t x α∂∂=∂∂ (1) 求解过程:1. 用Tylaor 展开法推导出FTCS 格式的差分方程首先对T 进行泰勒展开得到如下两式子:23123123...232!3!23...232!3!nnnn n j j jj j nnnn n j jjjjttT T t x x TTx T T T t t t T T T x x x ++∆∆=+∆+++∆∆=+∆+++⎛⎫⎛⎫∂∂∂⎛⎫⎪ ⎪⎪∂∂∂⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫∂∂∂⎛⎫⎪⎪ ⎪∂∂∂⎝⎭⎝⎭⎝⎭上述两个方程变换得:()1122323...23nnn n n n n j j j j j j jT T T T T t T t T o t t t t t t ++--⎛⎫⎛⎫∂∆∂∆∂⎛⎫=--=+∆ ⎪ ⎪ ⎪∂∆∂∂∆⎝⎭⎝⎭⎝⎭(2)223123...23nnn n n j j jj j T T T x T x T x x x x --⎛⎫⎛⎫∂∆∂∆∂⎛⎫=-- ⎪ ⎪ ⎪∂∆∂∂⎝⎭⎝⎭⎝⎭ ()1232422342222...3!4!nnnn n n j j j j j j T T T T x T x T x x x x x x +-⎛⎫⎛⎫⎛⎫∂∂∆∂∆∂⎛⎫=--- ⎪ ⎪ ⎪ ⎪∂∆∆∂∂∂⎝⎭⎝⎭⎝⎭⎝⎭()()21122222-n n n j j j T T T To x x x+--+⎛⎫∂=+∆ ⎪∆∂⎝⎭(3)将上述式子(2)(3)代入(1)得:12112222()nnn nn n n j j j j j j jT T T T T T T O t x t x t x αα+-+--+⎛⎫∂∂⎛⎫-=-+∆∆ ⎪ ⎪∂∂∆∆⎝⎭⎝⎭,(4)2.方程的相容性和稳定性讨论:上述方程截项为:2233242334()...4...23!3!4!n nn n j j j jt T t T x T x T O t x t t x x α⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫∆∂∆∂∆∂∆∂ ⎪∆∆=--++ ⎪ ⎪ ⎪ ⎪ ⎪∂∂∂∂⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭, 由于(),0,0lim x t o t x ∆∆→∆∆=所以方程有相容性其经过傅里叶变换后,只有当,t x ∆∆满足下列条件时,方程具有较好的稳定性:2220sin 12m k xt x α∆∆≤≤∆ 其中m Nk Lπ=N 为节点个数,L 为边界长度由于:22sin sin 122m k x N x L π∆∆⎛⎫== ⎪⎝⎭所以当20.5ts x α∆=≤∆时方程具有稳定性3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。
matlab偏微分方程
matlab偏微分方程Matlab可以用于求解偏微分方程(PDE)。
以下是一些示例:1. 热传导方程热传导方程描述了温度随时间和空间的变化,由以下方程给出:$\frac{\partial T}{\partial t} = \alpha \frac{\partial^2 T}{\partialx^2}$在Matlab中,可以使用“pdepe”函数来求解这个问题。
具体来说,需要指定初始条件和边界条件,并设置物理参数。
2. 波动方程波动方程描述了波的传播,由以下方程给出:$\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partialx^2}$在Matlab中,可以使用“pdepe”函数来求解这个问题。
需要指定初始条件和边界条件,并设置物理参数。
3. Navier-Stokes方程Navier-Stokes方程描述了流体的运动,由以下方程给出:$\frac{\partial u}{\partial t} + u \cdot \nabla u = -\frac{1}{\rho}\nabla p + \nu \nabla^2 u$在Matlab中,可以使用PDE工具箱进行求解。
需要指定初始条件、边界条件和物理参数。
4. Schrödinger方程Schrödinger方程描述了量子力学中的波函数演化,由以下方程给出:$i \hbar \frac{\partial \psi}{\partial t} = -\frac{\hbar^2}{2m}\nabla^2 \psi + V(x) \psi$在Matlab中,可以使用PDE工具箱或ODE工具箱进行求解。
需要指定初始条件、边界条件和物理参数。
以上仅是部分示例,Matlab还可以用于求解其他类型的偏微分方程。
偏微分方程(PDEs)的MATLAB数值解法
偏微分方程的MATLAB求解精讲©MA TLAB求解微分/偏微分方程,一直是一个头大的问题,两个字,“难过”,由于MA TLAB对LaTeX的支持有限,所有方程必须化成MA TLAB可接受的标准形式,不支持像其他三个数学软件那样直接傻瓜式输入,这个真把人给累坏了!不抱怨了,还是言归正传,回归我们今天的主体吧!MA TLAB提供了两种方法解决PDE问题,一是pdepe()函数,它可以求解一般的PDEs,据用较大的通用性,但只支持命令行形式调用。
二是PDE工具箱,可以求解特殊PDE问题,PDEtool有较大的局限性,比如只能求解二阶PDE问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File->Save As直接生成M代码一、一般偏微分方程组(PDEs)的MA TLAB求解 (3)1、pdepe函数说明 (3)2、实例讲解 (4)二、PDEtool求解特殊PDE问题 (6)1、典型偏微分方程的描述 (6)(1)椭圆型 (6)(2)抛物线型 (6)(3)双曲线型 (6)(4)特征值型 (7)2、偏微分方程边界条件的描述 (8)(1)Dirichlet条件 (8)(2)Neumann条件 (8)3、求解实例 (9)一、一般偏微分方程组(PDEs)的MATLAB 求解1、pdepe 函数说明MA TLAB 语言提供了pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)【输入参数】@pdefun :是PDE 的问题描述函数,它必须换成下面的标准形式(,,)[(,,,)](,,,)()m m u u u uc x t x x f x t u s x t u x t x x x−∂∂∂∂∂=+∂∂∂∂∂式1 这样,PDE 就可以编写下面的入口函数 [c,f,s]=pdefun(x,t,u,du)m,x,t 就是对应于(式1)中相关参数,du 是u 的一阶导数,由给定的输入变量即可表示出出c,f,s 这三个函数@pdebc :是PDE 的边界条件描述函数,必须先化为下面的形式(,,)(,,).*(,,,)0up x t u q x t u f x t u x∂+=∂ 于是边值条件可以编写下面函数描述为 [pa,qa,pb,qb]=pdebc(x,t,u,du)其中a 表示下边界,b 表示下边界@pdeic :是PDE 的初值条件,必须化为下面的形式00(,)u x t u =我们使用下面的简单的函数来描述为 u0=pdeic(x)m,x,t :就是对应于(式1)中相关参数【输出参数】sol :是一个三维数组,sol(:,:,i)表示u i 的解,换句话说u k 对应x(i)和t(j)时的解为sol(i,j,k)通过sol ,我们可以使用pdeval()直接计算某个点的函数值2、实例讲解试求解下面的偏微分2111222221220.024()0.17()u u F u u t xu u F u u tx ∂∂=−− ∂∂ ∂∂ =−− ∂∂ 其中, 5.7311.46()x x F x e e −=−,且满足初始条件12(,0)1,(,0)0u x u x ==及边界条件1221(0,)0,(0,)0,(1,)1,(1,)0u ut u t u t t x x∂∂====∂∂【解】(1)对照给出的偏微分方程,根据标注形式,则原方程可以改写为111222120.024()1.*1()0.17u u F u u x u u F u u t t x ∂−−∂∂∂=+ ∂−∂∂∂可见m=0,且1122120.024()1,,1()0.17u F u u x c f s u F u u x ∂−− ∂===∂−∂%% 目标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(-11.46*temp));(2)边界条件改写为12011010.*.*00000u f f u −+=+=下边界上边界%% 边界条件函数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];(3)初值条件改写为1210u u =%% 初值条件函数function u0=pdeic(x) u0=[1;0];(4)最后编写主调函数 clcx=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') subplot(211)surf(x,t,sol(:,:,1)) title('The Solution of u_1') xlabel('X') ylabel('T') zlabel('U') subplot(212)surf(x,t,sol(:,:,2)) title('The Solution of u_2') xlabel('X') ylabel('T') zlabel('U')二、PDEtool 求解特殊PDE 问题MATLAB 的偏微分工具箱(PDE toolbox)可以比较规范的求解各种常见的二阶偏微分方程,但是惋惜的是只能求解特殊二阶的PDE 问题,并且不支持偏微分方程组!PDE toolbox 支持命令行形式求解PDE 问题,但是要记住那些命令以及调用形式真的很累人,还好MATLAB 提供了GUI 可视交互界面pdetool ,在pdetool 中可以很方便的求解一个PDE 问题,并且可以帮我们直接生成M 代码(File->Save As)。
matlab 偏微分方程
MATLAB是一个强大的数值计算环境,可以用来解决各种各样的数学问题,包括偏微分方程。
下面是一个简单的例子,展示如何在MATLAB中解决一维的偏微分方程。
假设我们要解决以下一维的热传导方程:
∂u∂t=∂2u∂x2
在给定的初始条件和边界条件下:
u(x,0)=sin(πx)u(0,t)=0, u(1,t)=0
我们可以使用MATLAB中的pdepe函数来求解这个问题。
以下是一个简单的MATLAB代码示例:
```matlab
定义参数
T = 1; 最终时间
h = 0.01; 空间步长
t = 0:T/h:T; 时间向量
x = 0:h:1; 空间向量
n = length(x); 空间点的数量
m = length(t); 时间点的数量
初始化矩阵存储解
U = zeros(m, n);
U(:,1) = sin(pi*x); 初始条件
定义偏微分方程
pdepe('u_tt', U, t, x, 'heat', 'periodic');
使用pdepe求解偏微分方程
[U, ~] = pdepe(U, t, x);
绘制结果
surf(x, t, U);
```
这个代码示例使用了MATLAB的pdepe函数,这是一个用于求解偏微分方程的函数。
在上面的代码中,我们首先定义了参数,然后初始化了存储解的矩阵。
然后,我们定义了偏微分方程,并使用pdepe 函数求解它。
最后,我们使用surf函数绘制了结果。
Matlab偏微分方程求解方法
Matlab 偏微分方程求解方法目录:§1 Function Summary on page 10-87§2 Initial Value Problems on page 10-88§3 PDE Solver on page 10-89§4 Integrator Options on page 10-92§5 Examples” on page 10-93§1 Function Summary1.1 PDE Solver” on page 10-871,2 PDE Helper Functi on” on page 10-871.3 PDE SolverThis is the MATLAB PDE solver.PDE Helper Function§2 Initial Value Problemspdepe solves systems of parabolic and elliptic PDEs in one spatial variable x and time t, of the form)xu ,u ,t ,x (s ))x u ,u ,t ,x (f x (x x t u )x u ,u ,t ,x (c m m ∂∂+∂∂∂∂=∂∂∂∂- (10-2) The PDEs hold for b x a ,t t t f 0≤≤≤≤.The interval [a, b] must be finite. mcan be 0, 1, or 2, corresponding to slab, cylindrical, or spherical symmetry,respectively. If m > 0, thena ≥0 must also hold.In Equation 10-2,)x /u ,u ,t ,x (f ∂∂ is a flux term and )x /u ,u ,t ,x (s ∂∂ is a source term. The flux term must depend on x /u ∂∂. The coupling of the partial derivatives with respect to time is restricted to multiplication by a diagonal matrix )x /u ,u ,t ,x (c ∂∂. The diagonal elements of this matrix are either identically zero or positive. An element that is identically zero corresponds to an elliptic equation and otherwise to a parabolic equation. There must be at least one parabolic equation. An element of c that corresponds to a parabolic equation can vanish at isolated values of x if they are mesh points.Discontinuities in c and/or s due to material interfaces are permitted provided that a mesh point is placed at each interface.At the initial time t = t0, for all x the solution components satisfy initial conditions of the form)x (u )t ,x (u 00= (10-3)At the boundary x = a or x = b, for all t the solution components satisfy a boundary condition of the form0)xu ,u ,t ,x (f )t ,x (q )u ,t ,x (p =∂∂+ (10-4) q(x, t) is a diagonal matrix with elements that are either identically zero or never zero. Note that the boundary conditions are expressed in terms of the f rather than partial derivative of u with respect to x-x /u ∂∂. Also, ofthe two coefficients, only p can depend on u.§3 PDE Solver3.1 The PDE SolverThe MATLAB PDE solver, pdepe, solves initial-boundary value problems for systems of parabolic and elliptic PDEs in the one space variable x and time t.There must be at least one parabolic equation in the system.The pdepe solver converts the PDEs to ODEs using a second-order accurate spatial discretization based on a fixed set of user-specified nodes. The discretization method is described in [9]. The time integration is done with ode15s. The pdepe solver exploits the capabilities of ode15s for solving the differential-algebraic equations that arise when Equation 10-2 contains elliptic equations, and for handling Jacobians with a specified sparsity pattern. ode15s changes both the time step and the formula dynamically.After discretization, elliptic equations give rise to algebraic equations. If the elements of the initial conditions vector that correspond to elliptic equations are not “consistent” with the discretization, pdepe tries to adjust them before eginning the time integration. For this reason, the solution returned for the initial time may have a discretization error comparable to that at any other time. If the mesh is sufficiently fine, pdepe can find consistent initial conditions close to the given ones. If pdepe displays amessage that it has difficulty finding consistent initial conditions, try refining the mesh. No adjustment is necessary for elements of the initial conditions vector that correspond to parabolic equations.PDE Solver SyntaxThe basic syntax of the solver is:sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)Note Correspondences given are to terms used in “Initial Value Problems” on page 10-88.The input arguments arem: Specifies the symmetry of the problem. m can be 0 =slab, 1 = cylindrical, or 2 = spherical. It corresponds to m in Equation 10-2. pdefun: Function that defines the components of the PDE. Itcomputes the terms f,c and s in Equation 10-2, and has the form[c,f,s] = pdefun(x,t,u,dudx)where x and t are scalars, and u and dudx are vectors that approximate the solution and its partial derivative with respect to . c, f, and s are column vectors. c stores the diagonal elements of the matrix .icfun: Function that evaluates the initial conditions. It has the formu = icfun(x)When called with an argument x, icfun evaluates and returns the initial values of the solution components at x in the column vector u.bcfun:Function that evaluates the terms and of the boundary conditions. Ithas the form[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)where ul is the approximate solution at the left boundary xl = a and ur is the approximate solution at the right boundary xr = b. pl and ql are column vectors corresponding to p and the diagonal of q evaluated at xl. Similarly, pr and qr correspond to xr. When m>0 and a = 0, boundedness of the solution near x = 0 requires that the f vanish at a = 0. pdepe imposes this boundary condition automatically and it ignores values returned in pl and ql.xmesh:Vector [x0, x1, ..., xn] specifying the points at which a numerical solution is requested for every value in tspan. x0 and xn correspond to a and b , respectively. Second-order approximation to the solution is made on the mesh specified in xmesh. Generally, it is best to use closely spaced mesh points where the solution changes rapidly. pdepe does not select the mesh in automatically. You must provide an appropriate fixed mesh in xmesh. The cost depends strongly on the length of xmesh. When , it is not necessary to use a fine mesh near to x=0 account for the coordinate singularity.The elements of xmesh must satisfy x0 < x1 < ... < xn.The length of xmesh must be ≥3.tspan:Vector [t0, t1, ..., tf] specifying the points at which a solution is requested for every value in xmesh. t0 and tf correspond tot and f t,respectively.pdepe performs the time integration with an ODE solver that selects both the time step and formula dynamically. The solutions at the points specified in tspan are obtained using the natural continuous extension of the integration formulas. The elements of tspan merely specify where you want answers and the cost depends weakly on the length of tspan.The elements of tspan must satisfy t0 < t1 < ... < tf.The length of tspan must be ≥3.The output argument sol is a three-dimensional array, such that•sol(:,:,k) approximates component k of the solution .•sol(i,:,k) approximates component k of the solution at time tspan(i) and mesh points xmesh(:).•sol(i,j,k) approximates component k of the solution at time tspan(i) and the mesh point xmesh(j).4.2 PDE Solver OptionsFor more advanced applications, you can also specify as input arguments solver options and additional parameters that are passed to the PDE functions.options:Structure of optional parameters that change the default integration properties. This is the seventh input argument.sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)See “Integrator Options” on page 10-92 for more information.Integrator OptionsThe default integration properties in the MATLAB PDE solver are selected to handle common problems. In some cases, you can improve solver performance by overriding these defaults. You do this by supplying pdepe with one or more property values in an options structure.sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)Use odeset to create the options structure. Only those options of the underlying ODE solver shown in the following table are available for pdepe.The defaults obtained by leaving off the input argument options are generally satisfactory. “Integrator Options” on page 10-9 tells you how to create the structure and describes the properties.PDE Properties§4 Examples•“Single PDE” on page 10-93•“System of PDEs” on page 10-98•“Additional Examples” on page 10-1031.Single PDE• “Solving the Equation” on page 10-93• “Evaluating the Solution” on page 10-98Solving the Equation. This example illustrates the straightforward formulation, solution, and plotting of the solution of a single PDE222x u t u ∂∂=∂∂π This equation holds on an interval 1x 0≤≤ for times t ≥ 0. At 0t = the solution satisfies the initial condition x sin )0,x (u π=.At 0x =and 1x = , the solution satisfies the boundary conditions0)t ,1(xu e ,0)t ,0(u t =∂∂+π=- Note The demo pdex1 contains the complete code for this example. The demo uses subfunctions to place all functions it requires in a single MATLAB file.To run the demo type pdex1 at the command line. See “PDE Solver Syntax” on page 10-89 for more information. 1 Rewrite the PDE. Write the PDE in the form)xu ,u ,t ,x (s ))x u ,u ,t ,x (f x (x x t u )x u ,u ,t ,x (c m m ∂∂+∂∂∂∂=∂∂∂∂- This is the form shown in Equation 10-2 and expected by pdepe. For this example, the resulting equation is0x u x x x t u 002+⎪⎭⎫ ⎝⎛∂∂∂∂=∂∂π with parameter and the terms 0m = and the term0s ,xu f ,c 2=∂∂=π=2 Code the PDE. Once you rewrite the PDE in the form shown above (Equation 10-2) and identify the terms, you can code the PDE in a function that pdepe can use. The function must be of the form[c,f,s] = pdefun(x,t,u,dudx)where c, f, and s correspond to the f ,c and s terms. The code below computes c, f, and s for the example problem.function [c,f,s] = pdex1pde(x,t,u,DuDx)c = pi^2;f = DuDx;s = 0;3 Code the initial conditions function. You must code the initial conditions in a function of the formu = icfun(x)The code below represents the initial conditions in the function pdex1ic. Partial Differential Equationsfunction u0 = pdex1ic(x)u0 = sin(pi*x);4 Code the boundary conditions function. You must also code the boundary conditions in a function of the form[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t) The boundary conditions, written in the same form as Equation 10-4, are0x ,0)t ,0(x u .0)t ,0(u ==∂∂+and1x ,0)t ,1(xu .1e t ==∂∂+π- The code below evaluates the components )u ,t ,x (p and )u ,t ,x (q of the boundary conditions in the function pdex1bc.function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = pi * exp(-t);qr = 1;In the function pdex1bc, pl and ql correspond to the left boundary conditions (x=0 ), and pr and qr correspond to the right boundary condition (x=1).5 Select mesh points for the solution. Before you use the MATLAB PDE solver, you need to specify the mesh points at which you want pdepe to evaluate the solution. Specify the points as vectors t and x.The vectors t and x play different roles in the solver (see “PDE Solver” on page 10-89). In particular, the cost and the accuracy of the solution depend strongly on the length of the vector x. However, the computation is much less sensitive to the values in the vector t.10 CalculusThis example requests the solution on the mesh produced by 20 equally spaced points from the spatial interval [0,1] and five values of t from thetime interval [0,2].x = linspace(0,1,20);t = linspace(0,2,5);6 Apply the PDE solver. The example calls pdepe with m = 0, the functions pdex1pde, pdex1ic, and pdex1bc, and the mesh defined by x and t at which pdepe is to evaluate the solution. The pdepe function returns the numerical solution in a three-dimensional array sol, wheresol(i,j,k) approximates the kth component of the solution,u, evaluated atkt(i) and x(j).m = 0;sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);This example uses @ to pass pdex1pde, pdex1ic, and pdex1bc as function handles to pdepe.Note See the function_handle (@), func2str, and str2func reference pages, and the @ section of MATLAB Programming Fundamentals for information about function handles.7 View the results. Complete the example by displaying the results:a Extract and display the first solution component. In this example, the solution has only one component, but for illustrative purposes, the example “extracts” it from the three-dimensional array. The surface plot shows the behavior of the solution.u = sol(:,:,1);surf(x,t,u)title('Numerical solution computed with 20 mesh points') xlabel('Distance x') ylabel('Time t')Distance xNumerical solution computed with 20 mesh points.Time tb Display a solution profile at f t , the final value of . In this example,2t t f ==.figure plot(x,u(end,:)) title('Solution at t = 2') xlabel('Distance x') ylabel('u(x,2)')Solutions at t = 2.Distance xu (x ,2)Evaluating the Solution. After obtaining and plotting the solution above, you might be interested in a solution profile for a particular value of t, or the time changes of the solution at a particular point x. The kth column u(:,k)(of the solution extracted in step 7) contains the time history of the solution at x(k). The jth row u(j,:) contains the solution profile at t(j). Using the vectors x and u(j,:), and the helper function pdeval, you can evaluate the solution u and its derivative at any set of points xout [uout,DuoutDx] = pdeval(m,x,u(j,:),xout)The example pdex3 uses pdeval to evaluate the derivative of the solution at xout = 0. See pdeval for details.2. System of PDEsThis example illustrates the solution of a system of partial differential equations. The problem is taken from electrodynamics. It has boundary layers at both ends of the interval, and the solution changes rapidly for small . The PDEs are)u u (F xu017.0t u )u u (F xu 024.0t u 212222212121-+∂∂=∂∂--∂∂=∂∂ where )y 46.11exp()y 73.5exp()y (F --=. The equations hold on an interval1x 0≤≤ for times 0t ≥.The solution satisfies the initial conditions0)0,x (u ,1)0,x (u 21≡≡and boundary conditions0)t ,1(xu,0)t ,1(u ,0)t ,0(u ,0)t ,0(x u 2121=∂∂===∂∂ Note The demo pdex4 contains the complete code for this example. The demo uses subfunctions to place all required functions in a single MATLAB file. To run this example type pdex4 at the command line.1 Rewrite the PDE. In the form expected by pdepe, the equations are⎥⎦⎤⎢⎣⎡---+⎥⎦⎤⎢⎣⎡∂∂∂∂∂∂=⎥⎦⎤⎢⎣⎡∂∂⎥⎦⎤⎢⎣⎡)u u (F )u u (F )x /u 170.0)x /u (024.0x u u t *.1121212121 The boundary conditions on the partial derivatives of have to be written in terms of the flux. In the form expected by pdepe, the left boundary condition is⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡∂∂∂∂⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡00)x /u (170.0)x /u (024.0*.01u 0212and the right boundary condition is⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡∂∂∂∂⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡-00)x /u (170.0)x /u (024.0*.1001u 2112 Code the PDE. After you rewrite the PDE in the form shown above, you can code it as a function that pdepe can use. The function must be of the form[c,f,s] = pdefun(x,t,u,dudx)where c, f, and s correspond to the , , and terms in Equation 10-2. function [c,f,s] = pdex4pde(x,t,u,DuDx)c = [1; 1];f = [0.024; 0.17] .* DuDx;y = u(1) - u(2);F = exp(5.73*y)-exp(-11.47*y);s = [-F; F];3 Code the initial conditions function. The initial conditions function must be of the formu = icfun(x)The code below represents the initial conditions in the function pdex4ic. function u0 = pdex4ic(x);u0 = [1; 0];4 Code the boundary conditions function. The boundary conditions functions must be of the form[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)The code below evaluates the components p(x,t,u) and q(x,t) (Equation 10-4) of the boundary conditions in the function pdex4bc.function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)pl = [0; ul(2)];ql = [1; 0];pr = [ur(1)-1; 0];qr = [0; 1];5 Select mesh points for the solution. The solution changes rapidly for small t . The program selects the step size in time to resolve this sharp change, but to see this behavior in the plots, output times must be selected accordingly. There are boundary layers in the solution at both ends of [0,1], so mesh points must be placed there to resolve these sharp changes. Often some experimentation is needed to select the mesh that reveals the behavior of the solution.x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];6 Apply the PDE solver. The example calls pdepe with m = 0, the functions pdex4pde, pdex4ic, and pdex4bc, and the mesh defined by x and t at which pdepe is to evaluate the solution. The pdepe function returns the numerical solution in a three-dimensional array sol, wheresol(i,j,k) approximates the kth component of the solution, μk, evaluated at t(i) and x(j).m = 0;sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);7 View the results. The surface plots show the behavior of the solution components. u1 = sol(:,:,1); u2 = sol(:,:,2); figure surf(x,t,u1) title('u1(x,t)') xlabel('Distance x') 其输出图形为Distance xu1(x,t)Time tfigure surf(x,t,u2) title('u2(x,t)') xlabel('Distance x') ylabel('Time t')Distance xu2(x,t)Time tAdditional ExamplesThe following additional examples are available. Type edit examplename to view the code and examplename to run the example.。
偏微分方程的MATLAB解法
引言微分方程定解问题有着广泛的应用背景。
人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。
然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。
现在,MATLAB PDEToolbox已实现对于空间二维问题高速、准确的求解过程。
偏微分方程果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。
用的方法有变分法和有限差分法。
变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数方程,然后用计算机进行计算;还有一种更有意义的模拟法,它用另一个物理的问题实验研究来代替所研究某个物理问题的定解。
虽然物理现象本质不同,但是抽象地表示在数学上是同一个定解问题,如研究某个不规则形状的物体里的稳定温度分布问题,由于求解比较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从而也解决了所研究的稳定温度场中的温度分布问题。
着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。
从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。
从这个角度说,偏微分方程变成了数学的中心。
一、MATLAB方法简介及应用1.1 MATLAB简介ATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
1.2 Matlab主要功能数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程1.3 优势特点1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
有限差分和Matlabpde求解一维稳态传热问题
有限差分和pde 函数求解一维定态热传导方程分别用有限差分方法和pde 函数求解一维定态热传导方程,初始条件和边界条件,热扩散系数α=0.00001,22T T t x α∂∂=∂∂ (1) 求解过程:1. 用Tylaor 展开法推导出FTCS 格式的差分方程首先对T 进行泰勒展开得到如下两式子:23123123...2!3!23...2!3!nnnn n j j jj j nnnn n j jjjjttT T t x x TTx T T T t t t T T T x x x ++∆∆=+∆+++∆∆=+∆+++⎛⎫⎛⎫∂∂∂⎛⎫⎪ ⎪⎪∂∂∂⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫∂∂∂⎛⎫ ⎪⎪ ⎪∂∂∂⎝⎭⎝⎭⎝⎭上述两个方程变换得:()1122323...23n nnn nn n j j j j jj j T T T T T t T t T o t t tt t t ++--⎛⎫⎛⎫∂∆∂∆∂⎛⎫=--=+∆ ⎪ ⎪ ⎪∂∆∂∂∆⎝⎭⎝⎭⎝⎭ (2)223123...23nnnn n j j jj j T T T x T x T x xx x --⎛⎫⎛⎫∂∆∂∆∂⎛⎫=-- ⎪ ⎪ ⎪∂∆∂∂⎝⎭⎝⎭⎝⎭()1232422342222...3!4!nnnn nnj j j jj j T T T T x T x T x x x x x x +-⎛⎫⎛⎫⎛⎫∂∂∆∂∆∂⎛⎫=--- ⎪ ⎪ ⎪ ⎪∂∆∆∂∂∂⎝⎭⎝⎭⎝⎭⎝⎭ ()()21122222-n n n j j j T T T T o x x x+--+⎛⎫∂=+∆ ⎪∆∂⎝⎭ (3)将上述式子(2)(3)代入(1)得:12112222()nnn nn n n j j j j j j jT T T T T T T O t x t x t x αα+-+--+⎛⎫∂∂⎛⎫-=-+∆∆ ⎪ ⎪∂∂∆∆⎝⎭⎝⎭, (4)2. 方程的相容性和稳定性讨论:上述方程截项为:2233242334()...4...23!3!4!n n n n j jj j t T t T x T x TO t x t t x x α⎛⎫⎛⎫⎛⎫⎛⎫⎛⎫∆∂∆∂∆∂∆∂ ⎪∆∆=--++ ⎪ ⎪ ⎪ ⎪ ⎪∂∂∂∂⎝⎭⎝⎭⎝⎭⎝⎭⎝⎭, 由于(),0,0lim x t o t x ∆∆→∆∆=所以方程有相容性其经过傅里叶变换后,只有当,t x ∆∆满足下列条件时,方程具有较好的稳定性:2220sin 12m k xt x α∆∆≤≤∆ 其中m Nk Lπ=N 为节点个数,L 为边界长度由于:22sin sin 122m k x N x L π∆∆⎛⎫== ⎪⎝⎭所以当20.5ts x α∆=≤∆时方程具有稳定性3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。
偏微分方程的matlab解法
图 22.2 定解问题的边界
第四步:设置方程类型
选择PDE菜单中PDE Mode命令,进入PDE模式, 再单击PDE菜单中PDE Secification选项,打开 PDE Secification对话框,设置方程类型. 本例取抛物型方程 d
u (cu ) au f , t
故参数c,a,f,d,分别是l,0,10,1. 第五步:选择Mesh菜单中Initialize Mesh命令, 进行网格剖分, 选择Mesh菜单中Refine Mesh命令,使网格密集化,
例如,对于细杆导热,虽然是一维问题, 可以将宽度y虚拟出来,对应于y的边界 条件和初始条件按照题意制定
Boundary Mode
PDE Mode
PDE Specification,确定偏 微分方程类型共有四种:
椭圆形Elliptic
抛物型Parabolic
双曲型Hyperbolic
如图22.3.
图 22.3 网格密集化
第六步: 解偏微分方程并显示图形解 选择Solve菜单中Solve PDE命令,解 偏微分方程并显示图形解,如图 2.4 所示
第七步:单击Plot菜单中Parameter选项,打开Plot Selection对话框,选中Color,Height(3D plot)和 Show mesh三项.再单击Polt按钮,显示三维图形解, 如图22.5所示.
例: 解热传导方程 ut u f 边界条件是齐次类型,定解区域自定。
【解】 第一步:启动MATLAB,键入命令pdetool并回车, 就进入GUI.在Options菜单下选择Gid命令,打开栅 格,栅格使用户容易确定所绘图形的大小. 第二步:选定定解区域本题为自定区域:自拟定解区 域如图22 1所示:E1-E2+R1-E3.具体用快捷工具分 别画椭圆E1、圆E2、矩形R1、圆E3.然后在Set formula栏中进行编辑并用算术运算符将图形对象名 称连接起来(或删去默认的表达式,直接键入E1E2+R1-E3)
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中。
偏微分方程(PDEs)的MATLAB数值解法
偏微分方程的MATLAB求解精讲©MA TLAB求解微分/偏微分方程,一直是一个头大的问题,两个字,“难过”,由于MA TLAB对LaTeX的支持有限,所有方程必须化成MA TLAB可接受的标准形式,不支持像其他三个数学软件那样直接傻瓜式输入,这个真把人给累坏了!不抱怨了,还是言归正传,回归我们今天的主体吧!MA TLAB提供了两种方法解决PDE问题,一是pdepe()函数,它可以求解一般的PDEs,据用较大的通用性,但只支持命令行形式调用。
二是PDE工具箱,可以求解特殊PDE问题,PDEtool有较大的局限性,比如只能求解二阶PDE问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File->Save As直接生成M代码一、一般偏微分方程组(PDEs)的MA TLAB求解 (3)1、pdepe函数说明 (3)2、实例讲解 (4)二、PDEtool求解特殊PDE问题 (6)1、典型偏微分方程的描述 (6)(1)椭圆型 (6)(2)抛物线型 (6)(3)双曲线型 (6)(4)特征值型 (7)2、偏微分方程边界条件的描述 (8)(1)Dirichlet条件 (8)(2)Neumann条件 (8)3、求解实例 (9)一、一般偏微分方程组(PDEs)的MATLAB 求解1、pdepe 函数说明MA TLAB 语言提供了pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)【输入参数】@pdefun :是PDE 的问题描述函数,它必须换成下面的标准形式(,,)[(,,,)](,,,)()m m u u u uc x t x x f x t u s x t u x t x x x−∂∂∂∂∂=+∂∂∂∂∂式1 这样,PDE 就可以编写下面的入口函数 [c,f,s]=pdefun(x,t,u,du)m,x,t 就是对应于(式1)中相关参数,du 是u 的一阶导数,由给定的输入变量即可表示出出c,f,s 这三个函数@pdebc :是PDE 的边界条件描述函数,必须先化为下面的形式(,,)(,,).*(,,,)0up x t u q x t u f x t u x∂+=∂ 于是边值条件可以编写下面函数描述为 [pa,qa,pb,qb]=pdebc(x,t,u,du)其中a 表示下边界,b 表示下边界@pdeic :是PDE 的初值条件,必须化为下面的形式00(,)u x t u =我们使用下面的简单的函数来描述为 u0=pdeic(x)m,x,t :就是对应于(式1)中相关参数【输出参数】sol :是一个三维数组,sol(:,:,i)表示u i 的解,换句话说u k 对应x(i)和t(j)时的解为sol(i,j,k)通过sol ,我们可以使用pdeval()直接计算某个点的函数值2、实例讲解试求解下面的偏微分2111222221220.024()0.17()u u F u u t xu u F u u tx ∂∂=−− ∂∂ ∂∂ =−− ∂∂ 其中, 5.7311.46()x x F x e e −=−,且满足初始条件12(,0)1,(,0)0u x u x ==及边界条件1221(0,)0,(0,)0,(1,)1,(1,)0u ut u t u t t x x∂∂====∂∂【解】(1)对照给出的偏微分方程,根据标注形式,则原方程可以改写为111222120.024()1.*1()0.17u u F u u x u u F u u t t x ∂−−∂∂∂=+ ∂−∂∂∂可见m=0,且1122120.024()1,,1()0.17u F u u x c f s u F u u x ∂−− ∂===∂−∂%% 目标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(-11.46*temp));(2)边界条件改写为12011010.*.*00000u f f u −+=+=下边界上边界%% 边界条件函数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];(3)初值条件改写为1210u u =%% 初值条件函数function u0=pdeic(x) u0=[1;0];(4)最后编写主调函数 clcx=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') subplot(211)surf(x,t,sol(:,:,1)) title('The Solution of u_1') xlabel('X') ylabel('T') zlabel('U') subplot(212)surf(x,t,sol(:,:,2)) title('The Solution of u_2') xlabel('X') ylabel('T') zlabel('U')二、PDEtool 求解特殊PDE 问题MATLAB 的偏微分工具箱(PDE toolbox)可以比较规范的求解各种常见的二阶偏微分方程,但是惋惜的是只能求解特殊二阶的PDE 问题,并且不支持偏微分方程组!PDE toolbox 支持命令行形式求解PDE 问题,但是要记住那些命令以及调用形式真的很累人,还好MATLAB 提供了GUI 可视交互界面pdetool ,在pdetool 中可以很方便的求解一个PDE 问题,并且可以帮我们直接生成M 代码(File->Save As)。
Removed_一维偏微分方程的pdepe(matlab)函数解法
本文根据matlab帮助进行加工,根据matlab帮助上的例子,帮助更好的理解一维偏微分方程的pdepe函数解法,主要加工在于程序的注释上。
ExamplesExample 1.This example illustrates the straightforward formulation, computation, and plotting of the solution of a single PDE.This equation holds on an interval for times .The PDE satisfies the initial conditionand boundary conditionsIt is convenient to use subfunctions to place all the functions required by pdepe in a single function.function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
%其中x1、x2、N分别为起始值、终止值、元素个数。
若缺省N,默认点数为100t = linspace(0,2,5);sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);% Extract the first solution component as u.u = sol(:,:,1);% A surface plot is often a good way to study a solution.surf(x,t,u)title('Numerical solution computed with 20 mesh points.')xlabel('Distance x')ylabel('Time t')% A solution profile can also be illuminating.figureplot(x,u(end,:))title('Solution at t = 2')xlabel('Distance x')ylabel('u(x,2)')% --------------------------------------------------------------function [c,f,s] = pdex1pde(x,t,u,DuDx)c = pi^2;f = DuDx;s = 0;% --------------------------------------------------------------function u0 = pdex1ic(x)u0 = sin(pi*x);% --------------------------------------------------------------function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = pi * exp(-t);qr = 1;In this example, the PDE, initial condition, and boundary conditions are coded in subfunctions pdex1pde, pdex1ic, and pdex1bc.The surface plot shows the behavior of the solution.The following plot shows the solution profile at the final value of t (i.e., t =2).我们再将该问题复杂化,比如在原方程右边加一项,2)(u u f =对于标准形式,其余条件不变2u s =function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace 是Matlab 中的一个指令,用于产生x1,x2之间的N 点行矢量。
一维波动方程matlab
一维波动方程matlab一维波动方程是描述一维波动现象的数学模型。
在MATLAB中,我们可以使用偏微分方程求解器(Partial Differential Equation Toolbox)来求解一维波动方程。
假设我们有一个一维波动方程:∂^2u/∂t^2 = c^2 ∂^2u/∂x^2。
其中,u是波函数,t是时间,x是空间坐标,c是波速。
首先,我们需要定义波动方程的边界条件和初始条件。
然后,我们可以使用pdepe函数来求解一维波动方程。
以下是一个简单的MATLAB代码示例:matlab.function oned_wave_equation.x = linspace(0, 1, 100); % 定义空间网格。
t = linspace(0, 1, 100); % 定义时间网格。
m = 0; % 边界条件。
xmesh = x;tspan = t;sol =pdepe(m,@wave_eqn,@wave_initial,@wave_bc,xmesh,tspan); u = sol(:,:,1);surf(x,t,u);xlabel('Distance x');ylabel('Time t');zlabel('Wave function u');end.function [c,f,s] = wave_eqn(x,t,u,DuDx)。
c = 1; % 波速。
f = DuDx;s = 0;end.function u0 = wave_initial(x)。
u0 = sin(pix); % 初始波函数。
end.function [pl,ql,pr,qr] = wave_bc(xl,ul,xr,ur,t)。
pl = ul; % 左边界条件。
ql = 0;pr = 0; % 右边界条件。
qr = 1;end.在这个示例中,我们首先定义了空间和时间的网格,然后使用pdepe函数求解一维波动方程。
matlab 求解偏微分方程
matlab 求解偏微分方程使用MATLAB求解偏微分方程摘要:偏微分方程(partial differential equation, PDE)是数学中重要的一类方程,广泛应用于物理、工程、经济、生物等领域。
MATLAB 是一种强大的数值计算软件,提供了丰富的工具箱和函数,可以用来求解各种类型的偏微分方程。
本文将介绍如何使用MATLAB来求解偏微分方程,并通过具体案例进行演示。
引言:偏微分方程是描述多变量函数的方程,其中包含了函数的偏导数。
一般来说,偏微分方程可以分为椭圆型方程、双曲型方程和抛物型方程三类。
求解偏微分方程的方法有很多,其中数值方法是最常用的一种。
MATLAB作为一种强大的数值计算软件,提供了丰富的工具箱和函数,可以用来求解各种类型的偏微分方程。
方法:MATLAB提供了多种求解偏微分方程的函数和工具箱,包括pdepe、pdetoolbox和pde模块等。
其中,pdepe函数是用来求解带有初始条件和边界条件的常微分方程组的函数,可以用来求解一维和二维的偏微分方程。
pdepe函数使用有限差分法或有限元法来离散化偏微分方程,然后通过求解离散化后的常微分方程组得到最终的解。
案例演示:考虑一维热传导方程的求解,偏微分方程为:∂u/∂t = α * ∂^2u/∂x^2其中,u(x,t)是温度分布函数,α是热扩散系数。
假设初始条件为u(x,0)=sin(pi*x),边界条件为u(0,t)=0和u(1,t)=0。
我们需要定义偏微分方程和边界条件。
在MATLAB中,可以使用匿名函数来定义偏微分方程和边界条件。
然后,我们使用pdepe函数求解偏微分方程。
```matlabfunction [c,f,s] = pde(x,t,u,DuDx)c = 1;f = DuDx;s = 0;endfunction u0 = uinitial(x)u0 = sin(pi*x);endfunction [pl,ql,pr,qr] = uboundary(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = ur;qr = 0;endx = linspace(0,1,100);t = linspace(0,0.1,10);m = 0;sol = pdepe(m,@pde,@uinitial,@uboundary,x,t);u = sol(:,:,1);surf(x,t,u);xlabel('Distance x');ylabel('Time t');zlabel('Temperature u');```在上述代码中,我们首先定义了偏微分方程函数pde,其中c、f和s分别表示系数c、f和s。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文根据matlab帮助进行加工,根据matlab帮助上的例子,帮助更好的理解一维偏微分方程的pdepe函数解法,主要加工在于程序的注释上。
ExamplesExample 1.This example illustrates the straightforward formulation, computation, and plotting of the solution of a single PDE.This equation holds on an intervalfor times.The PDE satisfies the initial conditionand boundary conditionsIt is convenient to use subfunctions to place all the functions required by pdepe in a single function.function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
%其中x1、x2、N分别为起始值、终止值、元素个数。
若缺省N,默认点数为100t = linspace(0,2,5);sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);% Extract the first solution component as u.u = sol(:,:,1);% A surface plot is often a good way to study a solution.surf(x,t,u)title('Numerical solution computed with 20 mesh points.')xlabel('Distance x')ylabel('Time t')% A solution profile can also be illuminating.figureplot(x,u(end,:))title('Solution at t = 2')xlabel('Distance x')ylabel('u(x,2)')% --------------------------------------------------------------function [c,f,s] = pdex1pde(x,t,u,DuDx)c = pi^2;f = DuDx;s = 0;% --------------------------------------------------------------function u0 = pdex1ic(x)u0 = sin(pi*x);% --------------------------------------------------------------function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = pi * exp(-t);qr = 1;In this example, the PDE, initial condition, and boundary conditions are coded in subfunctions pdex1pde, pdex1ic, and pdex1bc.The surface plot shows the behavior of the solution.The following plot shows the solution profile at the final value of t (i.e., t = 2).我们再将该问题复杂化,比如在原方程右边加一项,对于标准形式,其余条件不变function pdex1m = 0;x = linspace(0,1,20);%linspace(x1,x2,N)linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
%其中x1、x2、N分别为起始值、终止值、元素个数。
若缺省N,默认点数为100t = linspace(0,2,5);sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);% Extract the first solution component as u.u = sol(:,:,1);% A surface plot is often a good way to study a solution.surf(x,t,u)title('Numerical solution computed with 20 mesh points.')xlabel('Distance x')ylabel('Time t')% A solution profile can also be illuminating.figureplot(x,u(end,:))title('Solution at t = 2')xlabel('Distance x')ylabel('u(x,2)')% --------------------------------------------------------------function [c,f,s] = pdex1pde(x,t,u,DuDx)c = pi^2;f = DuDx;s = u^2;% --------------------------------------------------------------function u0 = pdex1ic(x)u0 = sin(pi*x);% --------------------------------------------------------------function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t)pl = ul;ql = 0;pr = pi * exp(-t);qr = 1;对比结果有差异,表示可行Example 2. This example illustrates the solution of a system of PDEs. The problem has boundary layers at both ends of the interval. The solution changes rapidly for small.The PDEs arewhere.This equation holds on an intervalfor times.The PDE satisfies the initial conditionsand boundary conditionsIn the form expected by pdepe, the equations areThe boundary conditions on the partial derivatives ofhave to be written in terms of the flux. In the form expected by pdepe, the left boundary condition isand the right boundary condition isThe solution changes rapidly for small. The program selects the step size in time to resolve this sharp change, but to see this behavior in the plots, the example must select the output times accordingly. There areboundary layers in the solution at both ends of [0,1], so the example places mesh points near 0and 1to resolve these sharp changes. Often some experimentation is needed to select a mesh that reveals the behavior of the solution.程序在pdex4.m中function pdex4 %pdex4为文件名clcm = 0;x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);%pdepe函数,用于直接求解偏微分方程,其形式为sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)%下面为作图步骤u1 = sol(:,:,1);% ui = sol(:,:,i) is an approximation to the ith component of the solution vector u .u2 = sol(:,:,2);figuresurf(x,t,u1)title('u1(x,t)')xlabel('Distance x')ylabel('Time t')figuresurf(x,t,u2)title('u2(x,t)')xlabel('Distance x')ylabel('Time t')% --------------------------------------------------------------function [c,f,s] = pdex4pde(x,t,u,DuDx)%被调用的函数,其作用是描述偏微分方程c = [1; 1];f = [0.024; 0.17] .* DuDx;y = u(1) - u(2);F = exp(5.73*y)-exp(-11.47*y);s = [-F; F];% --------------------------------------------------------------function u0 = pdex4ic(x);%此函数是用来描述初值u0 = [1; 0];% --------------------------------------------------------------function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)%此函数用来描述边界条件pl = [0; ul(2)];ql = [1; 0];pr = [ur(1)-1; 0];qr = [0; 1];In this example, the PDEs, initial conditions, and boundary conditions are coded in subfunctions pdex4pde, pdex4ic, and pdex4bc.The surface plots show the behavior of the solution components.。