文档库 最新最全的文档下载
当前位置:文档库 › 有限差分法解决平面弹性问题的matlab建模仿真

有限差分法解决平面弹性问题的matlab建模仿真

有限差分法解决平面弹性问题的matlab建模仿真
有限差分法解决平面弹性问题的matlab建模仿真

用有限差分法解决弹性平面问题的建模与仿真的报告

建模与仿真的目的 :解决弹性平面问题——偏心拉伸应力问题,并与 实验数值理论解相比较。

建模与仿真的基本原理:有限差分法

建模与仿真的方法途径:经过理论推导出所求变量所满足的关系,通过Matlab 软件进行数学建模,将物理语言和数学语言转化成计算机语言,进行计算。应用软件进行绘图,将抽象的数学表示法转化成直观的形象具体的图像,进行展示,使人们对该建模所研究的问题有更清晰而感性的认识。

报告论文结构: (一)基本原理介绍(差分法)

(二)偏心拉伸问题的理论推导

(三)建模与仿真的具体方法(应用Matlab 软件)

(四)结果展示

(五)建模程序特点介绍

(六)与实验结果、理论结果的对比

(七)前进展望与程序改进

(八)任务分工

*******************************************************************************

一、基本原理——有限差分法 的介绍

有限差分法使用差分方程代替微分方程,从而把基本方程微分方程限组和边界条件求解化为代数方程组的求解。在将偏微分方程和相应的边界条件转换成有限差分方程之前,我们先将函数的导数改用差分表示,从而导出常用的差分公式。

二、关于偏心拉伸应力问题的理论推导

对于边界外一行的结点,我们适当的选择一个基点A ,使得

φA =0,(δφ/δx)A =0,(δφ/δy)A =0 ,

这样我们可以通过推导得到边界点满足的方程:

(δφ/δy)B =∫X B A ds (δφ/δx)B =?∫Y B A ds φB =∫(y B ?y)X B A ds+∫(x ?x B )Y B

A ds 而对于边界外一圈的虚结点,有公式:

φ13=φ9+2h x (δφ/δx)A φ14=φ10+2h y (δφ/δx)B

因而我们可以用内点和边界点表示出边界外一圈虚点,由此平面上的任意点的应

力函数都可以用平面上其他十二个点的应力函数表示,列出这些方程,由外及内,依次解出各点的应力函数。进而应用公式(ⅠⅡⅢ)求得个点正应力和切应力。

三、建模与仿真的具体方法

对于我们研究的偏心拉伸问题:

10 steps ↑F

↓F

水平方向(x方向)分成n x-2等分,每一份网格长度为h x,连同外一圈虚结点,水平方向共有n x个结点;

竖直方向(y方向)分成n y-2等分,每一份网格长度为h y,连同外一圈虚结点,竖直方向共有n y个结点;

画出差分法所要求的网格形式,并将每一点的应力函数表示出来,如图示:

φ11,φ12,φ13,? ??φ1nx

φ21,φ22,? ???

·

·

·

φny 1,? ???φny nx

(一)选基点 :φ22=0,(δφ/δx)22=0,(δφ/δy)22=0

(二)计算边界点 :左 :φm2=∫(y m2?y)X m222ds+∫(x ?x m2)Y m222ds = 0

右:φm nx?1=∫(y m nx?1?y)X m nx?122ds+∫(x ?m nx?122 x m nx?1)Y ds = 0

以上m 取值从3到(n y -2)

上 :φ22=····=φ2 nx?2=0 φ2 nx?1= F*hx/2

下 :φny?1 2=····=φny?1 nx?2=0 φny?1 nx?1= F*hx/2 (三)求虚结点 :左 :φm 1=φm 3+2h x (δφ/δx)m 2

(δφ/δx)m 2=?∫Y m 22 2ds ;其中Y=0;

故(δφ/δx)m 2=0

因此得到 φm 1=φm 3 ;其中,m 取值从2到ny-1 右 :φm nx =φm nx?2+2h x (δφ/δx)m nx?2

(δφ/δx)m nx?1=?∫Y m nx?12 2ds =F

由此得到 φm nx =φm nx?2+2F h x (其中,m 取值从2到ny ?2) 同理 对于m=ny-1 , φny?1 nx =φny?1 nx?2+2F h x

