有限差分法及matlab实现
- 格式:pdf
- 大小:399.95 KB
- 文档页数:13
二维有限差分代码MATLAB一、介绍有限差分方法是一种常用的数值求解偏微分方程的方法,它将连续的偏微分方程转化为离散的代数方程。
其中,二维有限差分是在二维空间中对偏微分方程进行离散化求解的方法。
MATLAB是一种广泛应用于科学计算和工程领域的编程语言和软件评台,它提供了丰富的工具箱和函数,可以方便地实现二维有限差分方法。
二、二维有限差分的基本原理假设要求解的偏微分方程为二维波动方程:∂^2u/∂t^2 = c^2(∂^2u/∂x^2 + ∂^2u/∂y^2)其中,u代表波动的振幅,t代表时间,x、y分别代表二维空间中的坐标,c为波速。
利用有限差分方法对偏微分方程进行离散化,可以得到一组代数方程。
假设在二维空间中取N个网格点,将空间进行离散化,可得到离散的网格点坐标(xi, yj),其中i,j=1,2,...,N。
对时间进行离散化,得到时间步长Δt,可得到离散的时间点tk,其中k=0,1,2,...,M。
用中心差分格式离散化偏微分方程,可得到如下的差分方程:(u(i,j,tk+Δt) - 2u(i,j,tk) + u(i,j,tk-Δt)) / Δt^2 = c^2(u(i+1,j,tk) -2u(i,j,tk) + u(i-1,j,tk)) / Δx^2 + c^2(u(i,j+1,tk) - 2u(i,j,tk) + u(i,j-1,tk)) / Δy^2将上述差分方程用适当的边界条件离散化,就可以得到求解二维波动方程的代数方程组。
三、 MATLAB实现二维有限差分MATLAB提供了丰富的工具箱和函数,可以方便地实现二维有限差分方法。
以下是使用MATLAB实现二维有限差分的基本步骤:1. 网格的生成首先需要生成二维空间中的网格点,可以使用meshgrid函数生成网格点的坐标。
假设在x、y方向上分别取N个网格点,则可以用如下的代码生成网格点坐标:```MATLABx = linspace(0, L, N);y = linspace(0, W, N);[X, Y] = meshgrid(x, y);```其中,L为空间在x方向上的长度,W为空间在y方向上的宽度。
matlab有限差分法一、前言Matlab是一种广泛应用于科学计算和工程领域的计算机软件,它具有简单易学、功能强大、易于编程等优点。
有限差分法(Finite Difference Method)是一种常用的数值解法,它将微分方程转化为差分方程,通过对差分方程进行离散化求解,得到微分方程的数值解。
本文将介绍如何使用Matlab实现有限差分法。
二、有限差分法基础1. 有限差分法原理有限差分法是一种通过将微分方程转化为离散形式来求解微分方程的数值方法。
其基本思想是将求解区域进行网格划分,然后在每个网格点上进行逼近。
假设要求解一个二阶常微分方程:$$y''(x)=f(x,y(x),y'(x))$$则可以将其转化为离散形式:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$其中$h$为网格步长,$y_i$表示在$x_i$处的函数值。
2. 一维情况下的有限差分法对于一维情况下的常微分方程:$$\frac{d^2 y}{dx^2}=f(x,y,y')$$可以使用中心差分法进行离散化:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$这个方程可以写成矩阵形式:$$A\vec{y}=\vec{b}$$其中$A$为系数矩阵,$\vec{y}$为函数值向量,$\vec{b}$为右端项向量。
三、Matlab实现有限差分法1. 一维情况下的有限差分法假设要求解的方程为:$$\frac{d^2 y}{dx^2}=-\sin(x)$$首先需要确定求解区域和网格步长。
在本例中,我们将求解区域设为$[0,2\pi]$,网格步长$h=0.01$。
则可以通过以下代码生成网格:```matlabx = 0:0.01:2*pi;```接下来需要构造系数矩阵和右端项向量。
根据上面的公式,系数矩阵应该是一个三对角矩阵,可以通过以下代码生成:```matlabn = length(x)-2;A = spdiags([-ones(n,1), 2*ones(n,1), -ones(n,1)], [-1 0 1], n, n); ```其中`spdiags`函数用于生成一个稀疏矩阵。
一维热传导方程数值解法及matlab实现分离变量法和有限差分法一维热传导方程的Matlab解法:分离变量法和有限差分法。
问题描述:本实验旨在利用分离变量法和有限差分法解决热传导方程问题,并使用Matlab进行建模,构建图形,研究不同情况下采用何种方法从更深层次上理解热量分布与时间、空间分布关系。
实验原理:分离变量法:利用分离变量法,将热传导方程分解为两个方程,分别只包含变量x和变量t,然后将它们相乘并求和,得到一个无穷级数的解。
通过截取该级数的前n项,可以得到近似解。
有限差分法:利用有限差分法,将空间和时间分别离散化,将偏导数用差分代替,得到一个差分方程组。
通过迭代求解该方程组,可以得到近似解。
分离变量法实验:采用Matlab编写代码,利用分离变量法求解热传导方程。
首先设定x和t的范围,然后计算无穷级数的前n项,并将其绘制成三维图形。
代码如下:matlabx = 0:0.1*pi:pi;y = 0:0.04:1;x。
t] = meshgrid(x。
y);s = 0;m = length(j);for i = 1:ms = s + (200*(1-(-1)^i))/(i*pi)*(sin(i*x).*exp(-i^2*t));endsurf(x。
t。
s);xlabel('x')。
XXX('t')。
zlabel('T');title('分离变量法(无穷)');axis([0 pi 0 1 0 100]);得到的三维热传导图形如下:有限差分法实验:采用Matlab编写代码,利用有限差分法求解热传导方程。
首先初始化一个矩阵,用于存储时间t和变量x。
然后计算稳定性系数S,并根据边界条件和初始条件,迭代求解差分方程组,并将其绘制成三维图形。
代码如下:matlabu = zeros(10.25);s = (1/25)/(pi/10)^2;fprintf('稳定性系数S为:\n');disp(s);for i = 2:9u(i。
南京理工大学课程考核论文课程名称:高等数值分析论文题目:有限差分法求解偏微分方程*名:**学号: 1成绩:有限差分法求解偏微分方程一、主要内容1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程:22(,)()u uf x t t xαα∂∂-=∂∂其中为常数具体求解的偏微分方程如下:22001(,0)sin()(0,)(1,)00u 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)求解区域的网格划分步长参数如下:11k k k kt t x x h τ++-=⎧⎨-=⎩ (2-2) 2.1 古典显格式2.1.1 古典显格式的推导由泰勒展开公式将(,)u x t 对时间展开得 2,(,)(,)()()(())i i k i k k k uu x t u x t t t o t t t∂=+-+-∂ (2-3) 当1k t t +=时有21,112,(,)(,)()()(())(,)()()i k i k i k k k k k i k i k uu x t u x t t t o t t tuu x t o tττ+++∂=+-+-∂∂=+⋅+∂ (2-4)得到对时间的一阶偏导数1,(,)(,)()=()i k i k i k u x t u x t uo t ττ+-∂+∂ (2-5) 由泰勒展开公式将(,)u x t 对位置展开得223,,21(,)(,)()()()()(())2!k i k i k i i k i i u uu x t u x t x x x x o x x x x∂∂=+-+-+-∂∂ (2-6)当11i i x x x x +-==和时,代入式(2-6)得2231,1,1122231,1,1121(,)(,)()()()()(())2!1(,)(,)()()()()(())2!i k i k i k i i i k i i i i i k i k i k i i i k i i i iu uu x t u x t x x x x o x x x x u u u x t u x t x x x x o x x x x ++++----⎧∂∂=+-+-+-⎪⎪∂∂⎨∂∂⎪=+-+-+-⎪∂∂⎩(2-7) 因为1k k x x h +-=,代入上式得2231,,22231,,21(,)(,)()()()2!1(,)(,)()()()2!i k i k i k i k i k i k i k i ku uu x t u x t h h o h x xu u u x t u x t h h o h x x +-⎧∂∂=+⋅+⋅+⎪⎪∂∂⎨∂∂⎪=-⋅+⋅+⎪∂∂⎩ (2-8) 得到对位置的二阶偏导数2211,22(,)2(,)(,)()()i k i k i k i k u x t u x t u x t u o h x h+--+∂=+∂ (2-9) 将式(2-5)、(2-9)代入一般形式的抛物线型偏微分方程得21112(,)(,)(,)2(,)(,)(,)()i k i k i k i k i k i k u x t u x t u x t u x t u x t f x t o h h αττ++---+⎡⎤-=++⎢⎥⎣⎦(2-10)为了方便我们可以将式(2-10)写成11122k kk k k k i i i i i i u u u u u f h ατ++-⎡⎤--+-=⎢⎥⎣⎦(2-11) ()11122k k k k k k i i i i i i u u uu u f h τατ++----+= (2-12)最后得到古典显格式的差分格式为()111(12)k k k k k i i i i i u ra u r u u f ατ++-=-+++ (2-13)2r h τ=其中,古典显格式的差分格式的截断误差是2()o h τ+。
有限差分 MATLAB简介有限差分方法(Finite Difference Method)是一种常用的数值计算方法,用于求解偏微分方程或者常微分方程的数值近似解。
MATLAB是一个功能强大的数值计算软件,可以很方便地实现有限差分方法。
本文将介绍有限差分方法在MATLAB中的应用。
首先,我们将简要介绍有限差分方法的原理和基本思想。
然后,我们将通过一个具体的例子来演示如何使用MATLAB进行有限差分计算。
最后,我们将总结本文内容,并提供一些相关资源供读者进一步深入学习。
有限差分方法原理有限差分方法是一种基于离散化思想的数值计算方法。
它通过将求解区域划分为网格点,并利用离散点上函数值之间的差商逼近导数来近似求解微分方程。
对于一维问题,我们可以将求解区域划分为等距离的网格点,记作x0, x1,x2, …, xn。
每个网格点上函数值记作u0, u1, u2, …, un。
我们希望通过已知边界条件和微分方程来求解其他未知函数值。
有限差分法的基本思想是使用差商逼近导数。
例如,对于一阶导数,我们可以使用前向差分、后向差分或者中心差分来逼近。
其中,前向差分定义为:f'(x) ≈ (f(x+h) - f(x)) / h后向差分定义为:f'(x) ≈ (f(x) - f(x-h)) / h中心差分定义为:f'(x) ≈ (f(x+h) - f(x-h)) / (2h)类似地,我们可以使用更高阶的有限差分来逼近更高阶的导数。
对于二维问题,我们可以将求解区域划分为二维网格点,并在每个网格点上计算函数值。
然后,我们可以使用类似的方法来逼近偏导数。
MATLAB实现在MATLAB中,我们可以很方便地使用矩阵运算和向量化操作来实现有限差分方法。
首先,我们需要定义求解区域和网格点。
假设我们要求解一个一维问题,在区间[0, 1]上进行离散化。
我们可以通过指定网格点个数n和步长h来确定网格点坐标:n = 100; % 网格点个数h = 1/n; % 步长x = linspace(0, 1, n+1); % 网格点坐标接下来,我们需要定义边界条件和微分方程。
第1章前言1.1问题背景在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。
诸如粒子扩散或神经细胞的动作电位。
也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。
热方程及其非线性的推广形式也被应用与影响分析。
在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。
虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。
自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。
科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。
而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。
解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。
为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。
1.2问题现状近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。
同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。
而且精度上更好。
目前,在欧美各国MATLAB的使用十分普及。
在大学的数学、工程和科学系科,MATLAB苏佳园:二维热传导方程有限差分法的MATLAB实现被用作许多课程的辅助教学手段,MATLAB也成为大学生们必不可少的计算工具,甚至是一项必须掌握的基本技能。
有限差分和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 计算二维热加工温度场分析Eg1 薄板焊接过程温度场分析。
取焊件的一半为模型进行离散化,起始点为o 点,以后以v 速度沿x 轴运动。
根据题意为二维不稳态导热,二维不稳态导热方程为:k QyT x T T 12222-+∂∂+∂∂=∂∂ταyx 左边界下边界图 二维焊接离散化题目可化为以下微分方程组:(以y 轴正方向为上,x 轴正方向为右)0(,,0)0,(),(),(),e eeT C k Q T x y T Tk x Tk T T x T k T T y T k T T xρτβββ∂⎧=∆+⎪∂⎪=⎪⎪∂=⎪∂⎪⎪∂⎨=-⎪∂⎪∂⎪=-⎪∂⎪∂⎪=-⎪∂⎩左边界(y 轴)右边界下边界(x 轴)上边界需要的参数(均已cm,cal,g 为单位,所以不必换算):用PDE Tool解题步骤如下: 0.>> pdetool 1. 区域设置 单击工具,在窗口拉出一个矩形,双击矩形区域,在Object Dialog 对话框输入Left为0,Bottom 为0,Width 为2,Height 为2。
与默认的坐标相比,图形小的看不见,所以要调整坐标显示比例。
方法:选择Options->Axes Limits,把X ,Y 轴的自动选项打开。
设置Options->Application 为Heat Transfer (设置程序应用热传输模型) 2. 设置边界条件 单击 ,使边界变红色,然后分别双击每段边界,打开Boundary Conditions对话框,设置边界条件(根据边界条件)。
所有的边界都为Neumann 条件。
输入值见下表:3. 设置方程类型 单击,打开PDE Specification 对话框,设置方程类型为Parabolic (抛物型), C (比热)为0.16,a (导热系数)为0.1,d(密度)为7.82,f (热源)为4000*exp(-3*(x.^2+(y-0.4*t).^2)/0.49)。
Matlab有限差分法简介有限差分法(Finite Difference Method)是一种常用的数值分析方法,用于求解微分方程。
在工科和科学领域中,微分方程广泛应用于描述物理现象和自然现象,有限差分法提供了一种有效的数值求解方法。
有限差分法原理有限差分法的核心思想是将微分方程中的导数近似为差分,将微分方程转化为由未知函数值构成的代数方程组。
通过解这个代数方程组,可以得到数值解。
一维有限差分法一维有限差分法是最简单的有限差分法形式。
一维有限差分法的基本原理是将一维偏微分方程离散化,将函数替换为离散的节点值,并将导数近似为差分。
然后通过求解代数方程组获得离散节点的函数值。
显式方法在一维有限差分法中,显式方法是最直接的一种方法。
在显式方法中,离散方程可以直接由差分形式得到。
然后通过迭代计算每个节点的函数值,直到收敛为止。
隐式方法与显式方法相比,隐式方法更为稳定,但计算量更大。
在隐式方法中,离散方程的解决需利用矩阵方法,通过求解线性代数方程组得到离散节点的函数值。
二维有限差分法当涉及到二维(或更高维)的偏微分方程时,可以使用二维有限差分法来求解。
二维有限差分法的原理与一维类似,不同之处在于需要将导数近似为二维差分。
分离变量法对于一些特殊的二维偏微分方程,可以利用分离变量法将其转化为一维问题。
然后可以使用一维有限差分法求解。
非分离变量法对于一些复杂的二维偏微分方程,无法通过分离变量法将其简化为一维问题。
这种情况下,可以使用非分离变量法,直接对二维方程进行离散化和求解。
Matlab在有限差分法中的应用Matlab是一种常用的科学计算软件,广泛用于工科和科学领域。
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 BA ds 而对于边界外一圈的虚结点,有公式:φ13=φ9+2h x (δφ/δx)A φ14=φ10+2h y (δφ/δx)B因而我们可以用内点和边界点表示出边界外一圈虚点,由此平面上的任意点的应力函数都可以用平面上其他十二个点的应力函数表示,列出这些方程,由外及内,依次解出各点的应力函数。
用有限差分法和Matlab 计算二维热加工温度场分析Eg1 薄板焊接过程温度场分析。
取焊件的一半为模型进行离散化,起始点为o 点,以后以v 速度沿x 轴运动。
根据题意为二维不稳态导热,二维不稳态导热方程为:k Qy T x T T 12222-+∂∂+∂∂=∂∂ταyx 左边界下边界图 二维焊接离散化题目可化为以下微分方程组:(以y 轴正方向为上,x 轴正方向为右)(,,0)0,(),(),(),e e e TC k QT x y TTk xT k T T x Tk T T y Tk T T x ρτβββ∂⎧=∆+⎪∂⎪=⎪⎪∂=⎪∂⎪⎪∂⎨=-⎪∂⎪∂⎪=-⎪∂⎪∂⎪=-⎪∂⎩左边界(y 轴)右边界下边界(x 轴)上边界需要的参数(均已cm,cal,g 为单位,所以不必换算):参数数值 备注 ρ7.82 g/cm 3 密度 v0.4 cm/s 焊接速度 h1cm 板厚度 Qm 4000 cal/cm 3 热源分布密度 β0.0008cal/cm 2·s ·℃ 换热系数 Te ,T 020℃ 周边介质温度,初始温度 k 0.1 cal/c m ·s ·℃ 导热系数用PDE Tool 解题步骤如下:1. 区域设置单击工具,在窗口拉出一个矩形,双击矩形区域,在Object Dialog 对话框输入Left 为0,Bottom 为0,Width 为2,Height 为2。
与默认的坐标相比,图形小的看不见,所以要调整坐标显示比例。
方法:选择Options->Axes Limits,把X ,Y 轴的自动选项打开。
设置Options->Application 为Heat Transfer (设置程序应用热传输模型)2. 设置边界条件单击,使边界变红色,然后分别双击每段边界,打开Boundary Conditions 对话框,设置边界条件(根据边界条件)。
matlab在有限差分法数值计算中的应用1.前言有限差分法是一种常用的数值计算方法,常用于求解偏微分方程。
Matlab是一种非常强大的数值计算软件,也被广泛应用于各种科学计算中。
本文将围绕有限差分法在Matlab中的应用进行讨论。
2.有限差分法有限差分法是一种数值计算方法,通常用于求解偏微分方程。
其基本思想是将偏微分方程中的导数用差分的形式进行近似。
这样就可以把偏微分方程转化为差分方程,进而用数值方法求解。
在有限差分法中,将求解区域离散化为网格,并在网格上通过差分近似来求解偏微分方程。
有限差分法的基本思想是将导数转化为差分形式。
由于导数的定义是极限形式的,因此我们可以通过极限的概念来推导差分近似。
例如,对于函数$f(x)$,它在$x=a$处的导数为$f'(a)$,则可以表示为:$$f'(a)=\lim_{h\to0}\frac{f(a+h)-f(a)}{h}$$如果我们取一个无穷小的$h$,则可以得到:$$f'(a)\approx\frac{f(a+h)-f(a)}{h}$$这就是一个一阶中心差分近似。
同样,我们还可以用其他的差分形式来表示导数。
有限差分法的核心就是建立差分方程。
在建立差分方程时,我们需要先将求解区域离散化为网格,然后在每个网格点上建立差分方程。
通常情况下,差分方程和原始的偏微分方程形式相同,只是将偏导数用差分近似来替代。
例如,对于泊松方程:$$\frac{\partial^2\phi}{\partialx^2}+\frac{\partial^2\phi}{\partial y^2}=f(x,y)$$我们可以将其离散化为网格上的差分方程:$$\frac{\phi_{i-1,j}-2\phi_{i,j}+\phi_{i+1,j}}{\Deltax^2}+\frac{\phi_{i,j-1}-2\phi_{i,j}+\phi_{i,j+1}}{\Deltay^2}=f_{i,j}$$其中,$\Delta x$和$\Delta y$表示网格的大小,$\phi_{i,j}$表示在网格点$(x_i,y_j)$处的解,$f_{i,j}$表示在网格点$(x_i,y_j)$处的源项。
第五次作业(前三题写在作业纸上)一、用有限差分方法求解一维非定常热传导方程,初始条件和边界条件见说明.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 ,Txlabel('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<2fprintf('\n%s\n','有稳定性')elsefprintf('\n%s\n','没有稳定性')errorend%真实值计算[xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid);[xe,te]=meshgrid(xe,te);mesh(xe,te,Te);%画图,并且把坐标轴名称改为xe,te,Texlabel('xe')ylabel('te')zlabel('Te')Te%输出温度矩阵%误差计算jmax=1/dx+1;%网格点数[rms]=wuchajisuan(T,Te,jmax)rms%输出误差function [rms]=wuchajisuan(T,Te,jmax)for j=1:jmaxrms=((T(j)-Te(j))^2/jmax)^(1/2)endfunction[Ue,xe,te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid)n=ngrid(1);%t份数m=ngrid(2);%x份数Ue=zeros(ngrid);xe=linspace(xspan(1),xspan(2),m);%画网格te=linspace(tspan(1),tspan(2),n);%画网格for j=2:nfor i=2:m-1for g=1:m-1Ue(j,i)=100-(400/(2*g-1)/pi)*sin((2*g-1)*pi*xe(j))*exp(-a*(2*g-1)^2*pi^2*te(i)) endendendfunction [U,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid)n=ngrid(1);%t份数m=ngrid(2);%x份数h=range(xspan)/(m-1);%x网格长度x=linspace(xspan(1),xspan(2),m);%画网格k=range(tspan)/(n-1); %t网格长度t=linspace(tspan(1),tspan(2),n);%画网格U=zeros(ngrid);U(:,1)=g1(t);%边界条件U(:,m)=g2(t);U(1,:)=f(x);%初值条件%差分计算for j=2:nfor i=2:m -1U(j,i)=(1-2*a*k/h^2)*U(j -1,i)+a*k/h^2*U(j -1,i -1)+a*k/h^2*U(j -1,i+1);endend5. 将温度随时间变化情况用曲线表示x t T6. 给出3000、9000、15000三个时刻的温度分布情况,对温度随时间变化规律做说明。
matlab 时域有限差分法
时域有限差分法是一种常用的数值求解偏微分方程的方法,也被广泛应用于地球物理、电磁学、声学等领域。
Matlab是一种常用的科学计算软件,其强大的矩阵计算功能和丰富的可视化工具,使其成为时域有限差分法求解偏微分方程的理想工具。
本文将介绍如何使用Matlab实现时域有限差分法,包括离散化、边界条件、数值求解等方面的内容。
同时,还将介绍如何利用Matlab的可视化工具,对时域有限差分法的结果进行可视化展示。
通过本文的学习,读者可以掌握时域有限差分法的基本原理和实现方法,为进一步开展相关领域的研究和应用奠定基础。
- 1 -。
matlab有限差分法有限差分法是一种数值计算方法,用于求解偏微分方程的近似解。
它的基本思想是在定义的网格上近似偏微分方程中的导数,然后将偏微分方程转化为代数方程组,通过求解代数方程组得到近似解。
因此,有限差分法是一种离散化方法。
在有限差分法中,我们需要定义一个网格来离散化要求解的空间,例如我们可以将一个矩形区域分成相等小的正方形网格。
我们还需要定义一个时间网格,用来离散化所求解的时间区间,例如将整个时间区间分成相等的小时间段。
通过将空间和时间分别进行离散化,我们就得到了有限差分法的两个主要元素:网格和时间步长。
在有限差分法中,我们需要用数值来近似地表示空间函数和时间函数。
离散化后的空间和时间函数在网格点处的取值称为网格点数值。
通过近似表示空间和时间函数,我们将物理问题转化为了一个大量的代数问题。
有限差分法的主要思想是使用中心差分公式来计算导数值。
中心差分公式是指:将导数近似为相邻两个网格点之间的差,然后取其平均值,即可得到一个数值。
对于一个二维的偏微分方程,我们可以使用五点差分公式(即中心差分公式的扩展)来计算数值解。
五点差分公式是指:在一个网格点上,使用该点周围四个相邻网格点的取值来计算该点导数值。
通过对每一个网格点应用五点差分公式,我们可以构造出一个代数方程组,通过求解该方程组,我们可以得到偏微分方程的数值解。
有限差分法有很多优点,例如易于实现、计算速度快、稳定性好、适用于不规则区域和边界等。
但有限差分法也有一些缺点,例如精度受限、局限性大、实现复杂等。
总之,有限差分法是求解偏微分方程的重要数值方法,它在科学和工程计算中得到了广泛的应用。
通过对其原理和实现细节的深入学习,我们可以更好地理解它的优点和局限性,从而更加适用于不同实际问题的数值计算。