一维抛物线偏微分方程数值解法(附图及matlab程序)

合集下载

一维偏微分方程的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点行矢量。

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解摘要:一、引言二、一维抛物型偏微分方程1.定义与性质2.初边值问题三、求解方法1.紧差分格式2.追赶法3.有限元算法四、Matlab程序实现1.紧差分格式程序2.追赶法程序五、结论与展望正文:一、引言在数学、物理等领域,偏微分方程是一类重要的方程。

其中,一维抛物型偏微分方程在科学研究和实际应用中具有广泛的意义。

本文将探讨一维抛物型偏微分方程的初边值问题的求解方法,并介绍相应的Matlab程序实现。

二、一维抛物型偏微分方程1.定义与性质一维抛物型偏微分方程是指具有如下形式的方程:u_t = a * u_xx其中,u(x, t) 表示未知函数,t 表示时间,x 表示空间坐标,a 为常数。

2.初边值问题初边值问题是指在给定的初始条件和边界条件下求解偏微分方程的问题。

在一维抛物型偏微分方程中,初边值问题可以表示为:u(x, 0) = u_0(x)u(x, t) = u_t(x, t) 在边界x=0,x=L上三、求解方法1.紧差分格式紧差分格式是一种求解偏微分方程的方法,其精度为O(h^(1/2) * Δt),无条件稳定。

在这种方法中,我们首先需要建立离散的网格系统,然后通过数值积分求解离散化的偏微分方程。

2.追赶法追赶法是一种求解线性方程组的方法,也可以用于求解初边值问题。

在这种方法中,我们首先需要将偏微分方程转化为线性方程组,然后使用追赶法求解线性方程组。

3.有限元算法有限元算法是一种基于变分原理的求解方法,可以将偏微分方程问题转化为求解有限元空间的线性方程组。

这种方法在求解一维抛物型偏微分方程时具有较高的精度和可靠性。

(完整版)偏微分方程的MATLAB解法

(完整版)偏微分方程的MATLAB解法

引言偏微分方程定解问题有着广泛的应用背景。

人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。

然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。

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

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

常用的方法有变分法和有限差分法。

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

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

随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。

从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。

从这个角度说,偏微分方程变成了数学的中心。

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

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

最新偏微分方程的matlab解法

最新偏微分方程的matlab解法

求解双曲型方程的例子
例24.2.1 用 MATLAB 求解下面波动方程定解问题并动态显示解的分布
2u (2u t 2 x2
2u ) 0 y 2
u
|x
1
u
|x1
0,
u y
y 1
u y
y1 0
π
π
u(x,
y, 0)
atan[ sin(
2
x)], ut
( x,
y,
0)
2
cos(πx)
保持在100 °C,板的右边热量从板向环境空气定常流动,
t t 其他边及内孔边界保持绝缘。初始
°C ,于是概括为如下定解问题;
是板的温度为0 0
d u u0 , t
u 1 0 0 ,在 左 边 界 上
u 1, 在 右 边 界 上 n u = 0, 其 他 边 界 上 n
u t to 0
区域的边界顶点坐标为(-0.5,-0.8), (0.5,-0.8), (-0.5,0.8), (0.5,0.8)。 内边界顶点坐标(-0.05,-0.4), (-0.05,0.4) ,(0.05,-0.4), (0.05,0.4)。
第七步:单击Plot菜单中Parameter选项,打开Plot Selection对话框,选中Color,Height(3D plot)和 Show mesh三项.再单击Polt按钮,显示三维图形解, 如图22.5所示.
第八步:若要画等值线图和矢量场图,单击plot菜单 中parameter 选项,在plot selection对话框中选中 contour 和arrow两选项。然后单击plot按钮,可显示 解的等值线图和矢量场图,如图2.6所示。
网格划分,细化

(完整版)偏微分方程的MATLAB解法

(完整版)偏微分方程的MATLAB解法