虚节点上 :φ1 m =φ3 m +2h y (δφ/δx)2 m

方法同上 可得φ1 m =φ3 m (其中,m 取值从1到nx-2) 虚节点下 :φny m =φny?2 m +2h y (δφ/δx)ny?1 m

方法同上 可得φny m =φny?2 m (其中,m 取值从1到nx-2)对四个顶点虚点,假设φ1 1=φ1 nx =φny 1=φny nx =0

平面内每一个节点与其周围十二个结点的关系方程满足:

20φij-8(φi j+1+φi+1 j+φi j?1+φi?1 j)+2(φi?1 j+1+φi+1 j+1+φi+1 j?1+φi?1 j?1)+(φi j+2+φi+2 j+φi j?2+φi?2 j)=0

从而解出个点应力函数的值。

在Matlab 编程中,我们利用矩阵求解的方法,将各个点φ值以先横行再竖行

的排列方法(如第一行排列完再排第二行、第二行排列完再排第三行的顺序)将所有φ值排列成一个nx*ny行、一列的矩阵A;再按前面所讲的应力函数之间的关系式写出系数矩阵W和b由WA=b, 求得A= W?1b .

再应用公式(ⅠⅡⅢ)求得个点正应力和切应力。最后应用软件画图。四、结果展示

五、建模程序特点

①在进行边界条件求解时,直接应用作用点所受拉力F进行计算,避免了应用

圣维南原理进行应力等效,这样不但避免了误差,而且使计算更为简便(因为除拉力作用点以外,其他边界点的受力为0),真是并且更贴近实际实验过程。

②程序编写过程中,使每一小格横向和纵向的长度((h x或h y))不相等时仍然适用,使得本建模过程应用范围更广泛(不只局限于方格划分的情况)。

③在程序编写过程中,引入循环坐标变量m,使得程序更加简便,可读性强,并且实用性更强,适用性更加广泛。

六、与实验结果、理论结果的对比

长:0.20m 宽:0.03m F:3600N

B

理论结果:sigma_y=-2*F/L+6*F/L/L*x

求得:σA= -240000N σB= 480000N

实验结果:σA= -204970N σB= 489250N

数值结果:σA?= -221600N σB?= 480760N

实验误差:μA=|σA?σA?

σA |= 0.750 μB=|σB?σB?

σB

|=0.017

结果总结:本建模仿真基本上达到了代替展示真实实验结果的仿真目的。

七、前景展望及程序改进

展望:

通过本次建模,我们可以大体上实现应用计算机对平面应力问题的仿真,因此稍作修改,加之相应的外界条件,既可作为许多大型工程软件的一部分,从而实现了它的应用价值。

有待完善的地方:

由于程序中定义了矩阵B(nx*ny,nx*ny),(其中nx,ny为x轴方向与y轴方向分割点数)当nx*ny过大时,程序将超出matlab解线性方程对系数矩阵大小的限制。

八、任务分工:

铁三角团队

有限差分法求解偏微分方程MATLAB教学教材

有限差分法求解偏微分方程M A T L A B

南京理工大学 课程考核论文 课程名称:高等数值分析 论文题目:有限差分法求解偏微分方程姓名:罗晨 学号: 115104000545 成绩: 有限差分法求解偏微分方程

一、主要内容 1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程: 22(,)()u u f x t t x αα??-=??其中为常数 具体求解的偏微分方程如下: 22001 (,0)sin()(0,)(1,)00 u u x t x u x x u t u t t π???-=≤≤?????? =??? ==≥??? 2.推导五种差分格式、截断误差并分析其稳定性; 3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析; 4.结论及完成本次实验报告的感想。 二、推导几种差分格式的过程: 有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。 推导差分方程的过程中需要用到的泰勒展开公式如下: ()2 100000000()()()()()()()......()(()) 1!2!! n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+- (2-1) 求解区域的网格划分步长参数如下:

【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现

第1章前言 1.1问题背景 在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。诸如粒子扩散或神经细胞的动作电位。也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。热方程及其非线性的推广形式也被应用与影响分析。 在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。 科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。 解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。 1.2问题现状 近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。而且精度上更好。 目前,在欧美各国MATLAB的使用十分普及。在大学的数学、工程和科学系科,MATLAB

