五点差分法(matlab)解椭圆型偏微分方程教学文稿
matlab_pde
8
五点差分格式在MATLAB中实现
A=-4*eye((nx-2)*(ny-2),(nx-2)*(ny-2)); b=zeros((nx-2)*(ny-2),1); for i=1:(nx-2)*(ny-2); if mod(i,nx-2)==1 if i==1 A(1,2)=1; A(1,nx-1)=1; b(1)=-u0(1,2)-u0(2,1); else if i==(ny-3)*(nx-2)+1 A(i,i+1)=1; A(i,i-nx+2)=1; %注意边界节点的离散方式 b(i)=-u0(ny-1,1)-u0(ny,2); else A(i,i+1)=1; A(i,i-nx+2)=1; A(i,i+nx-2)=1; b(i)=-u0(floor(i/(nx-2))+2,1); end end else if mod(i,nx-2)==0 if i==nx-2 9
一维对流方程——迎风格式算例
end u0=u1; end if a>0 u=u1((M+1):M+n); else u=u1(1:n); end format long;
20
一维对流方程——迎风格式算例
然后在MATLAB窗口输入下列命令: u=peHypbYF(1,0.005,101,0,1,100);
基于Matlab的偏微分 方程数值解
求数值解方法
差分方法 有限元方法
MATLAB的pedpe函数
MATLAB的PDEtool工具箱
偏微分方程分类
椭圆偏微分方程 双曲线偏微分方程 抛物线偏微分方程
椭圆偏微分方程特例—拉普拉斯方程
拉普拉斯方程是最简单的椭圆偏微分方程,以下以拉
(完整版)偏微分方程的MATLAB解法
引言偏微分方程定解问题有着广泛的应用背景。
人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。
然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。
现在,MATLAB PDEToolbox已实现对于空间二维问题高速、准确的求解过程。
偏微分方程如果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。
常用的方法有变分法和有限差分法。
变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数方程,然后用计算机进行计算;还有一种更有意义的模拟法,它用另一个物理的问题实验研究来代替所研究某个物理问题的定解。
虽然物理现象本质不同,但是抽象地表示在数学上是同一个定解问题,如研究某个不规则形状的物体里的稳定温度分布问题,由于求解比较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从而也解决了所研究的稳定温度场中的温度分布问题。
随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。
从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。
从这个角度说,偏微分方程变成了数学的中心。
一、MATLAB方法简介及应用1.1 MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
1.2 Matlab主要功能数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程1.3 优势特点1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
(完整版)偏微分方程的MATLAB解法
引言偏微分方程定解问题有着广泛的应用背景。
人们用偏微分方程来描述、解释或者预见各种自然现象,并用于科学和工程技术的各个领域fll。
然而,对于广大应用工作者来说,从偏微分方程模型出发,使用有限元法或有限差分法求解都要耗费很大的工作量,才能得到数值解。
现在,MATLAB PDEToolbox已实现对于空间二维问题高速、准确的求解过程。
偏微分方程如果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。
常用的方法有变分法和有限差分法。
变分法是把定解问题转化成变分问题,再求变分问题的近似解;有限差分法是把定解问题转化成代数方程,然后用计算机进行计算;还有一种更有意义的模拟法,它用另一个物理的问题实验研究来代替所研究某个物理问题的定解。
虽然物理现象本质不同,但是抽象地表示在数学上是同一个定解问题,如研究某个不规则形状的物体里的稳定温度分布问题,由于求解比较困难,可作相应的静电场或稳恒电流场实验研究,测定场中各处的电势,从而也解决了所研究的稳定温度场中的温度分布问题。
随着物理科学所研究的现象在广度和深度两方面的扩展,偏微分方程的应用范围更广泛。
从数学自身的角度看,偏微分方程的求解促使数学在函数论、变分法、级数展开、常微分方程、代数、微分几何等各方面进行发展。
从这个角度说,偏微分方程变成了数学的中心。
一、MATLAB方法简介及应用1.1 MATLAB简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
1.2 Matlab主要功能数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理数字信号处理通讯系统设计与仿真财务与金融工程1.3 优势特点1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
五点差分格式求解椭圆型偏微分方程(解线性方程组方法)
五点差分格式求解椭圆型偏微分方程(解线性方程组方法)五点差分格式是一种常用的数值方法,用于求解椭圆型偏微分方程。
该方法将偏微分方程中的二阶导数项用差分近似替代,并将偏微分方程转化为一个线性方程组。
本文将介绍五点差分格式的推导过程,并使用该方法求解一个简单的椭圆型偏微分方程。
假设我们要求解的偏微分方程为:∂²u/∂x²+∂²u/∂y²=f(x,y)其中,u是未知函数,f(x,y)是已知函数。
我们将该方程离散化,将坐标(x,y)分别用h表示,将u(x,y)用U(i,j)表示,其中i和j分别表示x和y的离散位置。
我们可以使用中心差分近似来计算二阶导数,得到:∂²u/∂x²≈(U(i+1,j)-2U(i,j)+U(i-1,j))/h²∂²u/∂y²≈(U(i,j+1)-2U(i,j)+U(i,j-1))/h²将上述近似代入原方程,得到:(U(i+1,j)-2U(i,j)+U(i-1,j))/h²+(U(i, j+1) - 2U(i, j) + U(i, j-1)) / h² = f(ih, jh)整理上述方程,得到:U(i+1, j) + U(i-1, j) + U(i, j+1) + U(i, j-1) - 4U(i, j) = h² * f(ih, jh)该方程表示了U(i,j)与其相邻四个点的关系。
我们可以将整个区域离散化为一个网格,每个网格点都满足类似的方程。
离散化后的方程可以写成一个线性方程组的形式。
例如,在一个矩形区域内,我们将x轴和y轴的区间划分为n个小区间,即x轴上的取值为0, h, 2h, ..., nh;y轴上的取值为0, h,2h, ..., nh。
在该区域内,一共有(n-1)²个内部网格点。
我们可以将这些网格点按照其中一种顺序依次编号,从而将线性方程组表示为一个矩阵方程。
偏微分方程的matlab解法演示文稿
第1页,共25页。
主要讲述如何用MATLAB实现对偏微分方程的仿真求 解.MATLAB的偏微分方程工具箱(PDE Toolbox)的 出现,为偏微分方程的求解以及定性研究提供了捷 径.主要步骤为:
1、设置PDE的定解问题.即设置二维定解区域、 边界条件以及方程的形式;和系数 2、用有限元法(FEM)求解PDE.即网格的生成、 方程的离散以及求出数值解; 3、解的可视化.
u Байду номын сангаас 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)。
第25页,共25页。
mesh三项.再单击Polt按钮,显示三维图形解,如图22.5所
示.
第22页,共25页。
第八步:若要画等值线图和矢量场图,单击plot菜单中 parameter 选项,在plot selection对话框中选中contour 和arrow两选项。然后单击plot按钮,可显示解的等值线图 和矢量场图,如图2.6所示。
如果想将几何与边界信息存储,可选Boundary菜单 中的Export Decomposed Geometrv.Boundary Cond's命令,将它们分别存储在g、b变量中,并通过
MATLAB形成M文件.
第16页,共25页。
第17页,共25页。
第四步:设置方程类型
选择PDE菜单中PDE Mode命令,进入PDE模式,
求解抛物型方程的例子
考虑一个带有矩形孔的金属板上的热传导问题。板的左边保持
matlab求解偏微分方程组
matlab求解偏微分方程组摘要:I.引言- 介绍偏微分方程组及其应用领域- 阐述使用Matlab 求解偏微分方程组的重要性II.Matlab 的基本操作与设置- 安装与配置Matlab- 熟悉Matlab 的基本语法与操作III.偏微分方程组的类型及表示方法- 分类介绍偏微分方程组:椭圆型、抛物型和双曲型- 常用偏微分方程组的表示方法IV.使用Matlab 求解偏微分方程组- 使用Matlab 内置函数求解偏微分方程组- 利用有限差分法、有限元法等数值方法求解偏微分方程组- 分析求解结果及误差V.偏微分方程组在实际问题中的应用- 举例说明偏微分方程组在物理、工程等领域的应用- 展示Matlab 在解决实际问题中的优势VI.结论- 总结Matlab 求解偏微分方程组的方法与技巧- 展望偏微分方程组在数值计算领域的未来发展正文:偏微分方程组广泛应用于物理、工程、生物学等领域,是描述现实世界中许多复杂现象的基本工具。
Matlab 作为一款功能强大的数学软件,为求解偏微分方程组提供了便利。
本文将介绍如何使用Matlab 求解偏微分方程组,并探讨其在实际问题中的应用。
首先,我们需要安装与配置Matlab 软件。
在安装过程中,请确保正确配置Matlab 的环境变量,以便在后续使用过程中能够顺利调用相关函数。
熟悉Matlab 的基本语法与操作也是十分必要的,这将有助于我们更好地使用Matlab 解决实际问题。
偏微分方程组根据其特征可分为椭圆型、抛物型和双曲型。
在实际应用中,我们通常会遇到各种不同类型的偏微分方程组,因此熟练掌握不同类型方程组的表示方法十分重要。
使用Matlab 求解偏微分方程组的方法有很多。
Matlab 内置了许多求解偏微分方程组的函数,例如`fsolve`、`dsolve`等。
此外,我们还可以利用有限差分法、有限元法等数值方法求解偏微分方程组。
在实际求解过程中,我们需要根据问题的特点选择合适的求解方法,并对求解结果进行误差分析,以确保结果的准确性。
《偏微分方程概述及运用matlab求解偏微分方程常见问题》
北京航空航天大学偏微分方程概述及运用matlab求解微分方程求解常见问题姓名徐敏学号********班级380911班2011年6月偏微分方程概述及运用matlab求解偏微分方程常见问题徐敏摘要偏微分方程简介,matlab偏微分方程工具箱应用简介,用这个工具箱解方程的过程是:确定待解的偏微分方程;确定边界条件;确定方程所在域的几何形状;划分有限元;解方程关键词MATLAB 偏微分方程程序如果一个微分方程中出现的未知函数只含有一个自变量,这个方程叫做常微分方程,也简称微分方程:如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程。
一,偏微分方程概述偏微分方程是反映有关的未知变量关于时间的导数和关于空间变量的导数之间制约关系的等式。
许多领域中的数学模型都可以用偏微分方程来描述,很多重要的物理、力学等学科的基本方程本身就是偏微分方程。
早在微积分理论刚形成后不久,人们就开始用偏微分方程来描述、解释或预见各种自然现象,并将所得到的研究方法和研究成果运用于各门科学和工程技术中,不断地取得了显著的成效,显示了偏微分方程对于人类认识自然界基本规律的重要性。
逐渐地,以物理、力学等各门科学中的实际问题为背景的偏微分方程的研究成为传统应用数学中的一个最主要的内容,它直接联系着众多自然现象和实际问题,不断地提出和产生出需要解决的新课题和新方法,不断地促进着许多相关数学分支(如泛函分析、微分几何、计算数学等)的发展,并从它们之中引进许多有力的解决问题的工具。
偏微分方程已经成为当代数学中的一个重要的组成部分,是纯粹数学的许多分支和自然科学及工程技术等领域之间的一座重要的桥梁。
在国外,对偏微分方程的应用发展是相当重视的。
很多大学和研究单位都有应用偏微分方程的研究集体,并得到国家工业、科学部门及军方、航空航天等方面的大力资助。
比如在国际上有重大影响的美国的Courant研究所、法国的信息与自动化国立研究所等都集中了相当多的偏微分方程的研究人员,并把数学模型、数学方法、应用软件及实际应用融为一体,在解决实际课题、推动学科发展及加速培养人才等方面都起了很大的作用。
椭圆形方程的差分法
【实验结论】(结果)
y =
0
0.2000
0.4000
0.6000
0.8000
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
2.2000
2.4000
2.6000
2.8000
3.0000
3.2000
3.4000
3.6000
3.8000
4.0000
x0=D(1);
xf=D;
dx=(xf-x0)/M;
x=x0+[0:M]*dx;
dy=(yf-y0)/N;
y=y0+[0:N]'*dy;
%边界条件
for m=1:N+1
u(m,[1,M+1])=[feval(bx0,y(m)),feval(bxf,y(m))];
end
for n=1:M+1
u([1,N+1],n)=[feval(by0,x(n)),feval(byf,x(n))];
end
%边界的平均值作为初始值
bvaver=sum([sum(u(2:N,[1,M+1])),sum(u([1,N+1],2:M))]);
u(2:N,2:M)=bvaver/(2*(M+N-2));
for j=2:M
for i=2:N
u(i,j)=ry*(u(i,j+1)+u(i,j-1))+rx*(u(i+1,j)+u(i-1,j))+rxy*(G(i,j)*u(i,j)-F(i,j));
end
椭圆型微分方程
数学与计算科学学院实验报告
实验项目名称椭圆型方程数值解
所属课程名称微分方程数值解法
实验类型验证
实验日期
班级信计0902
学号
姓名
成绩
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。
3.实验原理:简要说明本实验项目所涉及的理论知识。
4.实验环境:实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。
概括整个实验过程。
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设
计思路和设计方法,再配以相应的文字说明。
对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):根据实验过程中得到的结果,做出结论。
8.实验小结:本次实验心得体会、思考和建议。
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。
五点差分法(matlab)解椭圆型偏微分方程
用差分法解椭圆型偏微分方程-(Uxx+Uyy)=(pi*pi-1)e^xsi n(pi*y) 0<x<2; 0<y<1U(0,y)=sin(pi*y),U(2,y)=e^ 2sin(pi*y); 0=<y<=1 U(x,0)=0, U(x,1)=0; 0=<x<=2先自己去看一下关于五点差分法的理论书籍Matlab程序:unction[p e u x y k]=wudianchafenfa(h,m, n,kmax,ep)% g-s迭代法解五点差分法问题%kmax为最大迭代次数%m,n为x,y方向的网格数,例如(2-0)/0.01=200;%e为误差,p为精确解syms temp;u=zeros(n+1,m+1);x=0+(0:m)*h;y=0+(0:n)*h;for(i=1:n+1)u(i,1)=sin(pi*y(i));u(i,m+1)=exp(1)*exp(1) *sin(pi*y(i));endfor(i=1:n)for(j=1:m)f(i,j)=(pi*pi-1)*exp(x (j))*sin(pi*y(i));endendt=zeros(n-1,m-1);for(k=1:kmax)for(i=2:n)for(j=2:m)temp=h*h*f(i,j)/4+(u(i ,j+1)+u(i,j-1)+u(i+1,j )+u(i-1,j))/4;t(i,j)=(temp-u(i,j))*( temp-u(i,j));u(i,j)=temp;endendt(i,j)=sqrt(t(i,j));if(k>kmax)break;endif(max(max(t))<ep)break;endendfor(i=1:n+1)for(j=1:m+1)p(i,j)=exp(x(j))*sin(p i*y(i));e(i,j)=abs(u(i,j)-exp( x(j))*sin(pi*y(i)));endEnd在命令窗口中输入:[p e u x y k]=wudianchafenfa(0.1,20, 10,10000,1e-6) k=147 surf(x,y,u) ;xlabel(‘x’);ylabel(‘y’); zlabel(‘u’);Title(‘五点差分法解椭圆型偏微分方程例1’)就可以得到下图surf(x,y,p)surf(x,y,e)[p e u x y k]=wudianchafenfa(0.05,4 0,20,10000,1e-6)[p e u x y k]=wudianchafenfa(0.025,80,40,10000,1e-6)为什么分得越小,误差会变大呢?我们试试运行:[p e u x y k]=wudianchafenfa(0.025, 80,40,10000,1e-8)K=2164surf(x,y,e)误差变小了吧还可以试试[p e u x y k]=wudianchafenfa(0.025, 80,40,10000,1e-10)K=3355误差又大了一点再试试[p e u x y k]=wudianchafenfa(0.025, 80,40,10000,1e-11)k=3952误差趋于稳定总结:最终的误差曲面与网格数有关,也与设定的迭代前后两次差值(ep,看程序)有关;固定网格数,随着设定的迭代前后两次差值变小,误差由大比变小,中间有一个最小值,随着又增大一点,最后趋于稳定。
五点差分格式求解椭圆型偏微分方程(解线性方程组方法)
五点差分格式求解椭圆型偏微分方程华南理工大学 数创班 张华富【1】简述采用五点差分格式求解椭圆型偏微分方程,通过求解线性方程组AU=F 得到数值解;对数值解与精确解进行误差分析,分析收敛性及收敛阶。
难点:求出块三对角系数矩阵A ,以及右端项F ;【2】例题编程计算:采用五点差分格式求如下椭圆型方程2222uu x y f (x,y),(x,y);∂∂∂∂--=∈Ω其中f (x,y)、Ω及边值条件为:f (x,y)0,= (1,2)(0,1)Ω=⨯, 边值条件如下:222u(x,0)2ln x,u(x,1)ln(x 1)1x 2;u(1,y)ln(1y ),u(2,y)ln(4y ),0y 1.⎧==+<<⎪⎨=+=+<<⎪⎩, 问题存在精确解为: 22(,)ln()u x y xy =+【3】代码(1)q1.m%求解例题clearclc M=[5 10 20 30 40 50 60 70 80 90]; %网格剖分步数N=M;f_jingque=@(x,y)log(x^2+y^2); %方程的精确解f=@(~,~)0; %方程的右端项u_0=@(y)log(1+y^2); %边界条件u_M=@(y)log(4+y^2);v_0=@(x)2*log(x);v_N=@(x)log(x^2+1);for i=10:-1:1[h(i),n(i)]=Question(1,2,0,1,f_jingque,f,u_0,u_M,v_0,v_N,M(i),N(i));%对每一个剖分,返回其误差向量的无穷范数n与步长hendn=log(n);h=log(h);p=polyfit(h,n,1) %拟合曲线表达式figureplot(h,n,'*',h,polyval(p,h),'b-') %作图,画出拟合曲线legend('原始数据点','拟合曲线');(2)调用函数 Question.mfunction [h,n]=Question(a,b,c,d,f_jingque,f,u_0,u_M,v_0,v_N,M,N) %a,b,c,d为边界点,f_jingque为偏微分方程的精确解,f为方程右端项,u及v为边界条件,M、N为网格剖分步数h1=(b-a)/M;h2=(d-c)/N; %x,y方向的步长h=sqrt(h1^2+h2^2);for i=1:M-1x(i)=a+i*h1;V_0(i)=v_0(x(i));V_N(i)=v_N(x(i));endfor j=1:N-1y(j)=c+j*h2;U_0(j)=u_0(y(j));U_M(j)=u_M(y(j));endalpha_1=1/(h1^2); %五点差分格式的系数alpha_2=1/(h2^2);alpha_3=1/(h1^2);alpha_4=1/(h2^2);alpha_0=alpha_1+alpha_2+alpha_3+alpha_4;B=zeros(M-1,M-1); %求块三对角矩阵A中的主对角线元素B,B为三对角矩阵B(1,1)=alpha_0;B(1,2)=-alpha_1;B(end,end)=alpha_0;B(end,end-1)=-alpha_3;for i=2:M-2B(i,i)=alpha_0;B(i,i-1)=-alpha_3;B(i,i+1)=-alpha_1;endD=-alpha_4*eye(M-1);C=-alpha_2*eye(M-1);A=release(B,D,C,M,N); %生成块三对角矩阵A%线性方程组AU=F的右端项F的计算F=zeros((M-1)*(N-1),1);%四个顶角的FF(1)=f(x(1),y(1))+alpha_3*U_0(1)+alpha_4*V_0(1);F(M-1)=f(x(M-1),y(1))+alpha_1*U_M(1)+alpha_4*V_0(M-1);F((M-1)*(N-2)+1)=f(x(1),y(N-1))+alpha_2*V_N(1)+alpha_3*U_0(N-1);F((M-1)*(N-1))=f(x(M-1),y(N-1))+alpha_1*U_M(N-1)+alpha_2*V_N(M-1); for k=2:M-2 %第一层F(k)=f(x(k),y(1))+alpha_4*V_0(k);endfor k=(M-1)*(N-2)+2:(M-1)*(N-1) -1 %第N-1层F(k)=f(x(k-(M-1)*(N-2)),y(N-1))+alpha_2*V_N(k-(M-1)*(N-2));endl=1;k=1+(M-1)*l; %第一列while k<(M-1)*(N-2)+1F(k)=f(x(1),y(l+1))+alpha_3*U_0(l+1);l=l+1;k=1+(M-1)*l;endl=1;k=M-1+(M-1)*l; %第M-1列while k<(M-1)*(N-1)F(k)=f(x(M-1),y(l+1))+alpha_1*U_M(l+1);l=l+1;k=M-1+(M-1)*l;endU_shuzhi2=A\F; %左除求数值解向量U_shuzhi1=reshape(U_shuzhi2,[M-1,N-1]); %将向量转换为矩阵Accurate1=zeros(N-1,M-1);for j=1:N-1for i=1:M-1Accurate1(i,j)=f_jingque(x(i),y(j)); %精确解矩阵endendAccurate2=reshape(Accurate1,[(M-1)*(N-1),1]); %精确解矩阵化为按自然顺序排序的向量error=Accurate2-U_shuzhi2; %精确解与数值解的误差向量n=norm(error,inf); %误差向量的无穷范数plot_123(x,y,U_shuzhi1,Accurate1); %作图,画出数值解、精确解与误差矩阵的图像(3)调用函数 release.m%生成块三对角矩阵Afunction A=release(B,D,C,M,N)A=zeros((M-1)*(N-1));A(1:M-1,1:M-1)=B;A(1:M-1,M:2*(M-1))=C;A((M-1)*(N-2)+1:(M-1)*(N-1),(M-1)*(N-3)+1:(M-1)*(N-2))=D;A((M-1)*(N-2)+1:(M-1)*(N-1),(M-1)*(N-2)+1:(M-1)*(N-1))=B;for k=2:N-2A((M-1)*(k-1)+1:(M-1)*k,(M-1)*(k-1)+1:(M-1)*k)=B;A((M-1)*(k-1)+1:(M-1)*k,(M-1)*(k-2)+1:(M-1)*(k-1))=D;A((M-1)*(k-1)+1:(M-1)*k,(M-1)*k+1:(M-1)*(k+1))=C;end(4)调用函数 plot_123.mfunction plot_123(x,y,U_shuzhi,Accurate)figuresubplot(1,3,1)surf(x,y,U_shuzhi'); %按自然顺序排序输出,需将矩阵转置xlabel('x')ylabel('y')title('数值解图像')subplot(1,3,2)surf(x,y,Accurate');xlabel('x')ylabel('y')title('精确解图像')subplot(1,3,3)surf(x,y,(U_shuzhi-Accurate)');xlabel('x')ylabel('y')title('误差图像')【4】运行m文件q1.m,得到取不同步长时的数值解图像与精确解图像,以及误差图像;通过对步长与误差的拟合,可以得到收敛性以及收敛阶;比如,当M=N=30时,对应的图像如下图所示:拟合h与n,得到图像如下:得到的拟合函数为一次函数,且其系数为:可见,该方程的五点差分格式收敛,且收敛阶约为二阶,这与理论收敛阶数相一致。
Matlab解微分方程-25页word资料
第十六章 偏微分方程的数值解法科学研究和工程技术中的许多问题可建立偏微分方程的数学模型。
包含多个自变量的微分方程称为偏微分方程(partial differential equation),简称PDE 。
偏微分方程问题,其求解是十分困难的。
除少数特殊情况外,绝大多数情况均难以求出精确解。
因此,近似解法就显得更为重要。
本章仅介绍求解各类典型偏微分方程定解问题的差分方法。
16.1 几类偏微分方程的定解问题一个偏微分方程的表示通常如下:(,,,,)x x x y y y x y A B C f x y Φ+Φ+Φ=ΦΦΦ (16.1.1)式中,,,A B C 是常数,称为拟线性(quasilinear)数。
通常,存在3种拟线性方程: 双曲型(hyperbolic)方程:240B AC ->; 抛物线型(parabolic)方程:240B AC -=; 椭圆型(ellliptic)方程:240B AC -<。
16.1.2 双曲型方程最简单形式为一阶双曲型方程:0u ua t x∂∂+=∂∂ (16.1.2) 物理中常见的一维振动与波动问题可用二阶波动方程:22222u u a t x ∂∂=∂∂ (16.1.3) 描述,它是双曲型方程的典型形式。
方程的初值问题为:2222200,(,0)()()t u u at x tx u x x u x x t ϕψ=⎧∂∂=>-∞<<+∞⎪∂∂⎪⎪=⎨⎪∂⎪=-∞<<+∞⎪∂⎩ (16.1.4)边界条件一般有三类,最简单的初边值问题为:2222212000,0(,0)(0,)(),(,)()0()t u ua t T x l t x u x lu t g t u l t g t t T ux x t ϕψ=⎧∂∂==<<<<⎪∂∂⎪⎪=≤⎪⎨==≤≤⎪⎪∂=-∞<<+∞⎪∂⎪⎩ (16.1.5)16.1.3 抛物型方程其最简单的形式为一维热传导方程:220(0)u ua a t x∂∂-=>∂∂ (16.1.8) 方程可以有两种不同类型的定解问题:(1) 初值问题:2200,(,0)()u ua t x t xu x x x ϕ⎧∂∂-=>-∞<<+∞⎪∂∂⎨⎪=-∞<<+∞⎩(16.1.6)(2) 初边值问题:221200,0(,0)()0(0,)(),(,)()0u ua t T x l t x u x x x l u t g t u l t g t t Tϕ⎧∂∂-=<<<<⎪∂∂⎪⎪=≤≤⎨⎪==≤≤⎪⎪⎩(16.1.7) 其中()x ϕ,1()g t ,2()g t 为已知函数,且满足连接条件:12(0)(0),()(0)g l g ϕϕ== (16.1.8)边界条件12(0,)(),(,)()u t g t u l t g t ==为第一类边界条件。
偏微分方程的MATLAB解法
偏微分⽅程的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中求解偏微分方程的方法和应用。
二、基本概念偏微分方程(Partial Differential Equation, PDE)是关于多个变量的函数及其偏导数的方程。
在物理学和工程学中,PDE广泛应用于描述空间变量和时间变量之间的关系。
在Matlab中,求解PDE通常涉及到确定PDE类型、边界条件、初始条件和求解方法等步骤。
三、求解方法1. 有限差分法(Finite Difference Method)有限差分法是求解PDE的常用数值方法之一,它将PDE转化为差分方程组,并通过迭代求解得到数值解。
在Matlab中,可以使用pdepe 函数来求解具有一维、二维或三维空间变量的PDE,该函数可以直接处理边界条件和初始条件。
2. 有限元法(Finite Element Method)有限元法是另一种常用的数值方法,它将求解区域离散化为有限数量的单元,并通过单元之间的插值来逼近PDE的解。
Matlab提供了pdenonlin函数来求解非线性PDE,该函数支持各种复杂的几何形状和非线性材料参数。
3. 特征线法(Method of Characteristics)特征线法适用于一维双曲型PDE的求解,该方法基于特征线方程的性质来构造数值解。
在Matlab中,可以使用pdegplot函数来展示特征线,并通过构造特征线网格来求解PDE。
四、实际应用1. 热传导方程的求解假设我们需要求解一个长条形的材料中的热传导方程,可以通过在Matlab中定义边界条件和初始条件,然后使用pdepe函数来求解得到温度分布和热流线。
matlab解偏微分方程
matlab解偏微分方程偏微分方程(PDE)是描述物理系统和工程问题中的变化和变形的基本方程之一。
它们是数学方程,可以用来解决流体力学、热传递、电磁场和结构分析等领域的问题。
在MATLAB中,可以使用PDE工具箱来求解偏微分方程。
PDE工具箱是MATLAB中的一个工具箱,用于求解偏微分方程。
它提供了多种方法来求解PDE,如有限元方法、有限差分方法、谱方法等。
PDE工具箱还提供了可视化工具,可以帮助用户更好地理解方程的解。
以下是PDE工具箱的使用步骤:1. 创建偏微分方程使用PDE工具箱,可以通过选择预定义的模型或手动创建方程来定义偏微分方程。
预定义的模型包括泊松方程、热传导方程、斯托克斯方程等。
手动创建方程要求用户提供方程的系数和初始条件。
2. 定义边界条件通过定义边界条件,可以限制方程的解在特定区域内。
通常,边界条件与实际问题的物理特征有关。
例如,泊松方程的边界条件可以是Dirichlet、Neumann或Robin条件。
3. 离散化空间和时间PDE工具箱使用离散化方法来计算偏微分方程的解。
在离散化过程中,空间和时间被分割成小的网格。
离散化方法的选择取决于所使用的数值方法。
4. 求解方程完成离散化后,PDE工具箱可以求解偏微分方程。
求解器的选取依赖于方程的类型和分析目的。
例如,稳态问题可以使用静态求解器,而动态问题可以使用显式和隐式求解器。
5. 可视化解PDE工具箱提供了多种工具来可视化解。
用户可以使用等值线、箭头和图形等来显示解的不同方面。
此外,PDE工具箱还提供了交互式工具,使用户可以更改参数以观察不同的解。
总之,MATLAB的PDE工具箱提供了一个方便的方式来解决偏微分方程。
通过使用这个工具箱,用户可以创建、定义、求解和可视化偏微分方程。
matlab偏微分方程组求解
matlab偏微分方程组求解(实用版)目录1.MATLAB 求解偏微分方程组的概述2.偏微分方程组的格式和类型3.MATLAB 求解偏微分方程组的方法4.常用的 MATLAB 求解偏微分方程组的工具箱5.MATLAB 求解偏微分方程组的步骤和示例正文一、MATLAB 求解偏微分方程组的概述偏微分方程组在数学、物理、工程等领域有着广泛的应用,而 MATLAB 作为一款强大的数学软件,提供了丰富的函数和工具箱来求解偏微分方程组。
本文将介绍如何使用 MATLAB 求解偏微分方程组。
二、偏微分方程组的格式和类型偏微分方程组的格式一般为:u/x = f(x, y, u)u/y = g(x, y, u)u/z = h(x, y, u)其中,u 是未知函数,x、y、z 是自变量,f、g、h 是已知函数。
偏微分方程组的类型可以根据未知函数的个数、方程的阶数、方程的形式等进行分类。
常见的类型有一阶方程组、二阶方程组、高阶方程组、线性方程组、非线性方程组等。
三、MATLAB 求解偏微分方程组的方法MATLAB 求解偏微分方程组的主要方法有以下几种:1.符号计算法:使用 MATLAB 内置的符号计算函数,如 sym、syms、subs 等,可以方便地表示和操作偏微分方程组。
2.数值计算法:使用 MATLAB 的数值计算函数,如 ode45、ode23、ode113 等,可以求解数值形式的偏微分方程组。
3.图形可视化法:使用 MATLAB 的图形函数,如 plot、contour 等,可以直观地显示偏微分方程组的解。
四、常用的 MATLAB 求解偏微分方程组的工具箱MATLAB 中有多个工具箱可以用于求解偏微分方程组,常用的有:1.ODE Toolbox:包含求解常微分方程(ODE)和偏微分方程(PDE)的函数。
2.PDE Toolbox:专门用于求解偏微分方程的工具箱,提供了丰富的PDE 求解器和可视化工具。
3.Finite Element Toolbox:用于求解有限元方法的偏微分方程组。
九点差分格式五点差分格式matlab
九点差分格式五点差分格式matlab九点差分格式概述九点差分格式是一种数值计算方法,用于求解偏微分方程。
它是有限差分法的一种,通常用于求解二维泊松方程或热传导方程。
原理九点差分格式是通过在目标点周围的八个邻居点上进行数值计算来估计目标点的值。
其基本形式为:f(x,y) = (1/6h^2) * [4f(x+h,y)+4f(x-h,y)+4f(x,y+h)+4f(x,y-h)-20f(x,y)] + (1/3h^2) * [f(x+h,y+h)+f(x-h,y-h)+f(x+h,y-h)+f(x-h,y+h)]其中,h为网格尺寸。
优缺点九点差分格式的优点是精度较高,适用于求解高精度问题。
但由于需要使用八个邻居点进行计算,因此其计算量较大。
应用九点差分格式通常应用于求解二维泊松方程或热传导方程等偏微分方程问题。
五点差分格式概述五点差分格式是一种数值计算方法,也是有限差分法的一种。
它通常用于求解二维泊松方程或热传导方程等偏微分方程问题。
原理五点差分格式是通过在目标点周围的四个邻居点上进行数值计算来估计目标点的值。
其基本形式为:f(x,y) = (1/h^2) * [4f(x+h,y)+4f(x-h,y)+4f(x,y+h)+4f(x,y-h)-20f(x,y)]其中,h为网格尺寸。
优缺点五点差分格式的优点是计算量较小,适用于求解大规模问题。
但由于只使用了四个邻居点进行计算,因此其精度较低。
应用五点差分格式通常应用于求解二维泊松方程或热传导方程等偏微分方程问题。
由于其计算量较小,因此也适用于求解大规模问题。
Matlab中的实现Matlab是一种常用的数值计算软件,可以很方便地实现九点差分格式和五点差分格式。
以下是两种方法的Matlab代码:九点差分格式:function [u] = nine_point(f, h)[m, n] = size(f);u = zeros(m, n);for i = 2:m-1for j = 2:n-1u(i,j) = (1/6*h^2)*(4*f(i+1,j)+4*f(i-1,j)+4*f(i,j+1)+4*f(i,j-1)-20*f(i,j)) + (1/3*h^2)*(f(i+1,j+1)+f(i-1,j-1)+f(i+1,j-1)+f(i-1,j+1));endendend五点差分格式:function [u] = five_point(f, h)[m, n] = size(f);u = zeros(m, n);for i = 2:m-1for j = 2:n-1u(i,j) = (1/h^2)*(4*f(i+1,j)+4*f(i-1,j)+4*f(i,j+1)+4*f(i,j-1)-20*f(i,j));endendend以上是九点差分格式和五点差分格式的基本原理、优缺点和应用,以及在Matlab中的实现方法。
五点差分法(matlab)解椭圆型偏微分方程(1)精选全文
精选全文完整版(可编辑修改)用差分法解椭圆型偏微分方程-(Uxx+Uyy)=(pi*pi-1)e^xsin(pi*y)0<x<2; 0<y<1U(0,y)=sin(pi*y),U(2,y)=e^2sin(pi*y); 0=<y<=1U(x,0)=0, U(x,1)=0;0=<x<=2先自己去看一下关于五点差分法的理论书籍Matlab程序:unction[p e u x y k]=wudianchafenfa(h,m,n,kmax,ep)% g-s迭代法解五点差分法问题%kmax为最大迭代次数%m,n为x,y方向的网格数,例如(2-0)/0.01=200;%e为误差,p为精确解symstemp;u=zeros(n+1,m+1);x=0+(0:m)*h;y=0+(0:n)*h;for(i=1:n+1)u(i,1)=sin(pi*y(i));u(i,m+1)=exp(1)*exp(1)*sin(pi*y(i));endfor(i=1:n)for(j=1:m)f(i,j)=(pi*pi-1)*exp(x(j))*sin(pi*y(i));endendt=zeros(n-1,m-1);for(k=1:kmax)for(i=2:n)for(j=2:m)temp=h*h*f(i,j)/4+(u(i,j+1)+u(i,j-1)+u(i+1,j)+u (i-1,j))/4;t(i,j)=(temp-u(i,j))*(temp-u(i,j));u(i,j)=temp;endendt(i,j)=sqrt(t(i,j));if(k>kmax)break;endif(max(max(t))<ep)break;endendfor(i=1:n+1)for(j=1:m+1)p(i,j)=exp(x(j))*sin(pi*y(i));e(i,j)=abs(u(i,j)-exp(x(j))*sin(pi*y(i)));endEnd在命令窗口中输入:[p e u xyk]=wudianchafenfa(0.1,20,10,10000,1e-6) k=147surf(x,y,u) ;xlabel(‘x’);ylabel(‘y’);zlabel(‘u’);Title(‘五点差分法解椭圆型偏微分方程例1’)就可以得到下图surf(x,y,p)surf(x,y,e)[p e uxy k]=wudianchafenfa(0.05,40,20,10000,1e-6)[pe u x y k]=wudianchafenfa(0.025,80,40,10000,1e-6)为什么分得越小,误差会变大呢?我们试试运行:[pe u x yk]=wudianchafenfa(0.025,80,40,10000,1e-8)K=2164surf(x,y,e)误差变小了吧还可以试试[p e ux y k]=wudianchafenfa(0.025,80,40,10000,1e-10) K=3355误差又大了一点再试试[peu x y k]=wudianchafenfa(0.025,80,40,10000,1e-11)k=3952 误差趋于稳定总结:最终的误差曲面与网格数有关,也与设定的迭代前后两次差值(ep,看程序)有关;固定网格数,随着设定的迭代前后两次差值变小,误差由大比变小,中间有一个最小值,随着又增大一点,最后趋于稳定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用差分法解椭圆型偏微分方程
-(Uxx+Uyy)=(pi*pi-1)e^xsin(pi*y) 0<x<2; 0<y<1
U(0,y)=sin(pi*y),U(2,y)=e^2sin(pi*y); 0=<y<=1
U(x,0)=0, U(x,1)=0; 0=<x<=2
先自己去看一下关于五点差分法的理论书籍
Matlab程序:
unction [p e u x y k]=wudianchafenfa(h,m,n,kmax,ep)
% g-s迭代法解五点差分法问题
%kmax为最大迭代次数
%m,n为x,y方向的网格数,例如(2-0)/0.01=200;
%e为误差,p为精确解
syms temp;
u=zeros(n+1,m+1);
x=0+(0:m)*h;
y=0+(0:n)*h;
for(i=1:n+1)
u(i,1)=sin(pi*y(i));
u(i,m+1)=exp(1)*exp(1)*sin(pi*y(i));
end
for(i=1:n)
for(j=1:m)
f(i,j)=(pi*pi-1)*exp(x(j))*sin(pi*y(i));
end
end
t=zeros(n-1,m-1);
for(k=1:kmax)
for(i=2:n)
for(j=2:m)
temp=h*h*f(i,j)/4+(u(i,j+1)+u(i,j-1)+u(i+1,j)+u(i-1,j))/4; t(i,j)=(temp-u(i,j))*(temp-u(i,j));
u(i,j)=temp;
end
end
t(i,j)=sqrt(t(i,j));
if(k>kmax)
break;
end
if(max(max(t))<ep)
break;
end
end
for(i=1:n+1)
for(j=1:m+1)
p(i,j)=exp(x(j))*sin(pi*y(i));
e(i,j)=abs(u(i,j)-exp(x(j))*sin(pi*y(i)));
end
End
在命令窗口中输入:
[p e u x y k]=wudianchafenfa(0.1,20,10,10000,1e-6) k=147
surf(x,y,u) ;
xlabel(‘x’);ylabel(‘y’);zlabel(‘u’);
Title(‘五点差分法解椭圆型偏微分方程例1’)
就可以得到下图
surf(x,y,p)
surf(x,y,e)
[p e u x y k]=wudianchafenfa(0.05,40,20,10000,1e-6)
[p e u x y k]=wudianchafenfa(0.025,80,40,10000,1e-6)
为什么分得越小,误差会变大呢?
我们试试运行:
[p e u x y k]=wudianchafenfa(0.025,80,40,10000,1e-8)
K=2164
surf(x,y,e)
误差变小了吧
还可以试试
[p e u x y k]=wudianchafenfa(0.025,80,40,10000,1e-10) K=3355
误差又大了一点
再试试
[p e u x y k]=wudianchafenfa(0.025,80,40,10000,1e-11) k=3952
误差趋于稳定
总结:
最终的误差曲面
与网格数有关,也与设定的迭代前后两次差值(ep,看程序)有关;固定网格数,随着设定的迭代前后两次差值变小,误差由大比变小,中间有一个最小值,随着又增大一点,最后趋于稳定。
也许可以去研究一下那个误差最小的地方或者研究趋于稳定时的临界值。