利用追赶法解差分方程
追赶法
![追赶法](https://img.taocdn.com/s3/m/da622047ce2f0066f53322fa.png)
算 量 。 可 证 ,当 系 数 矩 阵 为 严 格 对 角 占 优 时,此 方 法 具 有 良 好 的
数值稳定性。
3
追赶法
事实上,追赶法的求解过程就是将系数矩阵 分解两个简单的二对角矩阵,从而归结为求解两 个简单方程组的过程。
上述定理也表明,追赶法的原理和高斯消去
A
法相同,但考虑到方程组的特点,计算时会把大 量零元素撇开,从而大大节省计算量。
追赶法
在数值计算中,如三次样条插值或用差分方法解常微分方 程边值问题,常常会遇到求解以下形式的方程组
b1 c1
a2
b2
c2
x1 d1
x2
d2
ai bi ci
xi
d
i
简记 Ax d.
an1 bn1 cn1 xn1 d n1
an bn xn dn
4
追赶法例题
例 用追赶法解下面三对角方程组
3 1 0 0 x1 10
1
4
1
0
x2
11
0 0
1 0
6 2
1 8
x3 x4
30
4 8
5
l3 1
ln 1
c
n
1
u n
其 中 ci (i 1, 2, , n 1)为 已 给 出 的 , 且 分 解 是 唯 一 的
2
追赶法的计算公式
A LU 分解公式:
u1 li
b1 ai
/
u i 1
(i 2,3,
,m)
ui bi ci1li
解Ly d得:
y1 d1
yk
dk
lk yk 1
(k 2,3,
,n)
第三章 线性方程组解法1_追赶法(2)
![第三章 线性方程组解法1_追赶法(2)](https://img.taocdn.com/s3/m/35217a2fb4daa58da0114a07.png)
从而有 x4 = 2,
x3 = 1,
x2 = 1,
x1 = 0
(1 (3 ( ( 作业习题三 P68 2, 1) 3)
�
追
赶
注意:当 ak , ck 中有一元素为 0,方程组可化为两个三对 角方程组.由于追赶法在计算过程中只涉及系数矩阵的 非零元,大大节约了计算机内存与计算量. 例:用追赶法求解如下的三对角方程组 2 1 x1 1 1 3 1 x 2 2 = 1 1 1 x3 2 2 1 x4 0 解:①直接利用上面公式有 p1 1 1 q1 2 1 1 3 1 1 q2 p2 2 → 1 q 3 p3 1 1 1 2 1 p4 2 1 0 p1 = 1 / 2 , q1 = 1 / 2 p2 = 3 / 5 , q2 = 2 / 5 p = 7/3, q = 5/3, p = 2 3 3 4 x4 = 2 , x3 = 1 , x2 = 1 , x1 = 0 ②利用 LR 分解
( k = 1, 2, , n ) q k = ck / tk
然后回代求解得
xn = pn xk = pk qk xk +1
(k = n 1, n 2,,1)
追赶法(2)的流程图 输入方程阶数 n ,系数与右端常数 ai , bi , ci , di (i = 1, 2,, n) (令 a 1 = cn = 0 )
p1 = d1 / b1 , q1 = c1 / b1 k = 2, , n t = bk ak qk 1
pk = (d k ak pk 1 ) / t , qk = ck / t xn = pn k = n 1, ,1 xk = pk qk xk +1 输出 x1 , x2 , , xn ,结束
2 1 1 1 3 1 α 1 = 2 1 1 1 α3 1 α4 2 1 β1 1 c1
微分方程数值解追赶法
![微分方程数值解追赶法](https://img.taocdn.com/s3/m/8d96b758c4da50e2524de518964bcf84b8d52d56.png)
微分方程数值解追赶法追赶法,也称为三对角矩阵算法,是一种用于求解线性微分方程的数值方法。
这种方法主要基于矩阵分解和迭代的思想,能够有效地解决微分方程的数值求解问题。
在微分方程的数值解法中,追赶法通常用于求解形如 (y' = f(x, y)) 的常微分方程。
其基本思想是将微分方程转化为差分方程,然后通过迭代的方式逐步逼近微分方程的解。
具体来说,追赶法的步骤如下:矩阵分解:首先,将微分方程 (y' = f(x, y)) 转化为差分方程的形式。
然后,将差分方程中的系数矩阵进行分解,将其分解为一个下三角矩阵 (L)、一个对角矩阵 (D) 和一个上三角矩阵 (U)。
这样,差分方程可以转化为(D^{-1}Lx = D^{-1}b) 的形式。
迭代求解:接下来,使用迭代法求解 (D^{-1}Lx = D^{-1}b)。
通常,可以选择Gauss-Seidel迭代法或者SOR(Successive Over-Relaxation)迭代法等。
在每次迭代中,先求解下三角矩阵 (L) 的部分,然后求解对角矩阵(D) 的部分,最后求解上三角矩阵 (U) 的部分。
通过不断迭代,逐步逼近差分方程的解。
收敛性判断:在迭代求解的过程中,需要判断迭代的解是否收敛。
通常,可以通过比较相邻两次迭代的解的差值来判断是否收敛。
当差值小于某个预设的阈值时,认为迭代收敛。
解的输出:当迭代收敛后,可以得到微分方程的数值解。
此时,可以将解输出到控制台或者保存到文件中。
追赶法的优点在于其算法简单、易于实现,并且对于大规模的微分方程求解问题具有较高的计算效率和精度。
然而,追赶法也存在一些局限性,例如对于某些特殊类型的微分方程可能不适用,需要进行特殊处理。
用追赶法解方程组步骤
![用追赶法解方程组步骤](https://img.taocdn.com/s3/m/789bfcec27fff705cc1755270722192e453658a7.png)
用追赶法解方程组步骤方程组是数学中常见的问题之一,解方程组的方法有很多种,其中一种常用的方法是追赶法。
下面我们来详细介绍用追赶法解方程组的步骤。
步骤一:给定方程组我们需要给定一个方程组。
方程组可以由多个方程组成,每个方程中包含多个未知数和常数项。
我们的目标是求解出方程组中的未知数。
步骤二:将方程组转换为矩阵形式为了方便计算,我们将方程组转换为矩阵形式。
即将每个方程的未知数和常数项放在一个矩阵中,方程组的系数矩阵和常数矩阵分别用A和B表示。
步骤三:进行初等行变换接下来,我们需要进行初等行变换。
初等行变换包括交换两行、用非零常数乘以某一行、将某一行的倍数加到另一行上。
通过初等行变换,我们可以将方程组转化为一个三角矩阵或者行最简形。
步骤四:回代求解在经过初等行变换后,我们得到了一个三角矩阵或者行最简形。
接下来,我们可以通过回代的方式求解出未知数的值。
回代的过程就是从最后一行开始,依次代入求解出上一行的未知数,直到求解出所有的未知数。
步骤五:检验解的正确性在求解出未知数的值后,我们需要检验解的正确性。
即将求解出的未知数代入原方程组中,检查等式是否成立。
如果方程组中的每个等式都成立,则我们得到了方程组的解。
追赶法是一种有效的求解方程组的方法,它可以通过化简方程组的形式,将复杂的计算转化为简单的计算,从而节省时间和精力。
通过追赶法,我们可以快速求解出方程组中的未知数,并检验解的正确性。
在实际应用中,追赶法广泛应用于线性方程组的求解。
线性方程组是一种常见的方程组,它包含线性关系,可以用来描述很多实际问题,如电路分析、力学问题等。
追赶法的优势在于其简单易行、计算速度快的特点,使得它成为解决线性方程组的常用方法之一。
总结起来,用追赶法解方程组的步骤包括给定方程组、将方程组转换为矩阵形式、进行初等行变换、回代求解和检验解的正确性。
通过这一系列步骤,我们可以快速求解出方程组中的未知数,并验证解的正确性。
追赶法在线性方程组的求解中具有重要的应用价值,它不仅能够提高计算效率,还能够简化计算过程,使得解方程组变得更加简单和直观。
差分方程通用
![差分方程通用](https://img.taocdn.com/s3/m/3741292ba5e9856a5612608f.png)
程序如下:a=input('差分方程左端的系数向量a=[a(1),...a(na)] a=');b=input('差分方程右端的系数向量b=[b(1),...b(na)] b=');u=input('输入信号序列u=');na=length(a);nb=length(b);nu=length(u);s=['起算点前',int2str(na-1),'点y的值=[y(',int2str(na-2),'),...y(0)]=']; ym=zeros(1,na+nu-1);ym(1:na-1)=input(s);um=[zeros(1,na-2),u];for n=na:na+nu-1ys=ym(n-1:-1:n-na+1);us=um(n:-1:n-nb+1);ym(n)=(b*us'-a(2:na)*ys')/a(1);endy=ym(na:na+nu-1);sten(y),grid on;line([0,nu],[0,0]);运行程序输入差分方程左端的系数向量a=[a(1),...a(na)] a=[1,0.1,0.15,-0.225] 差分方程右端的系数向量b=[b(1),...b(na)] b=[3,7,1]输入信号序列u=exp(0.1*[1:20])起算点前3点y的值=[y(2),...y(0)]=[0,0,0]??? Index exceeds matrix dimensions.Error in ==> ca at 12us=um(n:-1:n-nb+1);1 一维对流方程1.1 一维对流方程的形式:,其中,u代表物质的量,a代表物质的运动速度。
此一维对流方程仅仅表示物质的运动情况,而与边界条件或是约束条件无关。
当a为常数时,此一维对流方程为一维常系数对流方程,当a不为常数时,方程为一维变系数对流方程。
数值分析追赶法实验报告
![数值分析追赶法实验报告](https://img.taocdn.com/s3/m/f0e11e1b854769eae009581b6bd97f192279bf1b.png)
x(4) = y(4)
For k = 3 To 1 Step -1
x(k) = y(k) - m(k) * x(k + 1)
—2—
Next For n = 1 To 4 Print "方程组的解为"; x(n) Next End Sub 实验结果:
—3—
xn yn xi yi ixi1
(i n 1,n 2,,2,1)
—1—
实验报告
辽宁科技大学 研究生 学院(系)
课名:数值分析
题目:追赶法
2012 年 10 月 9 日
班级:研 12 姓名:
学号:
专业:机械工程 任课教师:
实验程序:
Private Sub Command1_Click()
Dim y(4), x(4), m(4), c(3), b(4), a(4), f(4)
For i = 2 To 3
m(i) = c(i) / (b(i) - a(i) * m(i - 1))
Next
y(1) = f(1) / b(1)
For j = 2 To 4
y(j) = (f(j) - a(j) * y(j - 1)) / (b(j) - a(j) * m(j - 1))
Next
1、分解系数公式
1 c1 / b1 i ci / (bi aii1) (i 2,3,,n 1) i bi ii1 (i 2,3,,n) i i
2、方程组求解公式
解 Ly f
y1 f1 / b1 yi ( fi i yi1) / (bi ii1) 解 Ux y
(i 2,3,,n)
实 验 : 追赶法
实验目的:
1. 熟悉追赶法的程序设计;
追赶法求解三对角方程组
![追赶法求解三对角方程组](https://img.taocdn.com/s3/m/043a568bb8f3f90f76c66137ee06eff9aef849c8.png)
追赶法求解三对角方程组追赶法,这个名字听起来就像是一种竞赛,其实它是一种解决三对角方程组的好办法,简单得让人想笑。
想象一下,你在一个热闹的市场,身边是熙熙攘攘的人群,突然你的朋友向你喊:“嘿,快来帮我算这个方程组!”你心里想,什么方程组啊,我可不想被这复杂的数学问题给吓倒。
别担心,追赶法就像你身边的超级英雄,轻松搞定这些棘手的问题。
三对角方程组的形状其实就像个台阶,每一层都有自己的高度。
我们通常会遇到的就是那种对角线上的元素大于零,旁边的元素都比较小,这样一来,整个方程组就像是在给你发出信号:“来吧,来解决我!”在这个市场里,你得学会怎么“追赶”那些神秘的数。
追赶法的核心就是把复杂的问题变得简单,想想如果你能把一个巨大的蛋糕切成小块,那你就能轻松吃掉它。
咳咳,数学也是这样!你得确定你的三对角矩阵。
这个矩阵就像是你的地图,告诉你哪里有高地,哪里有低洼。
然后,你需要开始你的追赶之旅,逐步解决每一个未知数。
听上去是不是有点像探险?这就对了!在这个过程中,你需要运用一些聪明的小技巧,比如把当前的未知数用前一个已知数来表达,仿佛在追赶一个流动的目标。
哇,数学原来可以这么有趣,仿佛在和未知数玩捉迷藏。
我们就来谈谈如何进行具体的计算。
假设你有一个三对角矩阵,分为主对角线和两条副对角线。
你得把这个矩阵转化成一个更易处理的形式。
就像你把一堆衣服整理成一个个小堆,清晰明了。
通过一些简单的运算,你可以得到一个新的方程组。
这个时候,你会发现,原本复杂的问题似乎在慢慢迎刃而解,简直就像是阳光透过云层。
然后,进入最终的“追赶”阶段。
你得逐步代入已知的值,像是在追逐那只一直跑的兔子,直到抓到为止。
这一步可能需要一些耐心,但你可以想象自己正在追逐一场美妙的冒险,哪怕有点小曲折也没关系。
在这个过程中,你会体会到一种成就感,仿佛自己是数学界的超级英雄,成功解出了一个又一个的未知数。
好啦,最后我们来总结一下追赶法的魅力。
它不仅让复杂的三对角方程组变得简单,还让整个过程充满乐趣。
【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现
![【毕业设计(论文)】二维热传导方程有限差分法的MATLAB实现](https://img.taocdn.com/s3/m/fc9ed88bdaef5ef7ba0d3c80.png)
第1章前言1.1问题背景在史策教授的《一维热传导方程有限差分法的MATLAB实现》和曹刚教授的《一维偏微分方程的基本解》中,对偏微分方程的解得MATLAB实现问题进行过研究,但只停留在一维中,而实际中二维和三维的应用更加广泛。
诸如粒子扩散或神经细胞的动作电位。
也可以作为某些金融现象的模型,诸如布莱克-斯科尔斯模型与Ornstein-uhlenbeck过程。
热方程及其非线性的推广形式也被应用与影响分析。
在科学和技术发展过程中,科学的理论和科学的实验一直是两种重要的科学方法和手段。
虽然这两种科学方法都有十分重要的作用,但是一些研究对象往往由于他们的特性(例如太大或太小,太快或太慢)不能精确的用理论描述或用实验手段来实现。
自从计算机出现和发展以来,模拟那些不容易观察到的现象,得到实际应用所需要的数值结果,解释各种现象的规律和基本性质。
科学计算在各门自然科学和技术科学与工程科学中其越来越大的作用,在很多重要领域中成为不可缺少的重要工具。
而科学与工程计算中最重要的内容就是求解科学研究和工程技术中出现的各种各样的偏微分方程或方程组。
解偏微分方程已经成为科学与工程计算的核心内容,包括一些大型的计算和很多已经成为常规的计算。
为什么它在当代能发挥这样大的作用呢?第一是计算机本身有了很大的发展;第二是数值求解方程的计算法有了很大的发展,这两者对人们计算能力的发展都是十分重要的。
1.2问题现状近三十年来,解偏微分方程的理论和方法有了很大的发展,而且在各个学科技术的领域中应用也愈来愈广泛,在我国,偏微分方程数值解法作为一门课程,不但在计算数学专业,而且也在其他理工科专业的研究生的大学生中开设。
同时,求解热传导方程的数值算法也取得巨大进展,特别是有限差分法方面,此算法的特点是在内边界处设计不同于整体的格式,将全局的隐式计算化为局部的分段隐式计算。
而且精度上更好。
目前,在欧美各国MATLAB的使用十分普及。
在大学的数学、工程和科学系科,MATLAB苏佳园:二维热传导方程有限差分法的MATLAB实现被用作许多课程的辅助教学手段,MATLAB也成为大学生们必不可少的计算工具,甚至是一项必须掌握的基本技能。
Ch3.2.3 追赶法
![Ch3.2.3 追赶法](https://img.taocdn.com/s3/m/ea51fae35ef7ba0d4a733bcb.png)
1 b1 ( 1 ) , c b 1 1 1
解(7.1)的追赶法计算公式 1 r (1)分解计算公式( A LU): 2 2 1 c1 b1 a ai i i )) , ( i 2, , n 1) i ri i 11 i ci (bii (2)求解Ly f 逆推公式
三次样条插值问题中得到的三转弯方程组(8.9)、 (8.10)、(8.11)及三弯矩方程组(8.19)或(8.20) 三对角线 方程组
用差分法解二阶线性常微分方程边值问题, 解法:追赶法 若用三点插值格式也得到三对角线方程组 本节介绍该类方程组中的特例及该种方程组的解法:追赶法。 优点: 1.计算量小(仅5n-4次乘除法运算)。 2.方法简单,存贮量小。 3.数值稳定(对舍入误差来说)。
LU
1 b1 c1 1 a b c r 2 2 2 2 2 a b c r aii bii cii rii i i an bn rn n n a l u 由矩阵乘法 ij ik kj , 得:
b3 a 4
c3 b4
b1 c1 x1 f 1 x3 f 3 x f 与 a b x f c x 。 2 3 2 2 2 2 4 4
§7 解三对交线方程组的追赶法
k 1
1 1 2 1 i2 11 ii 11 i 1 i 1 1 n 1 1
1 b1 , (1) b1 1 ,c1 1 1 , ( 1 c1 1 ) 1 c1 b1
用追赶法求解三对角方程组
![用追赶法求解三对角方程组](https://img.taocdn.com/s3/m/81d367b4e109581b6bd97f19227916888486b9a3.png)
用追赶法求解三对角方程组1. 三对角方程组的背景大家好,今天咱们来聊聊一个有点学术味儿的话题——三对角方程组。
不过别担心,我会尽量让这件事情变得轻松有趣,就像跟朋友聊天一样。
三对角方程组呢,其实就是那些系数在对角线附近的线性方程组,听起来是不是有点复杂?别急,咱们慢慢来,打个比方,它就像是一个田字格,只在主要的对角线上有数字,其他地方都是零。
哎,生活中有很多时候我们会遇到这样的方程,比如在物理、工程或者计算机科学里。
这时候,咱们就得想办法求解它们。
2. 追赶法的简介2.1 追赶法是什么好啦,接下来咱们来介绍一下追赶法。
这法子听上去是不是有点像小时候玩捉迷藏的感觉?其实它就是一种巧妙的迭代算法,专门用来解决那些三对角的线性方程组。
为什么叫追赶法呢?因为它能快速“追赶”到正确的解,就像小兔子在草地上跑得飞快一样。
它的基本思路就是把这个三对角方程组转化为一个更简单的形式,从而一步一步找到答案。
2.2 为什么用追赶法那为什么不直接用其他的方法呢?哦,朋友们,真相是,追赶法在处理这类方程的时候特别高效,速度快得像闪电!想象一下,如果你在一场马拉松里,你会选择走路还是飞奔?当然是飞奔啦!同样的道理,追赶法能节省大量的计算资源和时间,让我们轻松愉快地拿到想要的解。
3. 追赶法的步骤3.1 初始准备咱们要开始追赶了,首先得准备一下。
你需要把方程组写成标准的形式,通常我们可以把它表示成一个矩阵。
这样一来,咱们就能更清晰地看到那些三角形的结构。
接着,得设定好初始条件,这就好比你出发前检查好背包里有没有水、食物和地图。
没有这些东西,你可不敢贸然出门啊!3.2 逐步追赶准备好之后,追赶法就开始工作了。
第一步,咱们需要对三角形的每一行进行“消元”,也就是让下面的元素逐渐变为零。
听起来是不是有点复杂?其实就像在厨房里切菜,先把最上面的部分处理掉,然后逐步往下进行。
一步一步来,绝对不能急,这样才能确保每一刀都精准无误。
接着,咱们要开始反向代入,也就是从最后一行开始,逐行算出未知数。
追赶法_上机实验报告
![追赶法_上机实验报告](https://img.taocdn.com/s3/m/ed64784f4531b90d6c85ec3a87c24028915f858c.png)
一、实验目的1. 理解追赶法的原理及其在数值计算中的应用。
2. 掌握追赶法的编程实现,并能够运用追赶法求解线性方程组。
3. 通过实验,加深对追赶法计算过程的理解,提高数值计算能力。
二、实验设备、仪器及材料1. 计算机一台,安装有C/C++编译环境。
2. 需要编写的程序代码。
3. 实验指导书。
三、实验内容3.1 实验方案设计与选择本次实验选择追赶法(亦称对称高斯消去法)求解三对角线性方程组。
追赶法是一种高效且稳定的算法,特别适用于三对角线性方程组的求解。
3.2 实验原理及实验步骤原理:追赶法是一种直接方法,用于求解三对角线性方程组:\[ a_{11}x_1 + b_{11}x_2 + c_{11}x_3 = d_1 \]\[ a_{21}x_2 + b_{21}x_3 + c_{21}x_4 = d_2 \]\[ a_{31}x_3 + b_{31}x_4 + c_{31}x_5 = d_3 \]\[ \vdots \]\[ a_{n-1,1}x_{n-1} + b_{n-1,1}x_n + c_{n-1,1}x_{n+1} = d_{n-1} \]\[ a_{n1}x_n + b_{n1}x_{n+1} + c_{n1}x_{n+2} = d_n \]追赶法的基本思想是,通过迭代计算,逐步消去方程组中的未知数,直到求解出所有未知数的值。
步骤:1. 初始化系数矩阵和常数项。
2. 迭代计算,逐步消去方程组中的未知数。
3. 输出计算结果。
3.3 实验记录核心代码:```c#include <stdio.h>#include <math.h>#define N 5 // 线性方程组的未知数个数void追赶法(double a[N][N+1], double x[N], double b[N]) { double m[N], n[N];m[0] = b[0] / a[0][0];x[0] = m[0];for (int i = 1; i < N; i++) {n[i] = b[i] - a[i][i-1] m[i-1];m[i] = n[i] / a[i][i];x[i] = m[i] - a[i][i+1] m[i+1];}}int main() {double a[N][N+1] = {{2, 1, -1, 0, 0},{-1, 2, 1, -1, 0},{0, -1, 2, 1, -1},{0, 0, -1, 2, 1},{0, 0, 0, -1, 2}};double x[N], b[N] = {1, 2, 3, 4, 5};追赶法(a, x, b);printf("解为:\n");for (int i = 0; i < N; i++) {printf("x[%d] = %.2f\n", i, x[i]);}return 0;}```调试过程:1. 编译程序,确保没有语法错误。
第4节 追赶法
![第4节 追赶法](https://img.taocdn.com/s3/m/f200863531126edb6f1a1015.png)
b1 a 2
2 n 1 1 第3列
i 2,3,, n
于是,由以上结果: ci i i , i 1,2,, n
bi i i 1 i , i 1,2,, n ai i , i 2,3,, n
1 1 1 b2 c2 2 2 1 a 3 b3 3 3 c n 1 a n bn n n 0 0 ai ai i 1 0,,0, i , i ,0,,0 i 2 i, 1 i-1列 i -1行 0 0 i-1列 c1
2 1 0 0 1 2 1 0 0 1 2 1 0 0 1 2
1 2 1 0 0
0 2 3 1 0
0 0 3 4 1
求解方程组Ly=y,即
2 1 0 0 0 3 2 1 0 0 0 4 3 1 0 1 0 y1 y 2 0 0 y 3 0 5 y4 1 4
i ai , i 2,3,, n 1 b1 i bi i i 1 , i 2,3,, n
i i
ci , i 1,2, , n 1
1 . 2
1 b1
对于i=1,2,…,n-1,计算
i
3
i i 1 bi 1 ai 1 i y1 b1 / a1
5. 如何实现解三对角矩阵方程组的追赶法的计算程序? 如何用该算法进行三次样条函数的构造?
此时,在完成并存贮矩阵L和U后,右端项第改变一次仅 需增加 n2 次运算。
第8章--常微分方程边值问题的数值解法
![第8章--常微分方程边值问题的数值解法](https://img.taocdn.com/s3/m/99a19e3fa98271fe900ef906.png)
第8章 常微分方程边值问题的数值解法8.1 引 言推论 若线性边值问题()()()()()(),,(),()y x p x y x q x y x f x a x b y a y b αβ'''=++≤≤⎧⎨==⎩ (8.1.2) 满足(1) (),()p x q x 和()f x 在[,]a b 上连续; (2) 在[,]a b 上, ()0q x >, 则边值问题(8.1.1)有唯一解。
求边值问题的近似解,有三类基本方法:(1) 差分法(difference method),也就是用差商代替微分方程及边界条件中的导数,最终化为代数方程求解;(2) 有限元法(finite element method);(3) 把边值问题转化为初值问题,然后用求初值问题的方法求解。
8.2 差分法8.2.1 一类特殊类型二阶线性常微分方程的边值问题的差分法设二阶线性常微分方程的边值问题为(8.2.1)(8.2.2)()()()(),,(),(),y x q x y x f x a x b y a y b αβ''-=<<⎧⎨==⎩其中(),()q x f x 在[,]a b 上连续,且()0q x ≥.用差分法解微分方程边值问题的过程是:(i) 把求解区间[,]a b 分成若干个等距或不等距的小区间,称之为单元;(ii) 构造逼近微分方程边值问题的差分格式. 构造差分格式的方法有差分法, 积分插值法及变分插值法;本节采用差分法构造差分格式;(iii) 讨论差分解存在的唯一性、收敛性及稳定性;最后求解差分方程. 现在来建立相应于二阶线性常微分方程的边值问题(8.2.1), (8.2.2)的差分方程. ( i ) 把区间[,]I a b =N 等分,即得到区间[,]I a b =的一个网格剖分:011N N a x x x x b -=<<<<=,其中分点(0,1,,)i x a ih i N =+=,并称之为网格节点(grid nodes);步长b a Nh -=. ( ii ) 将二阶常微分方程(8.2.2)在节点i x 处离散化:在内部节点(1,2,,1)i x i N =-处用数值微分公式2(4)1112()2()()()(),12i i i i i i i i y x y x y x h y x y x x h ξξ+---+''=-<< (8.2.3)代替方程(8.2.2)中()i y x '',得112()2()()()()()()i i i i i i i y x y x y x q x y x f x R x h +--+-=+,(8.2.4) 其中2(4)()()12i i h R x y ξ=. 当h 充分小时,略去式(8.2.4)中的()i R x ,便得到方程(8.2.1)的近似方程1122i i i i i i y y y q y f h +--+-=,(8.2.5)其中(),()i i i i q q x f f x ==, 11,,i i i y y y +-分别是11(),(),()i i i y x y x y x +-的近似值, 称式(8.2.5)为差分方程(difference equation),而()i R x 称为差分方程(8.2.5)逼近方程(8.2.2)的截断误差(truncation error). 边界条件(8.7.2)写成0,.N y y αβ==(8.2.6)于是方程(8.2.5), (8.2.6)合在一起就是关于1N +个未知量01,,,N y y y ,以及1N +个方程式的线性方程组:2211212211222111(2),(2),1,2,,1,(2).i i i i i N N N N q h y y h f y q h y y h f i N y q h y h f αβ-+----⎧-++=-⎪-++==-⎨⎪-+=-⎩(8.2.7)这个方程组就称为逼近边值问题(8.2.1), (8.2.2)的差分方程组(system of difference equations)或差分格式(difference scheme),写成矩阵形式2211122222223332222222111(2)11(2)11(2)11(2)11(2)N N N N N N y q h h f y q h h f y q h h f y q h h f y q h h f αβ------⎡⎤⎡⎤-+-⎡⎤⎢⎥⎢⎥⎢⎥-+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+⎢⎥⎢⎥⎢⎥-+-⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦. (8.2.8)用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.7)或(8.2.8), 其解01,,,N y y y 称为边值问题(8.2.1), (8.2.2)的差分解(difference solution). 由于(8.2.5)是用二阶中心差商代替方程(8.2.1)中的二阶微商得到的,所以也称式(8.2.7)为中心差分格式(centered-difference scheme).( iii ) 讨论差分方程组(8.2.7)或(8.2.8)的解是否收敛到边值问题(8.2.1), (8.2.2)的解,估计误差.对于差分方程组(8.2.7),我们自然关心它是否有唯一解;此外,当网格无限加密,或当0h →时,差分解i y 是否收敛到微分方程的解()i y x . 为此介绍下列极值原理:定理8.2.1 (极值原理) 设01,,,N y y y 是给定的一组不全相等的数,设1122(),0,1,2,,i i i i i i i y y y l y q y q i N h +--+=-≥=.(8.2.9)(1) 若()0,1,2,,i l y i N ≥=, 则{}0Ni i y =中非负的最大值只能是0y 或N y ; (2) 若()0,1,2,,i l y i N ≤=, 则{}0Ni i y =中非正的最小值只能是0y 或N y .证 只证(1) ()0i l y ≥的情形,而(2) ()0i l y ≤的情形可类似证明. 用反证法. 记{}0max i i NM y ≤≤=,假设0M ≥, 且在121,,,N y y y -中达到. 因为i y 不全相等,所以总可以找到某个00(11)i i N ≤≤-,使0i y M =,而01i y -和01i y +中至少有一个是小于M 的. 此时0000000011222()2.i i i i i i i i y y y l y q y h M M M q M q M h +--+=--+<-=-因为00,0i q M ≥≥,所以0()0i l y <, 这与假设矛盾,故M 只能是0y 或N y . 证毕!推论 差分方程组(8.2.7)或(8.2.8)的解存在且唯一. 证明 只要证明齐次方程组11202()0,0,1,2,,1,0,0i i i i i i i N y y y l y q y q i N h y y +--+⎧=-=≥=-⎪⎨⎪==⎩ (8.2.10)只有零解就可以了. 由定理8.7.1知,上述齐次方程组的解01,,,N y y y 的非负的最大值和非正的最小值只能是0y 或N y . 而00,0N y y ==,于是0,1,2,,.i y i N == 证毕!利用定理8.2.1还可以证明差分解的收敛性及误差估计. 这里只给出结果: 定理8.2.2 设i y 是差分方程组(8.2.7)的解,而()i y x 是边值问题(8.2.1), (8.2.2)的解()y x 在i x 上的值,其中0,1,,i N =. 则有224()(),96i i i M h y x y b a ε=-≤-(8.2.11)其中(4)4max ()a x bM yx ≤≤=.显然当0h →时,()0i i i y x y ε=-→. 这表明当0h →时,差分方程组(8.2.7)或(8.2.8)的解收敛到原边值问题(8.7.1), (8.7.2)的解.例8.2.1 取步长0.1h =,用差分法解边值问题43,01,(0)(1)0,y y x x y y ''-=≤≤⎧⎨==⎩并将结果与精确解()()2222()3434x xy x e e ee x --=---进行比较.解 因为110N h ==,()4,()3q x f x x ==, 由式(8.2.7)得差分格式221222112289(240.1)30.10.1,(240.1)30.1,2,3,,8,(240.1)30.10.9,i i i i y y y y y x i y y -+⎧-+⨯+=⨯⨯⎪-+⨯+=⨯=⎨⎪-+⨯=⨯⨯⎩0100y y ==, 00.1,1,2,,9i x ih i i =+==, 其结果列于表8.2.1.从表8.2.1可以看出, 差分方法的计算结果的精度还是比较高的. 若要得到更精确的数值解,可用缩小步长h 的方法来实现.8.2.2 一般二阶线性常微分方程边值问题的差分法对一般的二阶微分方程边值问题1212()()()()()(),,()(),()(),y x p x y x q x y x f x a x b y a y a y b y b αααβββ'''++=<<⎧⎪'+=⎨⎪'+=⎩ (8.2.12) 假定其解存在唯一.为求解的近似值,类似于前面的做法,( i ) 把区间[,]I a b =N 等分,即得到区间[,]I a b =的一个网格剖分:011N N a x x x x b -=<<<<=,其中分点(0,1,,)i x a ih i N =+=,步长b a Nh -=. ( ii ) 对式(8.2.12)中的二阶导数仍用数值微分公式2(4)1112()2()()()(),12i i i i i i i iy x y x y x h y x y x x h ξξ+---+''=-<<代替,而对一阶导数,为了保证略去的逼近误差为2()O h ,则用3点数值微分公式;另外为了保证内插,在2个端点所用的3点数值微分公式与内网格点所用的公式不同,即21112012000022212()()()(),,1,2,,1,263()4()()()(),,23()4()3()()(),.23i i i i i i i N N N N N N N N y x y x h y x y x x i N h y x y x y x h y x y x x h y x y x y x h y x y x x h ξξξξξξ+-----⎧-''''=-<<=-⎪⎪-+-⎪''''=+<<⎨⎪⎪-+''''=+<<⎪⎩(8.2.13) 略去误差,并用()i y x 的近似值i y 代替()i y x ,(),(),()i i i i i i p p x q q x f f x ===,便得到差分方程组1111221001221211(2)(),1,2,,1,2(34),2(43),2i i i i i i i i i N N N N p y y y y y q y f i N h hy y y y h y y y y h αααβββ-++---⎧-++-+==-⎪⎪⎪+-+-=⎨⎪⎪+-+=⎪⎩(8.2.14)其中(),(),(),1,2,,1i i i i i i q q x p p x f f x i N ====-, i y 是()i y x 的近似值. 整理得12021222211222121(23)42,(2)2(2)(2)2,1,2,,1,4(32)2.i i i i i i i N N N h y y y h hp y h q y hp y h f i N y y h y h αααααβββββ-+---+-=⎧⎪---++==-⎨⎪-++=⎩ (8.2.15)解差分方程组(8.2.15),便得边值问题(8.2.12)的差分解01,,,N y y y .特别地, 若12121,0,1,0ααββ====,则式(8.2.12)中的边界条件是第一类边值条件:(),();y a y b αβ==此时方程组(7.7.16)为221112112211221211112(2)(2)2(2),(2)2(2)(2)2,2,3,,2,(2)2(2)2(2).i i i i i i i N N N N N N h q y hp y h f hp hp y h q y hp y h f i N hp y h q y h f hp αβ-+------⎧--++=--⎪---++==-⎨⎪---=-+⎩(8.2.16) 方程组(8.2.16)是三对角方程组,用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.16),便得边值问题(8.2.12)的差分解01,,,N y y y .( iii ) 讨论差分方程组(8.2.16)的解是否收敛到微分方程的解,估计误差. 这里就不再详细介绍.例8.2.2取步长/16h π=,用差分法求下列边值问题的近似解,并将结果与精确解进行比较.精确解是1()(sin 3cos )10y x x x =-+. 解 因为(20)8N h π=-=,()1,()2,()cos p x q x f x x =-=-=, 由式(8.2.17)得差分格式()()()()()()()()()()()()()2122211222122216(2)216(1)216cos 16216(1)(0.3),216(1)2216(2)216(1)216cos 16,2,3,,6,216(1)2216(2)216cos 7i i i N N y yy y y i i y y πππππππππππππ-+--⎡⎤--⨯-++⨯-⎡⎤⎣⎦⎣⎦=--⨯-⨯-⎡⎤⎣⎦⎡⎤-⨯---⨯-++⨯-⎡⎤⎡⎤⎣⎦⎣⎦⎣⎦==⎡⎤-⨯---⨯-⎡⎤⎣⎦⎣⎦=()()16216(1)(0.1),ππ⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪-+⨯-⨯-⎡⎤⎣⎦⎩080.3,0.1y y =-=-, 00.1,1,2,,9i x ih i i =+==, 其结果列于表8.2.2.8.3 有限元法有限元法(finite element method)是求解微分方程定解问题的有效方法之一,它特别适用在几何、物理上比较复杂的问题. 有限元法首先成功地应用于结构力学和固体力学,以后又应用于流体力学、物理学和其他工程科学. 为简明起见,本节以线性两点边值问题为例介绍有限元法.考虑线性两点边值问题()(8.3.1)(8.3.2)()()()()(),,(),(),Ly p x y x q x y x f x a x b y a y b αβ⎧''⎪=-+=≤≤⎨==⎪⎩其中1()0,()0,C [,]p x q x p a b >≥∈, ,C[,]q f a b ∈.此微分方程描述了长度为b a -的可变交叉截面(表示为()q x )的横梁在应力()p x 和()f x 下的偏差()y x .8.3.1 等价性定理记{}221C [,]()C [,],(),()a b y y y x a b y a y b αβ==∈==, 引进积分()22()()[()]()()2()()d baI y p x y x q x y x f x y x x '=+-⎰. (8.3.3)任取21()C [,]y y x a b =∈,就有一个积分值()I y 与之对应,因此()I y 是一个泛函(functional),即函数的函数. 因为这里是,y y '的二次函数,因此称()I y 为二次泛函.对泛函(8.3.3)有如下变分问题(variation problem):求函数21C [,]y a b ∈,使得对任意21C [,]y a b ∈, 均有()()I y I y ≥, (8.3.4)即()I y 在y 处达到极小, 并称y 为变分问题(8.3.4)的解.可以证明:定理8.3.1(等价性定理) y 是边值问题(8.3.1), (8.3.2)的解的充分必要条件是y 使泛函()I y 在21C [,]a b 上达到极小,即y 是变分问题(8.3.4)在21C [,]a b 上的解. 证 (充分性) 设21C [,]y a b ∈是变分问题()I y 的解;即y 使泛函()I y 在21C [,]a b 上达到极小,证明y 必是边值问题(8.3.1), (8.3.2)的解.设()x η是2C [,]a b 任意一个满足()()0a b ηη==的函数,则函数21()()()C [,]y x y x x a b αη=+∈,其中α为参数. 因为y 使得()I y 达到极小,所以()()I y I y αη+≥,即积分()22()()[()()]()[()()]2()[()()]baI y p x y x x q x y x x f x y x x dxαηαηαηαη''+=+++-+⎰作为α的函数,在0α=处取极小值()I y ,故d()0d I y ααηα=+=. (8.3.5) 计算上式,得()()()()()022(8.d()d d ()[()()]()[()()]2()[()()]d d 2()[()()]()2()[()()]()2()()d 2()()()()()()()()d .bab abaI y p x y x x q x y x x f x y x x x p x y x x x q x y x x x f x x x p x y x x q x y x x f x x x ααααηααηαηαηααηηαηηηηηη===+''=+++-+'''=+++-''=+-⎰⎰⎰3.6)利用分部积分法计算积分[][]()()()d ()()d ()()()()()()()d ()()()d ,bbaab ba abap x y x x x p x y x x p x y x x x p x y x x x p x y x x ηηηηη'''='''=-''=-⎰⎰⎰⎰代入式(8.3.6),得()0(8.3.7)d()2()()()()()()d 0.d b a I y p x y x q x y x f x x x ααηηα'=⎡⎤⎣⎦'+=-+-=⎰因为()x η是任意函数,所以必有()()()()()()0p x y x q x y x f x ''-+-≡. (8.3.8)否则,若在[,]a b 上某点0x 处有()00000()()()()()0p x y x q x y x f x ''-+-≠,不妨设()00000()()()()()0p x y x q x y x f x ''-+->,则由函数的连续性知,在包含0x 的某一区间00[,]a b 上有()()()()()()0p x y x q x y x f x ''-+->.作002200000,[,]\[,],()()(),.x a b a b x x a x b a x b η∈⎧⎪=⎨--≤≤⎪⎩ 显然2()C [,]x a b η∈,且()()0a b ηη==,但()()()()()()()d ba p x y x q x y x f x x x η⎡⎤''-+-⎢⎥⎣⎦⎰ ()00()()()()()()d 0b a p x y x q x y x f x x x η⎡⎤''=-+->⎢⎥⎣⎦⎰,这与式(8.3.7)矛盾. 于是式(8.3.8)成立,即变分问题(8.3.4)的解y 满足微分方程(8.3.1), 且(),()y a y b αβ==故它是边值问题(8.3.1), (8.3.2)的解.(必要性) 设()y y x =是边值问题(8.3.1), (8.3.2)的解,证明y 是变分问题(8.3.4)的解;即:y 使泛函()I y 在21C [,]a b 上达到极小.因为()y y x =满足方程(8.3.1),所以()()()()()()0p x y x q x y x f x ''-+≡.设任意21()C [,]y y x a b =∈,则函数()()()x y x y x η=-满足条件()()0a b ηη==,且2()C [,]x a b η∈. 于是()()[]()222222()()()()()[()()]()[()()]2()[()()]d ()[()]()[()]2()()d 2()()()()()()()()d ()[()]()[()]d baba baaI y I y I y I y p x y x x q x y x x f x y x x x p x y x q x y x f x y x xp x y x x q x y x x f x x x p x x q x x xηηηηηηηηη-=+-''=+++-+'-+-''=+-++⎰⎰⎰()()()22222()()()()()()d ()[()]()[()]d ()[()]()[()]d .bb ba a bap x y x q x y x f x x x p x x q x x xp x x q x x x ηηηηη⎡⎤'''=--+++⎢⎥⎣⎦'=+⎰⎰⎰⎰因为()0,()0p x q x >≥,所以当()0x η≠时,()22()[()]()[()]d 0bap x x q x x x ηη'+>⎰, 即()()0I y I y ->.只有当()0x η≡时,()()0I y I y -=. 这说明y 使泛函()I y 在21C [,]a b 上达到极小. 证毕!定理8.3.2 边值问题(8.3.1), (8.3.2)存在唯一解.证明 用反证法. 若12(),()y x y x 都是边值问题(8.3.1), (8.3.2)的解,且不相等,则由定理8.3.1知,它们都使泛函()I y 在21C [,]a b 上达到极小,因而12()()I y I y > 且 21()()I y I y >,矛盾!因此边值问题(8.3.1), (8.3.2)的解是唯一的.由边值问题解的唯一性,不难推出边值问题(8.3.1), (8.3.2)解的存在性(留给读者自行推导).8.3.2 有限元法等价性定理说明,边值问题(8.3.1), (8.3.2)的解可化为变分问题(8.3.4)的求解问题. 有限元法就是求变分问题近似解的一种有效方法. 下面给出其解题过程:第1步 对求解区间进行网格剖分01,i n a x x x x b =<<<<<=区间1[,]i i i I x x -=称为单元,长度1(1,2,,)i i i h x x i n -=-=称为步长,1max i i nh h ≤≤=. 若(1,2,,)i h h i n ==,则称上述网格剖分为均匀剖分.给定剖分后,泛函(8.3.3)可以写成()22()()[()]()()2()()d baI y p x y x q x y x f x y x x '=+-⎰()12211()[()]()()2()()d i i nnx i x i i p x y x q x y x f x y x xS -=='=+-∑∑⎰记. (8.3.9)第2步 构造试探函数空间。
lu分解追赶法
![lu分解追赶法](https://img.taocdn.com/s3/m/5587cd22cbaedd3383c4bb4cf7ec4afe04a1b113.png)
lu分解追赶法我们先来了解一下什么是"lu分解追赶法"。
它是一种用于求解线性方程组的数值计算方法。
通常我们会遇到类似于Ax=b的线性方程组,其中A是一个n×n的矩阵,x和b分别是n维向量。
而lu分解追赶法就是将矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU,然后通过追赶法求解这个分解后的方程组。
那么,如何进行lu分解呢?首先,我们需要将矩阵A进行行变换,使得其主元(即对角线上的元素)都不为0。
然后,我们可以通过高斯消元法来将矩阵A转化为一个上三角矩阵U,同时记录下所做的行变换操作。
接着,我们就可以通过这些行变换操作来构建下三角矩阵L,使得A=LU成立。
接下来,我们来看一下如何使用追赶法求解分解后的方程组。
假设我们已经得到了LU分解,即A=LU。
我们可以首先解Ly=b,得到向量y,然后再解Ux=y,得到我们想要的解x。
在解Ly=b的过程中,我们可以使用前向追赶法,而在解Ux=y的过程中,我们可以使用后向追赶法。
通过这样的追赶法,我们可以高效地求解出线性方程组的解。
那么,lu分解追赶法有什么应用呢?它在科学计算领域有着广泛的应用。
例如,在工程领域中,我们经常需要求解大规模的线性方程组,而使用直接求解方法的复杂度很高。
而lu分解追赶法可以将复杂度降低到O(n^2),大大提高了计算效率。
此外,lu分解追赶法还可以用于求解矩阵的逆、计算行列式等问题。
总结一下,lu分解追赶法是一种用于求解线性方程组的数值计算方法。
通过将矩阵A分解为下三角矩阵L和上三角矩阵U的乘积,然后使用追赶法求解分解后的方程组,我们可以高效地求解线性方程组的解。
lu分解追赶法在科学计算中具有重要的应用价值,可以大大提高计算效率。
偏微分方程差分方法
![偏微分方程差分方法](https://img.taocdn.com/s3/m/759bc8ffb14e852458fb5770.png)
第9章 偏微分方程的差分方法含有偏导数的微分方程称为偏微分方程。
由于变量的增多和区域的复杂性,求偏微分方程的精确解一般是不可能的,经常采用数值方法求方程的近似解。
偏微分方程的数值方法种类较多,最常用的方法是差分方法。
差分方法具有格式简单,程序易于实现,计算量小等优点,特别适合于规则区域上偏微分方程的近似求解。
本章将以一些典型的偏微分方程为例,介绍差分方法的基本原理和具体实现方法。
9.1椭圆型方程边值问题的差分方法9.1.1 差分方程的建立最典型的椭圆型方程是Poisson (泊松)方程G y x y x f yux u u ∈=∂∂+∂∂-≡∆-),(),,()(2222 (9.1)G 是x ,y 平面上的有界区域,其边界Γ为分段光滑的闭曲线。
当f (x ,y )≡0时,方程(9.1)称为Laplace(拉普拉斯)方程。
椭圆型方程的定解条件主要有如下三种边界条件第一边值条件 ),(y x u α=Γ (9.2) 第二边值条件),(y x nuβ=∂∂Γ (9.3) 第三边值条件 ),()(y x ku nuγ=+∂∂Γ (9.4) 这里,n 表示Γ上单位外法向,α(x,y ),β(x,y ),γ(x,y )和k (x,y )都是已知的函数,k (x,y )≥0。
满足方程(9.1)和上述三种边值条件之一的光滑函数u (x ,y )称为椭圆型方程边值问题的解。
用差分方法求解偏微分方程,就是要求出精确解u (x ,y )在区域G 的一些离散节点(x i ,y i )上的近似值u i ,j ≈(x i ,y i )。
差分方法的基本思想是,对求解区域G 做网格剖分,将偏微分方程在网格节点上离散化,导出精确解在网格节点上近似值所满足的差分方程,最终通过求解差分方程,通常为一个线性方程组,得到精确解在离散节点上的近似值。
设G ={0<x <a , 0<y <b }为矩形区域,在x ,y 平面上用两组平行直线x =ih 1, i =0,1,…,N 1, h 1=a /N 1 y =jh 2, j =0,1,…,N 2, h 2=b /N 2将G 剖分为网格区域,见图9-1。
用追赶法解方程组步骤
![用追赶法解方程组步骤](https://img.taocdn.com/s3/m/4a98adf6a0c7aa00b52acfc789eb172dec639970.png)
用追赶法解方程组步骤用追赶法解方程组的步骤追赶法是一种常用于解线性方程组的方法,也被称为托马斯算法。
它适用于系数矩阵为三对角矩阵的方程组,即只有主对角线和两个相邻的副对角线上有非零元素的方程组。
下面将介绍用追赶法解方程组的具体步骤。
1. 确定方程组的形式我们需要将线性方程组转化为矩阵形式,即AX=B,其中A是系数矩阵,X是未知数向量,B是常数向量。
在追赶法中,系数矩阵A 应为三对角矩阵。
2. 分解系数矩阵接下来,我们需要对系数矩阵A进行分解。
将系数矩阵A分解为L、D、U三个矩阵的乘积,即A=LDU分解。
其中L是下三角矩阵,D 是对角矩阵,U是上三角矩阵。
分解的目的是简化方程组的求解过程。
3. 前向追赶在前向追赶过程中,我们需要解决方程组LY=B,其中Y是辅助向量。
首先,我们可以从第一个方程开始,直接求解出Y的第一个分量。
然后,利用递推关系式,依次求解出Y的其他分量。
这个过程类似于追逐,从前往后一步步追赶。
4. 消元接下来,我们需要进行消元操作,将方程组转化为DUX=Y。
这个过程中,我们需要利用到前面分解得到的L、D和U矩阵。
通过将L矩阵与方程组相乘,可以消去X的前面分量。
然后,通过将D矩阵与方程组相乘,可以将X的分量消为1。
最后,通过将U矩阵与方程组相乘,可以将X的后面分量消去。
5. 后向追赶在后向追赶过程中,我们需要解决方程组UX=Y,即通过追逐的方式从后往前求解X的分量。
首先,我们可以从最后一个方程开始,直接求解出X的最后一个分量。
然后,利用递推关系式,依次求解出X的其他分量。
6. 检验解的正确性在求解完成后,我们需要检验解的正确性。
将求得的X代入原方程组中,验证方程组是否成立。
如果方程组成立,那么我们得到的解就是正确的。
总结:追赶法是一种有效解线性方程组的方法,它通过将系数矩阵分解为L、D、U三个矩阵,并利用前向追赶和后向追赶的方式求解未知数。
追赶法的优点是求解过程简单快速,适用于特定类型的方程组。
数值计算实验报告----LU分解、追赶法、迭代法(高斯-赛德尔Gauss_Seidel、雅。。。
![数值计算实验报告----LU分解、追赶法、迭代法(高斯-赛德尔Gauss_Seidel、雅。。。](https://img.taocdn.com/s3/m/20837feef605cc1755270722192e453610665b32.png)
数值计算实验报告----LU分解、追赶法、迭代法(⾼斯-赛德尔Gauss_Seidel、雅。
数值实验报告----------------------个⼈作业,如果有后辈的作业习题⼀致,可以参考学习,⼀起交流,请勿直接copy⼀、实验⽬的1. 了解并分析LU分解法的优点;2. 追赶法的应⽤与其与LU分解法的对⽐;3. 认识迭代法收敛的含义以及迭代法初值和⽅程组系数矩阵性质对收敛速度的影响。
⼆、实验题⽬三、实验原理l LU分解:·如果对A(0)x = b(0)施⾏第⼀次消元后化为A(1)x = b(1),则存在L1,使得L1A(0)=A(1),L1b(0)= b(1)⼀般地,进⾏k次消元化后为A(k)x = b(k), 则有L k A(k-1)=A(k),L k b(k-1)= b(k)重复这⼀过程,最后得到L n-1…L2L1A(0) = A(n-1)L n-1…L2L1b(0) = b(n-1)将上三⾓形矩阵A(n-1)记为U,则 A=LU ,其中为下三⾓矩阵。
利⽤⾼斯消元法实质上产⽣了⼀个将A分解为两个三⾓形矩阵相乘的因式分解,称为A的三⾓形分解或LU分解。
·矩阵分解不⼀定采⽤⾼斯消元法,以下为直接计算的计算公式:把增⼴矩阵A 采⽤LU 分解格式,即可得到与原⽅程同解的⽅l 追赶法:求解Ax = b 等价于解两个⼆对⾓线⽅程组Ly = bUx =y⾃上⽽下解⽅程组Ly = b 形象地被称为“追”。
y1 = b1/l11y i =b i-l ii-1y i-1/l ii, i = 2, 3, … ,n⾃下⽽上解⽅程组Ux = y 形象地被称为“赶”。
x n=y nx i =y i-u ii+1x i+1, i = n-1, … ,2,1习惯上,上述求解⽅法称为“追赶法”。
l 迭代法:·雅克⽐迭代雅克⽐迭代法基本思想与迭代法相同是⼀种逐次逼近的⽅法。
⾸先给定⼀个较粗糙的初值,然后采⽤迭代公式,进⾏多次迭代,直到满⾜所要求的精度为⽌。
地下水利用期末复习题 (形考复习)
![地下水利用期末复习题 (形考复习)](https://img.taocdn.com/s3/m/e9317c5c52ea551810a68784.png)
山东广播电视大学开放教育地下水利用课程期末复习题一、单选题1. ()是指埋藏和运动于松散沉积物孔隙中的重力水。
DA.潜水 B.毛细水 C.地下水 D. 孔隙地下水2. 埋藏于岩石裂隙中的地下水统称为()BA.泉水B.裂隙水 c含水层 D.隔水层3. 地下一定深度岩石中的空隙被重力水所充满,形成的一个自由水面。
地下水面之上称为()CA.饱水带 B.潜水带 C.包气带 D.含水带4.决定地下水流向的是()CA.压力的大小 B.位置的高低 C.水头的大小 D.含水层类型5.大气降水入渗转化为地下水时,其间土壤含水率有明显降低的是()BA.饱和区B.过渡区C.传导区D.湿润区6.对地下水动态的影响起主导作用的因素是:()AA.气候因素B.水文因素C.地质因素D.植被因素7、当表面能大于水分子自身重力时,岩石空隙中的这部分水就不能在自身重力作用下运动,则称其为()。
BA.重力水B.结合水C.毛细水8. 有入渗补给的河渠间含水层中,只要存在分水岭,且两河水位不相等时,则分水岭总是偏向高水位一侧。
如果入渗补给强度W>0时则浸润曲线的形状为()。
AA.椭圆曲线B.双曲线C.抛物线D.圆9、赋存于包气带中局部隔水层或弱透水层上面的重力水,称为()。
AA、上层滞水B、潜水C、承压水10、淡水是指含盐量极少的水,通常用矿化度衡量,矿化度小于()为淡水。
AA.1g/LB.2g/L A.2.5g/L A.3g/L11、对于含水层埋深大于50m时,井灌区井型易用()井型。
BA.筒井B.管井C.大口井D.辐射井12.在底版水平,无入渗、无蒸发的河间潜水含水层中,当渗流为稳定流,两侧河水位相等时,浸润曲线的形状为()BA.双曲线B.水平直线C.抛物线D.椭圆形曲线13. 在有入渗补给,且存在分水岭的河间含水层中,已知左河水位标高为H1,右侧水位标高为H2,两河间距为L,当H1>H2时,分水岭:()BA.位于L/2处B.靠近左河C.靠近右河D.不存在14. 当河渠间含水层无入渗补给,但有蒸发排泄(设其蒸发强度为ε)时,则计算任一断面的单宽流量公式只要将式:中的W用( C )代替即可。
第16讲追赶法误差分析
![第16讲追赶法误差分析](https://img.taocdn.com/s3/m/c583cf17eefdc8d376ee32cd.png)
第16讲 追赶法、误差分析在实际应用问题中,经常会遇到解三对角线方程组。
例如:用三次样条函数的插值问题中得到的三转弯及三弯矩方程组,当时说可用追赶法来求解。
还有用差分法解二阶线性常微分方程边值问题,若用三点插值格式也得到解三对角线方程组,本节介绍该类方程组中的特例及该种方程组的解法:追赶法。
优点:1.计算量小。
2.方法简单,存贮量小。
3.数值稳定的(对舍入误差来说)。
1 追赶法三对角线方程组的一般表示方法:可见,对A 的分解只需求i i u l ,且按n n n l u l u l u l −→−−→−−→−−→−−→−−→−−→−--112211.....的递推过程进行,形象地称为“追”的过程⎩⎨⎧=-==-),....2(/)(/1111n i l y a f y l f y i i i i ⎩⎨⎧-=-==+)1,2,.....1(1n i x u y x y x i i i inn 形象地称回代求解过程为“赶”的过程追赶法的计算量为5n-4次乘除法,可用4个 一 维数组存放{}{}{}{}i i i i f c b a ,,,。
共占用4n-2个单元,在计算过程中{}{}{}i i i y u l ,,依次覆盖掉{}{}{}i i i f c b ,,最后,{}i x 覆盖掉{}i y ,所以,追赶法具有计算量小,占用内存单元少的特点。
2、误差分析⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=-n n l u u u U 121....111⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=n nl a l a l a l L ....33221)1,...,3,2,1(-=n i ⎪⎩⎪⎨⎧+===+++11111i i i i ii i lu a b u l c l b ⎪⎩⎪⎨⎧-===+++i i i i ii i ua b l l c u b l 11111/)1,...,3,2,1(-=n i病态方程组与条件数一个线性方程组Ax=b 是由它的系数矩阵A 和它的右端项b 所确定,在实际问题中,由于各种原因,A 或b 往往有误差,从而使得解也产生误差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
505 506 507 508 509 990 991 992 993 994 995 996 997 998 999
0.701531462062425 0.700411187049307 0.699289183841008 0.698165455205962 0.697040003916856 0.015707318277898 0.014136696907518 0.012566040656241 0.010995353399505 0.009424639012826 0.007853901371785 0.006283144352021 0.004712371829222 0.003141587679113 0.001570795777448
0.701531425770856 0.700411150783806 0.699289147601868 0.698165418993473 0.697039967731308 0.015707317311821 0.014136696038033 0.012566039883353 0.010995352723218 0.009424638433144 0.007853900888711 0.006283143965559 0.004712371539373 0.003141587485880 0.001570795680831
0.000000036291569 0.000000036265501 0.000000036239140 0.000000036212489 0.000000036185548 0.000000000966077 0.000000000869485 0.000000000772888 0.000000000676287 0.000000000579682 0.000000000483074 0.000000000386462 0.000000000289849 0.000000000193233 0.000000000096617
f(i)=fx(pi*i/2000); x2(i)=cos(pi*i/2000); end f(1)=f(1)+4000000/pi^2; % 对 A 进行分解,追赶法 u(1)=b(1); for i=2:n if(u(i-1)~=0) l(i-1)=a(i-1)/u(i-1); u(i)=b(i)-l(i-1)*c(i-1); else end end L=eye(n)+diag(l,-1); U=diag(u)+diag(c,1); x=zeros(n,1); y=x; % 求解 Ly=b ,追赶法第一步,消去最下面的斜行 y(1)=f(1); for i=2:n y(i)=f(i)-l(i-1)*y(i-1); end % 求解 Ux=y,追赶法第二步 if(u(n)~=0) x(n)=y(n)/u(n); end for i=n-1:-1:1 x(i)=(y(i)-c(i)*x(i+1))/u(i); end time=toc;%计时结束,并赋值 disp('运算时间为:'); disp(time); %列出计算结果 result=[x x2 error]; disp(' 数值解 真实解 disp(result);
误差项');
三:计算结果
3.1Matlab 运行的结果(图 1)
图1 3.2 整理后的部分结果(表 1)
x=i*π /2000 i=1 2 3 4 5 6 7 8 9 493 494 495 496 497 498 499 500 501 502 503 504 数值解 0.999998766488219 0.999995065578381 0.999988897279619 0.999980261607153 0.999969158582291 0.999955588232430 0.999939550591052 0.999921045697731 0.999900073598126 0.714838961127553 0.713739638835332 0.712638555461295 0.711535713722255 0.710431116339366 0.709324766038112 0.708216665548303 0.707106817604067 0.705995224943845 0.704881890310382 0.703766816450721 0.702650006116195 真实值 0.999998766299704 0.999995065201858 0.999988896715596 0.999980260856137 0.999969157644790 0.999955587108950 0.999939549282101 0.999921044203816 0.999900071919754 0.714838924546119 0.713739602276421 0.712638518925205 0.711535677209285 0.710431079849813 0.709324729572274 0.708216629106476 0.707106781186548 0.705995188550928 0.704881853942361 0.703766780107891 0.702649969798849 误差 0.000000000188515 0.000000000376523 0.000000000564023 0.000000000751016 0.000000000937501 0.000000001123480 0.000000001308951 0.000000001493915 0.000000001678372 0.000000036581434 0.000000036558911 0.000000036536090 0.000000036512970 0.000000036489553 0.000000036465838 0.000000036441827 0.000000036417519 0.000000036392917 0.000000036368021 0.000000036342830 0.000000036317346
二:解题过程
2.1 求出差分方程
差分方程为:Au=f
������0 ������ + ������ 1 1 ������1 ������ ℎ2 ������2 ������ ������2 ������ ⋱ 0 ������2 ������3 ������3 ������ ������3 A= , ������ = ⋮ , ������ = ⋮ ⋱ ⋱ ⋮ ������ ������998 ������ 998 ������998 0 ������1000 ������ ������999 ������999 ������999 + 2 ℎ ������ ������ −1 其中:������������ = ������ ������ = 1,2,3 … … 999, ℎ = , ������ = ������ = 2 , 2000 2000 ℎ 2 ������������ = ������������������������������ , ������������ = ������������������������������ + ������������������������������ ������������������������������ , ������������ = 2 + ������������ ℎ 2.2 用追赶法编程求解差分方程 function x=chase() tic;%开始计时 n=999; %对 a,b,c,f 进行赋值 a=zeros(n-1,1); a=a-4000000/pi^2; c=zeros(n-1,1); c=c-4000000/pi^2; b=zeros(n,1); f=zeros(n,1); qx=@(x)sin(x); fx=@(x)cos(x)+sin(x)*cos(x); x2=zeros(n,1);%记录 u(x)的真实值 error=zeros(n,1);%记录误差 for i=1:n b(i)=8000000/pi^2+qx(pi*i/2000);
一:题目重述
−������2 ������ ������ π + ������������������������������ ������ = ������������������������ + ������������������������������������������������ 定义区间为: 0, ������������ 2 2 ������ ������ 0 = 1, ������ = 0, 当������ = 1000 时,求������������ 和������(������������ ) 2
表1
四:结论分析
计算结果说明: 1. 当步长足够长时(N=1000),利用差分方程解出的数值解和真实值极 为接近,误差在 10^-8 数量级以上,效果非常好! 2. 运行效率很高,使用追赶法解这个线性方程组,matlab 的运行时间 极短,只有 0.046 秒。