有限差分法求解偏微分方程MATLAB

南京理工大学 课程考核论文 课程名称:高等数值分析 论文题目:有限差分法求解偏微分方程姓名:罗晨 学号: 成绩: 有限差分法求解偏微分方程

一、主要内容 1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程: 22(,)()u u f x t t x αα??-=??其中为常数 具体求解的偏微分方程如下: 22001 (,0)sin()(0,)(1,)00 u u x t x u x x u t u t t π???-=≤≤?????? =??? ==≥??? 2.推导五种差分格式、截断误差并分析其稳定性; 3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析; 4.结论及完成本次实验报告的感想。 二、推导几种差分格式的过程: 有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。 推导差分方程的过程中需要用到的泰勒展开公式如下: ()2100000000()()()()()()()......()(()) 1!2!! n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+- (2-1) 求解区域的网格划分步长参数如下:

一维导热方程 有限差分法 matlab实现

第五次作业(前三题写在作业纸上) 一、用有限差分方法求解一维非定常热传导方程,初始条件和边界条件见说明.pdf 文件,热扩散系数α=const , 22T T t x α??=?? 1. 用Tylaor 展开法推导出FTCS 格式的差分方程 2. 讨论该方程的相容性和稳定性,并说明稳定性要求对求解差分方程的影响。 3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。 4. 编写M 文件求解上述方程,并用适当的文字对程序做出说明。(部分由网络搜索得到,添加,修改后得到。) function rechuandaopde %以下所用数据,除了t 的范围我根据题目要求取到了20000,其余均从pdf 中得来 a=0.00001;%a 的取值 xspan=[0 1];%x 的取值范围 tspan=[0 20000];%t 的取值范围 ngrid=[100 10];%分割的份数,前面的是t 轴的,后面的是x 轴的 f=@(x)0;%初值 g1=@(t)100;%边界条件一 g2=@(t)100;%边界条件二 [T,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid);%计算所调用的函数 [x,t]=meshgrid(x,t); mesh(x,t,T);%画图,并且把坐标轴名称改为x ,t ,T xlabel('x') ylabel('t') zlabel('T') T%输出温度矩阵 dt=tspan(2)/ngrid(1);%t 步长 h3000=3000/dt;

h9000=9000/dt; h15000=15000/dt;%3000,9000,15000下,温度分别在T矩阵的哪些行T3000=T(h3000,:) T9000=T(h9000,:) T15000=T(h15000,:)%输出三个时间下的温度分布 %不再对三个时间下的温度-长度曲线画图,其图像就是三维图的截面 %稳定性讨论,傅里叶级数法 dx=xspan(2)/ngrid(2);%x步长 sta=4*a*dt/(dx^2)*(sin(pi/2))^2; if sta>0,sta<2 fprintf('\n%s\n','有稳定性') else fprintf('\n%s\n','没有稳定性') error end %真实值计算 [xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid); [xe,te]=meshgrid(xe,te); mesh(xe,te,Te);%画图,并且把坐标轴名称改为xe,te,Te xlabel('xe') ylabel('te') zlabel('Te') Te%输出温度矩阵 %误差计算 jmax=1/dx+1;%网格点数 [rms]=wuchajisuan(T,Te,jmax) rms%输出误差

有限差分法的Matlab程序(椭圆型方程)