引言偏微分方程定解问题有着广泛的应用背景。

人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。

然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。

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

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

常用的方法有变分法和有限差分法。

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

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

随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。

从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。

从这个角度说,偏微分方程变成了数学的中心。

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

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

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解摘要:一、引言二、一维抛物型偏微分方程初边值问题概述三、求解方法四、数值模拟与分析五、结论正文:一、引言一维抛物型偏微分方程在数学和物理等领域有着广泛的应用,比如热传导方程、波动方程等。

对于这种方程的初边值问题,人们进行了大量的研究,提出了多种求解方法。

本文将对这些方法进行综述和分析。

二、一维抛物型偏微分方程初边值问题概述一维抛物型偏微分方程形式为:$$frac{partial^2 u}{partial t^2} = c^2 frac{partial^2 u}{partial x^2}$$其中,$u(x,t)$ 是未知函数,$c$ 是常数。

初边值问题要求解该方程,并满足以下条件:1.$u(x,0) = f(x)$,即$t=0$ 时的函数值已知。

2.$frac{partial u}{partial t}(x,0) = g(x)$,即$t=0$ 时的导数值已知。

三、求解方法针对一维抛物型偏微分方程的初边值问题,目前主要有以下几种求解方法:1.分离变量法:适用于$c=1$ 的情况。

该方法将方程分解为两个独立的一阶线性微分方程,可以求得解析解。

2.矩方法:适用于$ceq 1$ 的情况。

该方法将方程转化为关于矩的递推关系式,可以求得数值解。

3.有限差分法:将方程离散化,通过差分方程求解。

该方法可以得到数值解,但可能会出现数值稳定性问题。

4.有限元法:将方程转化为有限个单元的积分方程,通过插值函数求解。

该方法可以得到较高质量的数值解,但计算复杂度较高。

四、数值模拟与分析为了比较不同方法的求解效果,我们取一维抛物型偏微分方程的一个具体例子,采用以上方法进行数值模拟。

通过对比分析,我们可以得出以下结论:1.分离变量法适用于$c=1$ 的情况,可以得到解析解,但求解范围有限。

2.矩方法对于$ceq 1$ 的情况有较好的适用性,可以得到数值解,但计算复杂度较高。

3.有限差分法易出现数值稳定性问题,求解精度较低。

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解

一维抛物型偏微分方程初边值问题求解摘要:一、引言1.抛物型偏微分方程简介2.初边值问题的意义和重要性二、一维抛物型偏微分方程初边值问题的求解方法1.分离变量法2.紧差分法3.Crank-Nicolson 方法4.Richardson 外推法三、Matlab程序实现1.紧差分格式求解2.追赶法解线性方程组四、案例分析1.热传导方程的初边值问题求解五、结论与展望1.初边值问题求解的重要性2.未来研究方向和挑战正文:一、引言抛物型偏微分方程是一类重要的偏微分方程,其在物理、工程、数学等领域具有广泛的应用。

其中,一维抛物型偏微分方程的初边值问题更是研究的热点。

初边值问题是指在给定的边界条件下,求解方程在空间和时间上的演化过程。

本文将介绍一维抛物型偏微分方程初边值问题的求解方法,并以热传导方程为例进行具体分析。

二、一维抛物型偏微分方程初边值问题的求解方法1.分离变量法:这是一种常用的求解初边值问题的方法,主要思想是将偏微分方程分解为多个独立的常微分方程。

通过对每个常微分方程求解,最后得到偏微分方程的解。

2.紧差分法:这是一种求解偏微分方程的数值方法。

通过在空间和时间上进行离散化,将偏微分方程转化为线性代数方程组。

然后采用追赶法或迭代法求解线性方程组,从而得到偏微分方程的数值解。

3.Crank-Nicolson 方法:这是一种经典的有限差分法,用于求解一维抛物型偏微分方程。

