您的当前位置:首页正文

用追赶法解三对角方程组

来源:九壹网


用追赶法解三对角方程组课程设计

题目: 用追赶法解三对角方程组

设计一种用追赶法解三对角方程组的程序及可输入数据的界面,并用数值例子计算。

引言: 许多科学和工程技术问题,都归结为求解线性方程组。例如,电学中网络问题,实验数据的曲线拟合、曲面拟合问题,解非线性方程组等都导致求导致求解线性方程组。在一些实际问题中,例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等,都会要求解系数矩阵呈三对角线形的线性方程组。而解三对角方程组的最简单方法是用追赶法,它公式简单,计算量小,所占用的存储单元少,所以在小机器上也能求解。

摘要: 追赶法是用来求解三对角方程组的专用方法,对于三对角方程组,追赶法比Gauss消去法的计算量要小的多。本文主要介绍了追赶法的原理,并用Matlab编写求解程序,以实现对三对角方程组的求解,进一步解决实际中的问题。

Abstract: The chase method is uses for to solve three opposite angle systems of equations the special-purpose method,compare with Gauss elimination,its Computation load are are few. This article mainly introduced the Principle of The chase method,and use Matlab to Compilation solution procedure, Realizes to solve three opposite angle system of equations,and solve tht problem in our life.

关键词: 追赶法 三对角方程组 追赶法的Matlab程序 Thomas方法 正文: 1.实验原理:

设系数矩阵为三对角矩阵

并且满足条件:

称 为对角占优的三对角线矩阵。其特征是非零元素仅分布在对角线及对角线两侧的位置。在样条插值函数的 关系式中就出现过这类矩阵。事实上,许多连续问题经离散化后得到的线性方程组,其系数矩阵就是三对角或五对角形式的对角矩阵。

应用追赶法求解三对角线性方程组。追赶法仍然保持LU分解特性,它是一种特殊的LU分解。充分利用了系数矩阵的特点,而且使之分解更简单,得到对三对角线性方程组的快速解法。

设矩阵A非奇异,A有Crout分解A=LU,其中L为下三角矩阵,U为单位上三角矩阵,记

可先依次求出L,U中的元素后,令Ux=y,先求解下三角方程组Ly=f得出y,再求解上三角方程组Ux=y。 事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法吏为紧凑。其计算公式为:

我们将计算系数β1→β2→…→βn-1及у1→у2→…→уn的过程成为追的过程,将计算方程组的解χn→χn-1→…→χ1的过程成为赶的过程。

追赶发公式实际上就是把高斯消去法用到求解三对角线方程组上的结果。这时由于A特别简单,因此使得求解的计算公式非常简单,而且计算量仅为5n-4次乘除法,而另外增加解一个方程组Ax=f2仅增加3n-2

次乘除运算,易见追赶法的计算量是比较小的。 2.实验程序:

建立一个名为chase.m的M文件,如下: function x=chase (a,b,c,f) %定义函数chase n=length(b); if n-1==length(a) for i=n-1:-1:1 a(i+1)=a(i); end end

%将a设置为n维向量

c(1)=c(1)/b(1); f(1)=f(1)/b(1); for i=2:n-1

b(i)=b(i)-a(i)*c(i-1); c(i)=c(i)/b(i);

f(i)=(f(i)-a(i)*f(i-1))/b(i); end

f(n)=(f(n)-a(n)*f(n-1))/(b(n)-a(n)*c(n-1)); for i=n-1:-1:1

f(i)=f(i)-c(i)*f(i+1); end x=f;

3.实验内容

用追赶法解三对角方程组:

设A =2 7 0 3 2 9 0 4 5 F=5 6 7

求解线性方程组Ax=F. 4.实验步骤:

(1)在Matlab中编写一个名为chase.m的M文件,程序为2.实验程序中的程序。依次输入数据如下: >> A=[2 7 0;3 2 9;0 4 5]; >> a=[3 4]; >> b=[2 2 5]; >> c=[7 9]; >> f=[5 6 7]; >> x=chase (a,b,c,f)

x =

-0.6433 0.8981 0.6815

得到输出结果x = -0.6433 0.8981 0.6815即为原线性方程组的解。 结果验证: >> A*x' ans = 5.0000 6.0000 7.0000

得到ans=f 即结果正确。

结论: 通过对追赶法的原理分析,编写出Matlab程序实现了对三对角方程组的求解。解决了例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等求解系数矩阵呈三对角线形的线性方程组的问题。 指导老师: 尹强 参考文献:

[1] 关治,陆金甫。数值分析。清华大学出版社,2006.2。

[2] 周煦。计算机数值计算方法及程序设计。机械工业出版社,2004.10.01。 [3] 张铮,杨文平,石博强,等. MATLAB程序设计与实例应用.中国铁道出版社,2003

因篇幅问题不能全部显示,请点此查看更多更全内容

Top