有限差分法的Matlab程序(椭圆型方程) function FD_PDE(fun,gun,a,b,c,d) % 用有限差分法求解矩形域上的Poisson方程 tol=10^(-6); % 误差界 N=1000; % 最大迭代次数 n=20; % x轴方向的网格数 m=20; % y轴方向的网格数 h=(b-a)/n; % x轴方向的步长 l=(d-c)/m; % y轴方向的步长 for i=1:n-1 x(i)=a+i*h; end % 定义网格点坐标 for j=1:m-1 y(j)=c+j*l; end % 定义网格点坐标 u=zeros(n-1,m-1); %对u赋初值 % 下面定义几个参数 r=h^2/l^2; s=2*(1+r); k=1; % 应用Gauss-Seidel法求解差分方程 while k<=N % 对靠近上边界的网格点进行处理 % 对左上角的网格点进行处理 z=(-h^2*fun(x(1),y(m-1))+gun(a,y(m-1))+r*gun(x(1),d)+r*u(1,m-2)+u(2,m-1))/s; norm=abs(z-u(1,m-1)); u(1,m-1)=z; % 对靠近上边界的除第一点和最后点外网格点进行处理 for i=2:n-2 z=(-h^2*fun(x(i),y(m-1))+r*gun(x(i),d)+r*u(i,m-2)+u(i+1,m-1)+u(i-1,m-1))/s; if abs(u(i,m-1)-z)>norm; norm=abs(u(i,m-1)-z); end u(i,m-1)=z; end % 对右上角的网格点进行处理 z=(-h^2*fun(x(n-1),y(m-1))+gun(b,y(m-1))+r*gun(x(n-1),d)+r*u(n-1,m-2)+u(n-2,m-1))/s; if abs(u(n-1,m-1)-z)>norm norm=abs(u(n-1,m-1)-z); end u(n-1,m-1)=z; % 对不靠近上下边界的网格点进行处理 for j=m-2:-1:2 % 对靠近左边界的网格点进行处理

差分方程的解法分析及MATLAB实现(程序)