通过在空间和时间上进行离散化,并采用中心差分公式,将偏微分方程转化为线性代数方程组。

然后求解线性方程组,得到偏微分方程的解。

4.Richardson 外推法:这是一种提高数值解精度的方法,通过多次迭代,逐渐减少空间和时间步长,使数值解接近真实解。

【精品】偏微分的MATLAB数值解法课件

【精品】偏微分的MATLAB数值解法课件

方法一:pdepe函数实现
• x=0:1:40; • t=0:0.01:0.2; • m=0; • sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t); • b=sol(20,:); • plot(x,b); • title('the solution of u') • xlabel('x') • ylabel('y') • zlabel('u')
偏微分的MATLAB数值解法
偏微分的MATLAB数值解法
• 方法一:pdepe函数实现 • 方法二:pdetool实现 • 方法三:程序实现
方法一:pdepe函数实现
• @pdeic: • function u0=pdeic(x) • if x<10 • u0=0; • elseif x<30 • u0=1; • else • u0=0; • end

end
• end
方法三:程序实现
图 22.12 波动方程解析解的分布
偏微分的MATLAB数值解法
• 方法总结: • 1.pdede调用简单,但计算功能稍弱 • 2.pdetool使用方便,但限于四种方程类
型 • 3.程序编写较为繁琐
方法一:pdepe函数实现
方法二:pdetool实现
• 1.pdetool界面 • 2.选定求解微分方程类型(双曲线、抛物线、椭
圆、特殊值型)并设定参数 • 3.绘制求解区域 • 4.边界条件和初值条件(Dirichlet和Neumann) • 5.生成网格 • 6.求解方程并绘制图形
方法二:pdetool实现
• 应用实例:
u(ux,y)
x2 y x0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一维抛物线偏微分方程数值解法(4)
上一篇参看一维抛物线偏微分方程数值解法(3)(附图及matlab程序)
解一维抛物线型方程(理论书籍可以参看孙志忠:偏微分方程数值解法)
Ut-Uxx=0, 0<x<1,0<t<=1(Ut-aUxx=f(x,t),a>0)
U(x,0)=e^x, 0<=x<=1,
U(0,t)=e^t,U(1,t)=e^(1+t), 0<t<=1
精确解为:U(x,t)=e^(x+t);
用紧差分格式:
此种方法精度为o(h1^2+h2^4),无条件差分稳定;
一:用追赶法解线性方程组(还可以用迭代法解)
Matlab程序为:
function [u p e x t]=JCHGS(h1,h2,m,n)
%紧差分格式解一维抛物线型偏微分方程
%此程序用的是追赶法解线性方程组
%h1为空间步长,h2为时间步长
%m,n分别为空间,时间网格数
%p为精确解,u为数值解,e为误差
x=(0:m)*h1+0; x0=(0:m)*h1;%定义x0,t0是为了f(x,t)~=0的情况%
t=(0:n)*h2+0; t0=(0:n)*h2+1/2*h2;
syms f;
for(i=1:n+1)
for(j=1:m+1)
f(i,j)=0; %f(i,j)=f(x0(j),t0(i))==0%
end
end
for(i=1:n+1)
u(i,1)=exp(t(i));
u(i,m+1)=exp(1+t(i));
end
for(i=1:m+1)
u(1,i)=exp(x(i));
end
r=h2/(h1*h1);
for(i=1:n) %外循环,先固定每一时间层,每一时间层上解一线性方程组%
a(1)=0;b(1)=5/6+r;c(1)=1/12-r/2;d(1)=(r/2-1/12)*u(i+1,1)+... (1/12+r/2)*u(i,1)+(5/6-r)*u(i,2)+(1/12+r/2)*u(i,3)+...
h2/12*(f(i,1)+10*f(i,2)+f(i,3));
for(k=2:m-2)
a(k)=1/12-r/2;b(k)=5/6+r;c(k)=1/12-r/2;d(k)=h2/12*(f(i,k)+...
10*f(i,k+1)+f(i,k+2))+(1/12+r/2)*(u(i,k)+u(i,k+2))+(5/6-r)...
*u(i,k+1);
%输入部分系数矩阵,为0的矩阵元素不输入%一定要注意输入元素的正确性end
a(m-1)=1/12-r/2;b(m-1)=5/6+r;d(m-1)=(1/12+r/2)*(u(i,m-1)+u(i,m+1) )+...
(5/6-r)*u(i,m)+(r/2-1/12)*u(i+1,m+1)+ ...
h2/12*(f(i,m-1)+10*f(i,m)+f(i,m+1));
for(k=1:m-2) %开始解线性方程组消元过程
a(k+1)=-a(k+1)/b(k);
b(k+1)=b(k+1)+a(k+1)*c(k);
d(k+1)=d(k+1)+a(k+1)*d(k);
end
u(i+1,m)=d(m-1)/b(m-1); %回代过程%
for(k=m-2:-1:1)
u(i+1,k+1)=(d(k)-c(k)*u(i+1,k+2))/b(k);
end
end
for(i=1:n+1)
for(j=1:m+1)
p(i,j)=exp(x(j)+t(i)); %p为精确解
e(i,j)=abs(u(i,j)-p(i,j));%e为误差
end
end
[u p e x t]=JCHGS(0.1,0.005,10,200); surf(x,t,e)
>> title('误差');运行约43秒;
[u p e x t]=JCHGS(0.1,0.01,10,100);surf(x,t,e) 20多秒;[u p e x t]=JCHGS(0.2,0.04,5,25);surf(x,t,e) 3秒;
此方法精度很高;
二:g-s迭代法求解线性方程组
Matlab程序
function [u e p x t k]=JCFGS1(h1,h2,m,n,kmax,ep) % 解抛物线型一维方程格式(Ut-aUxx=f(x,t),a>0)
%用g-s(高斯-赛德尔)迭代法解
%kmax为最大迭代次数
%m,n为x,t方向的网格数,例如(2-0)/0.01=200;
%e为误差,p为精确解
syms temp;
u=zeros(n+1,m+1);
x=0+(0:m)*h1;
t=0+(0:n)*h2;
for(i=1:n+1)
u(i,1)=exp(t(i));
u(i,m+1)=exp(1+t(i));
end
for(i=1:m+1)
u(1,i)=exp(x(i));
end
for(i=1:n+1)
for(j=1:m+1)
f(i,j)=0;
end
end
a=zeros(n,m-1);
r=h2/(h1*h1); %此处r=a*h2/(h1*h1);a=1
for(k=1:kmax)
for(i=1:n)
for(j=2:m)
temp=((1/12+r/2)*(u(i,j-1)+u(i,j+1))+(5/6-r)*u(i,j)+...
h2/12*(f(i,j-1)+10*f(i,j)+f(i,j+1))+(r/2-1/12)*(u(i+1,...
j-1)+u(i+1,j+1)))/(5/6+r);
a(i+1,j)=(temp-u(i+1,j))*(temp-u(i+1,j));
u(i+1,j)=temp;%此处注意是u(i+1,j),,而不是u(i+1,j+1)% end
end
a(i+1,j)=sqrt(a(i+1,j));
if(k>kmax)
break;
end
if(max(max(a))<ep)
break;
end
end
for(i=1:n+1)
for(j=1:m+1)
p(i,j)=exp(x(j)+t(i));
e(i,j)=abs(u(i,j)-p(i,j));
end
end
[u e p x t k]=JCFGS1(0.1,0.005,10,200,100000,1e-12);k=67;运行速度1秒左右;surf(x,t,e)
[u e p x t k]=JCFGS1(0.01,0.001,100,1000,1000000,1e-12);k=5780;surf(x,t,e)。

相关文档
最新文档