差分方程的解法分析及MATLAB 实现(程序) 摘自:张登奇,彭仕玉.差分方程的解法分析及其MATLAB 实现[J]. 湖南理工学院学报.2014(03) 引言 线性常系数差分方程是描述线性时不变离散时间系统的数学模型,求解差分方程是分析离散时间系统的重要内容.在《信号与系统》课程中介绍的求解方法主要有迭代法、时域经典法、双零法和变换域 法[1]. 1 迭代法 例1 已知离散系统的差分方程为)1(3 1)()2(81)1(43)(-+=-+--n x n x n y n y n y ,激励信号为)()4 3()(n u n x n =,初始状态为21)2(4)1(=-=-y y ,.求系统响应. 根据激励信号和初始状态,手工依次迭代可算出24 59)1(,25)0(==y y . 利用MATLAB 中的filter 函数实现迭代过程的m 程序如下: clc;clear;format compact; a=[1,-3/4,1/8],b=[1,1/3,0], %输入差分方程系数向量,不足补0对齐 n=0:10;xn=(3/4).^n, %输入激励信号 zx=[0,0],zy=[4,12], %输入初始状态 zi=filtic(b,a,zy,zx),%计算等效初始条件 [yn,zf]=filter(b,a,xn,zi),%迭代计算输出和后段等效初始条件 2 时域经典法 用时域经典法求解差分方程:先求齐次解;再将激励信号代入方程右端化简得自由项,根据自由项形 式求特解;然后根据边界条件求完全解[3].用时域经典法求解例1的基本步骤如下. (1)求齐次解.特征方程为081432=+-αα,可算出4 1 , 2121==αα.高阶特征根可用MATLAB 的roots 函数计算.齐次解为. 0 , )4 1()21()(21≥+=n C C n y n n h (2)求方程的特解.将)()4 3()(n u n x n =代入差分方程右端得自由项为 ?????≥?==-?+-1,)4 3(9130 ,1)1()43(31)()43(1n n n u n u n n n 当1≥n 时,特解可设为n p D n y )4 3()(=,代入差分方程求得213=D . (3)利用边界条件求完全解.当n =0时迭代求出25)0(=y ,当n ≥1时,完全解的形式为 ,)4 3(213 )41()21()(21n n n C C n y ?++=选择求完全解系数的边界条件可参考文[4]选)1(),0(-y y .根据边界条件求得35,31721=-=C C .注意完全解的表达式只适于特解成立的n 取值范围,其他点要用 )(n δ及其延迟表示,如果其值符合表达式则可合并处理.差分方程的完全解为

电磁场实验一_有限差分法的matlab实现

电磁场与电磁波实验报告 实验项目:_______有限差分法__ ____ 班级:_____ __12电子2 ____ __ 实验日期:__2014年12月23日 姓名:___ _ __陈奋裕 __ __ 学号:___ ___1215106003 _____ 组员姓名:___ _ __ __ __ 组员学号:___ ___ _____ 指导教师:_ ____张海 ______

一、实验目的及要求 1、学习有限差分法的原理与计算步骤; 2、学习用有限差分法解静电场中简单的二维静电场边值问题; 3、学习用Matlab 语言描述电磁场与电磁波中内容,用matlab 求解问题并用图形表示出了,学习matlab 语言在电磁波与电磁场中的编程思路。 二、实验内容 理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识; 实践学习:学习用matlab 语言编写有限差分法计算二维静电场边值问题; 三、实验仪器或软件 电脑(WIN7)、Matlab7.11 四、实验原理 基本思想是把连续的定解区域用有限个离散点构成的网格来代替, 这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。 简单迭代法: 这一方法的求解过程是,先对场域内的节点赋予迭代初值(0),i j ?,这里上标(0)表示0次 (初始)近似值。然后按Laplace 方程 (k 1)(k)(k)(k)(k),1,,11,,11 []4 i j i j i j i j i j ?????+--++=+++(i,j=1,2,…) 进行反复迭代(k=0,1,2,…)。若当第N 次迭代以后,所有的内节点的相邻两次迭代值之间的最大误差不超过允许范围,即 (N)(N-1) ,,max|-|

用matlab实现线性常系数差分方程的求解

数字信号处理课程设计 题目:试实现线性常系数差分方程的求解 学院: 专业: 班级: 学号: 组员: 指导教师:

题目:用Matlab 实现线性常系数差分方程求解 一. 设计要求 1. 掌握线性常系数差分方程的求解 2. 熟练掌握Matlab 基本操作和各类函数调用 3. 结合Matlab 实现线性常系数差分方程的求解 二.设计原理 1.差分与差分方程 与连续时间信号的微分及积分运算相对应,离散时间信号有差分及序列求和运算。设有序列f(k),则称…,f(k+2),f(k+1),…,f(k -1),f(k -2),…为f(k)的移位序列。序列的差分可以分为前向差分和后向差分。一阶前向差分定义为 ()(1)()f k f k f k ?=+- (3.1—1) 一阶后向差分定义为 ()()(1)f k f k f k ?=-- (3.1—2) 式中Δ和Δ称为差分算子。由式(3.1—1)和式(3.1—2)可见,前向差分与后向差分的关系为 ()(1)f k f k ?=?- (3.1—3) 二者仅移位不同,没有原则上的差别,因而它们的性质也相同。此处主要采用后向差分,并简称其为差分。 由查分的定义,若有序列1()f k 、2()f k 和常数1a ,2a 则 1122112211221112221122[()()][()()][(1)(1)][()(1)][()(1)]()() a f k a f k a f k a f k a f k a f k a f k f k a f k f k a f k a f k ?+=+--+-=--+--=?+? (3.1—4) 这表明差分运算具有线性性质。 二阶差分可定义为 2()[()][()(1)]()(1) ()2(1)(2) f k f k f k f k f k f k f k f k f k ?=??=?--=?-?-=--+- (3.1—5) 类似的,可定义三阶、四阶、…、n 阶差分。一般地,n 阶差分

基于MATLAB的线性常系数差分方程求解.

数字信号处理课程设计 题目:基于MATLAB的线性常系数差分方程求解学院: 专业: 班级: 学号: 姓名: 指导教师:

目录 摘要 (1) 第一章背景 (3) 1.1 背景知识 (3) 1.2 《数字信号课程》特点 (3) 1.3 软件介绍 (4) 1.4 MATLAB及数字信号处理 (4) 第二章设计目的及要求 (6) 2.1 设计目的 (6) 2.2 课程设计的内容要求 (7) 2.2.1 设计要求 (7) 第三章设计任务 (8) 第四章设计原理 (9) 4.1 差分与差分方程 (9) 4.2 线性常系数差分方程 (14) 4.3 线性常系数差分方程的求解 (15) 第五章设计过程 (16) 5.1 用MATLAB求解差分方程 (16) 第六章设计代码及结果 (18) 6.1 MATLAB源程序 (18) 6.2 程序运行结果 (20) 6.3 比较结果总结 (24) 第七章收获与体会 (25) 致谢 (27) 参考文献 (28)

摘要 《数字信号处理》分析了数字信号处理课程的重要性及特点,为了帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法,提出了用MATLAB进行数字信号处理课程设计的思路,并阐述了课程设计的具体方法、步骤和内容。 MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编成效率高,深受广大科技工作者的喜爱,特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行语音信号分析、处理和设计。 线性常系数差分方程求解是数字信号处理课程中常出现的课题,也是现代科学中值得深入研究的一个课题 本文介绍了线性常系数差分方程的基本概念,论述了其求解方法,并用MATLAB具体实现了线性常系数差分方程的求解。 基于MATLAB的线性常系数差分方程求解主要是用MATLAB作为工具平台,设计中涉及到差分方程的递推求解以及用filter对系数向量的归一化等等。通过数字信号处理课程的理论知识的综合运用,从实践上初步实现对数字信号的处理。 关键字:MATLAB,线性常系数差分方程,数字信号处理。

matlab实现有限差分法计算电场强度(最新)

实验一:有限差分法研究静电场边值问题 实验报告人:年级和班级:学号: 1. 实验用软件工具: Matlab 2. 实验原理:电磁场课本P36-38 1)差分方程 2)差分方程组的解 简单迭代法 高斯-赛德尔迭代法 逐次超松弛法 3. 实验步骤: 1)简单迭代法 程序: hx=41;hy=21; v1=zeros(hy,hx); v1(hy,:)=zeros(1,hx); v1(1,:)=ones(1,hx)*100; v1(:,1)=zeros(hy,1); v1(:,hx)=zeros(hy,1); v1 v2=v1;maxt=1;t=0; k=0; while(maxt>1e-5) k=k+1; maxt=0; for i=2:hy-1 for j=2:hx-1 v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4; t=abs(v2(i,j)-v1(i,j)); if(t>maxt) maxt=t;end end end v1=v2; end v2 k clf subplot(1,2,1),mesh(v2) axis([0,41,0,21,0,100]) subplot(1,2,2),contour(v2,15) hold on

axis([-1,42,-1,25]) plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r') text(hx/2,0.3,'0V','fontsize',11); text(hx/2-0.5,hy+0.5,'100V','fontsize',11); text(-0.5,hy/2,'0V','fontsize',11); text(hx+0.3,hy/2,'0V','fontsize',11); hold off 当W=1e-5, 迭代次数:1401次 2)高斯-赛德尔迭代法 程序: hx=41;hy=21; v1=ones(hy,hx); v1(hy,:)=zeros(1,hx); v1(1,:)=ones(1,hx)*100; v1(:,1)=zeros(hy,1); v1(:,hx)=zeros(hy,1); v2=v1;maxt=1;t=0; k=0; while(maxt>1e-5) k=k+1; maxt=0; for i=2:hy-1 for j=2:hx-1 v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1))/4; t=abs(v2(i,j)-v1(i,j)); if(t>maxt) maxt=t;end end end v1=v2; end v2 k clf subplot(1,2,1),mesh(v2) axis([0,41,0,21,0,100]) subplot(1,2,2),contour(v2,15) hold on axis([-1,42,-1,25]) plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r') text(hx/2,0.3,'0V','fontsize',11); text(hx/2-0.5,hy+0.5,'100V','fontsize',11); text(-0.5,hy/2,'0V','fontsize',11); text(hx+0.3,hy/2,'0V','fontsize',11); hold off

Matlab求解微分方程(组)及偏微分方程(组)

创作编号:BG7531400019813488897SX 创作者:别如克* 第四讲Matlab求解微分方程(组) 理论介绍:Matlab求解微分方程(组)命令 求解实例:Matlab求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介 1.在Matlab中,用大写字母D表示导数,Dy表示y关于自变量的一阶导数,D2y表示y关于自变量的二阶导数,依此类推.函数dsolve用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解. 注意,系统缺省的自变量为t 2.函数dsolve求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver为命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb、ode15i之一.

(2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0 t 到f t 用初始条件0y 求解. (3)如果要获得微分方程问题在其他指定时间点012,,,,f t t t t 上的解,则 令tspan 012[,,, ]f t t t t =(要求是单调的). (4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供了多种求解器solver ,对于不同的ODE 问题,采用不同的solver. 表1 Matlab 中文本文件读写函数 说明:ode23、ode45是极其常用的用来求解非刚性的标准形式的一阶微分方程(组)的初值问题的解的Matlab 常用程序,其中: ode23采用龙格-库塔2阶算法,用3阶公式作误差估计来调节步长,具有低等的精度. ode45则采用龙格-库塔4阶算法,用5阶公式作误差估计来调节步长,具有中等的精度.

2.差分方程及其求解---数字信号处理实验报告

计算机与信息工程学院验证性实验报告 一、实验目的 1.学习并掌握系统的差分方程表示方法以及差分方程的相关概念。 2.熟练使用filter 函数对差分方程进行数值求解。 3.掌握差分方程的求解及MATLAB 实现方法。 二、实验原理及方法 1.一LTI 系统可以用一个线性常系数差分方程表示: 00()()N M k m k m a y n k b x n m ==-=-∑∑,任意n 如果N a ≠0,那么这个差分方程就是N 阶的,已知系统的输入序列,用这个方程可以根据当前输入x(n)和以前M 点的输入x(n-m ),…,x(n-1),以及以前N 点的输出y(n-N),…,y(n -1)来计算当前输出y(n)。在实际中这个方程在时间上是从n =-∞到n =+∞朝前计算的,因此该方程的另一种形式是: 00()()()M N m k m k y n b x n m a y n k ===---∑∑ 方程的解能以下面形式求得:()()()H p y n y n y n =+分别为方程的齐次解跟特解部分。已知输入和差分方程的稀疏,可用filter 对差分方程进行数值求解。最简单形式为:y=filter(b,a,x) 其中b=[b0,b1,…,bM];a=[a0,a1,…,aN]; 2.上面差分方程解的形式为齐次解和特解,另外还可以求零输入解和零状态解理论计算中要用到z 变换,请好好掌握z 变换的内容。用MATLAB 实现时,若已知初始条件,则应用y=filter(b,a, x, xic)来求完全响应。这里xic 是初始状态输入数组。MATLAB 还提供一种filtic 函数来得到xic 。

有限差分法

电磁场与电磁波项目训练报告 求解金属槽的电位分布 班级:通信13-4 姓名: 学号: 指导教师:徐维 成绩: 电子与信息工程学院 信息与通信工程系

求解金属槽的电位分布 1.实验原理 利用有限差分法和matlab软件解决电位在金属槽中的分布。 有限差分法基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解.然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解.在采用数值计算方法求解偏微分方程时,若将每一处导数由有限差分近似公式替代,从而把求解偏微分方程的问题转换成求解代数方程的问题。 2.有限差分法 方程的定解问题就是在满足某些定解条件下求微分方程的解。在空间区域的边界上要满足的定解条件称为边值条件。如果问题与时间有关,在初始时刻所要满足的定解条件,称为初值条件。不含时间而只带边值条件的定解问题,称为边值问题。与时间有关而只带初值条件的定解问题,称为初值问题。同时带有两种定解条件的问题,称为初值边值混合问题。 定解问题往往不具有解析解,或者其解析解不易计算。所以要采用可行的数值解法。有限差分方法就是一种数值解法,它的基本思想是先把问题的定义域进行网格剖分,然后在网格点上,按适当的数值微分公式把定解问题中的微商换成差商,从而把原问题离散化为差分格式,进而求出数值解。此外,还要研究差分格式的解的存在性和唯一性、解的求法、解法的数值稳定性、差分格式的解与原定解问题的真解的误差估计、差分格式的解当网格大小趋于零时是否趋于真解(即收敛性),等等。 有限差分方法具有简单、灵活以及通用性强等特点,容易在计算机上实现。 2.1有限差分法原理

一维扩散方程的有限差分法matlab

一维扩散方程的有限差分法 ——计算物理实验作业七 陈万 ● 题目: 编程求解一维扩散方程的解 取1.0,1.0,1.0,10,0.1,0,1,1,0,1,1max 0222111======-=====τh D t a c b a c b a 。输出t=1,2,...,10时刻的x 和u(x),并与解析解u=exp(x+0.1t)作比较。 ● 主程序: % 一维扩散方程的有限差分法 clear,clc; %定义初始常量 a1 = 1; b1 = 1; c1 = 0; a2 = 1;b2 = -1; c2 = 0; a0 = 1.0; t_max = 10; D = 0.1; h = 0.1; tao = 0.1; %调用扩散方程子函数求解 u = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2); ● 子程序1: function output = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2) % 一维扩散方程的有限差分法,采用隐式六点差分格式(Crank-Nicolson) % a0: x 的最大值 % t:_max: t 的最大值 % h: 空间步长 % tao: 时间步长

% D:扩散系数 % a1,b1,c1是(x=0)边界条件的系数;a2,b2,c2是(x=a0)边界条件的系数x = 0:h:a0; n = length(x); t = 0:tao:t_max; k = length(t); P = tao * D/h^2; P1 = 1/P + 1; P2 = 1/P - 1; u = zeros(k,n); %初始条件 u(1,:) = exp(x); %求A矩阵的对角元素d d = zeros(1,n); d(1,1) = b1*P1+h*a1; d(2:(n-1),1) = 2*P1; d(n,1) = b2*P1+h*a2; %求A矩阵的对角元素下面一行元素e e = -ones(1,n-1); e(1,n-1) = -b2; %求A矩阵的对角元素上面一行元素f f = -ones(1,n-1); f(1,1) = -b1; R = zeros(k,n);%求R %追赶法求解

Matlab求解微分方程(组)及偏微分方程(组)

第四讲 Matlab 求解微分方程(组) 理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介 1.在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推.函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解. 注意,系统缺省的自变量为t 2.函数dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver ,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一. (2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t 用初始条件0y 求解. (3)如果要获得微分方程问题在其他指定时间点012,,,,f t t t t 上的解,则令 tspan 012[,,, ]f t t t t =(要求是单调的). (4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供了多种求解器solver ,对于不同的ODE 问题,采用不同的solver.

Matlab解微分方程

第十六章 偏微分方程的数值解法 科学研究和工程技术中的许多问题可建立偏微分方程的数学模型。包含多个自变量的微分方程称为偏微分方程(partial differential equation),简称PDE 。偏微分方程问题,其求解是十分困难的。除少数特殊情况外,绝大多数情况均难以求出精确解。因此,近似解法就显得更为重要。本章仅介绍求解各类典型偏微分方程定解问题的差分方法。 16.1 几类偏微分方程的定解问题 一个偏微分方程的表示通常如下: (,,,,)xx xy yy 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 u a t x ??+=?? (16.1.2) 物理中常见的一维振动与波动问题可用二阶波动方程: 22222u u a t x ??=?? (16.1.3) 描述,它是双曲型方程的典型形式。方程的初值问题为:

222220 0,(,0)()()t u u a t x t x u x x u x x t ?ψ=???=>-∞<<+∞ ????? =?? ??=-∞<<+∞ ??? (16.1.4) 边界条件一般有三类,最简单的初边值问题为: 22222120 00,0(,0)(0,)(),(,)()0()t u u a t T x l t x u x l u t g t u l t g t t T u x x t ?ψ=???==<<<?? (16.1.8) 方程可以有两种不同类型的定解问题: (1) 初值问题: 2200,(,0)()u u a t x t x u x x x ????-=>-∞<<+∞? ????=-∞<<+∞ ? (16.1.6) (2) 初边值问题: 2212 00,0(,0)()0(0,)(),(,)()0u u a t T x l t x u x x x l u t g t u l t g t t T ????-=<<<

有限差分法求解偏微分方程matlab

理工大学 课程考核论文 课程名称:高等数值分析 论文题目:有限差分法求解偏微分方程姓名:罗晨 学号:115104000545 成绩:

有限差分法求解偏微分方程 一、主要容 1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程: 22(,)()u u f x t t x αα??-=??其中为常数 具体求解的偏微分方程如下: 22001 (,0)sin()(0,)(1,)00 u u x t x u x x u t u t t π???-=≤≤?????? =??? ==≥??? 2.推导五种差分格式、截断误差并分析其稳定性; 3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析; 4.结论及完成本次实验报告的感想。 二、推导几种差分格式的过程: 有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。 推导差分方程的过程中需要用到的泰勒展开公式如下: ()2100000000()()()()()()()......()(()) 1!2!! n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+-

相关文档
相关文档 最新文档