数值分析列主元高斯消去顺序高斯平方根法追赶法

合集下载

数值计算方法 高斯消元法、主元素法 - 高斯消元法、主元素法-1

数值计算方法 高斯消元法、主元素法 - 高斯消元法、主元素法-1

求 f (4) .
c b a 1
高 斯
设所求二次函数为 f ( x) ax2 bx c ,其待定系数满足c 2b 4a 2 解此方程组得 f ( x) 3 x2 11 x 3 ,则 f (4)= 5 c 3b 9a 0

22

思 考 在一次智力测验中,老师写出某个数列的前两项为1,2,让学生按照前两
9
预备知识——Cramer法则
b1 a12
a1n
b2 a22
a2 n

x1
D1 D
bn
an2 A
ann ,



a11 a12
b1

a21 a22
b2
xn
Dn D
an1
an 2 A
bn ,
D0
a11
b1
a1n
a21
b2
a2n
,
xk
Dk D
an1
bn A
ann ,
,
优点:收敛、稳定、结论可靠 缺点:计算量过大 计算量: M=(n2 1)n!n 当 n 10 时,M 0.359251210109 当n 40时,M 0.13046485371042
a
(2) 2j
ai(22)
a
(2) 22
方程右边
bi(3)
bi(2) b2(2)
ai(22)
a
(2) 22
方程左边
ai(jk 1)
ai(jk)
ak(kj)
ai(kk) ak(kk)
方程右边
bi(k 1)
bi(k)
bk(k)
ai(2k) ak(kk)
25

研究生数值分析第四版第二章2.1Gauss消去法

研究生数值分析第四版第二章2.1Gauss消去法

2.1 Gauss消去法
一 、三角形方程组的解法 1.下三角形方程组 2.上三角形方程组
a11 x1 a12 x2 a1n xn b1 a22 x2 a2n xn b2 ann xn bn
b1 a11 x1 a x a x b2 21 1 22 2 an1 x1 an 2 x2 ann xn bn
a11(1) (1) a21 (1) ( A b) a31 an1(1)
a11(1) 0 0 0
a12
(1)
a13
(1)


a1n1(1)来自a1n(1)b1
a22 a32 an 2
(1) ( 2) ( 2)
第二章 线性方程组的解法
2.1 Gauss消去法
2.2 直接三角分解法 2.3 矩阵的条件数与病态方程组 2.4 迭代法
第二章 线性方程组的解法
2.1 Gauss消去法
一 、三角形方程组的解法 二、Gauss消去法
2.1 Gauss消去法
一 、三角形方程组的解法 1.下三角形方程组 2.上三角形方程组
求解线性方程组的方法可分为两大类: 直接法和迭代法 直接法(精确法):指在没有舍入误差的情况下经过 有限次运算就能得到精确解。 迭代法(逐次逼近法):从一个初始向量出发,按照一 定的计算格式,构造一个向量的无穷序列,其极限才是 所求问题的精确解,只经过有限次运算得不到精确解。 Cramer(克莱姆)法则是直接方法中的一种,根据 此法则,方程组(2.1)的解为
前代法
x1 b1 / a11
xi (bi aij x j ) / aii ,

数值分析——线性方程组直接解法

数值分析——线性方程组直接解法

b
b2
an1
an2
ann
xn
bn
2020/8/22
第五章 线性方程组的直接解法
2
若系数矩阵A非奇异,即 det (A)≠0 ,则方程组有
惟一解 x =( x1, x2, …, xn )T .
根据 Gramer(克莱姆)法则,求解方程组(7.1)时, 要计算大量的行列式,所需乘法次数大约为
Gauss消去法由消元和回代两个过程组成,先讨论 一个具体的线性方程组的求解。
2020/8/22
第五章 线性方程组的直接解法
5
一、顺序Gauss消 例去7.1法. 用Gauss消去法解方程组 用增广矩阵进行进算
2 x1 4 x2 2 x3 2
x1
2 x2
3 x3
3
3 x1 2 x2 5 x3 1
a(1) 1n
a(2) 2n
a(3) 3n
b1(1) b2( 2 )
b3( 3 )
0
0
a(3) n3
a(3) nn
bn(3)
其中
a(3) ij
a(2) ij
l
i
a(2)
2 2j
,
i, j 3,4,, n
b(3) i
b(2) i
li
b(2)
2020/8/22
第五章 线性方程组的直接解法
4
§1 Gauss消去 法
Gauss(高斯)消去法是一种规则化的加减消元法
基 本思 想
通过逐次消元计算把需求解的线性方程组转化成 上三角形方程组,也就是把线性方程组的系数矩阵转 化为上三角矩阵,从而使一般线性方程组的求解转化 为等价(同解)的上三角形方程组的求解。

(完整)数值计算方法复习

(完整)数值计算方法复习

2016计算方法复习务必通过本提纲例子和书上例子掌握如下书本内容:1. 会高斯消去法;会矩阵三角分解法;会Cholesky 分解的平方根法求解方程组2. 会用插值基函数;会求Lagrange, 会计算差商和Newton 插值多项式和余项3. 会Jacobi 迭代、Gauss —Seidel 迭代的分量形式,迭代矩阵,谱半径,收敛性4. 会写非线性方程根的Newton 迭代格式;斯蒂芬森加速5. 会用欧拉预报-校正法和经典四阶龙格—库塔法求解初值问题6. 会最小二乘法多项式拟合7. 会计算求积公式的代数精度;(复化)梯形公式和(复化)辛普生公式求积分;高斯-勒让德求积公式第1章、数值计算引论(一)考核知识点误差的来源类型;绝对误差和绝对误差限,相对误差和相对误差限,有效数字;误差的传播。

(二) 复习要求1。

了解数值分析的研究对象与特点。

2。

了解误差来源与分类,会求有效数字; 会简单误差估计. 3.了解误差的定性分析及避免误差危害。

(三)例题例1. 设x =0.231是精确值x *=0。

229的近似值,则x 有2位有效数字。

例2. 为了提高数值计算精度, 当正数x 充分大时, 应将)1ln(2--x x 改写为)1ln(2++-x x .例3. 3*x 的相对误差约是*x 的相对误差的1/3 倍.第2章、非线性方程的数值解法(一)考核知识点对分法;不动点迭代法及其收敛性;收敛速度; 迭代收敛的加速方法;埃特金加速收敛方法;Steffensen 斯特芬森迭代法;牛顿法;弦截法. (二) 复习要求1.了解求根问题和二分法.2。

了解不动点迭代法和迭代收敛性;了解收敛阶的概念和有关结论。

3。

理解掌握加速迭代收敛的埃特金方法和斯蒂芬森方法。

4。

掌握牛顿法及其收敛性、下山法, 了解重根情形. 5.了解弦截法. (三)例题1。

为求方程x 3―x 2―1=0在区间[1.3,1.6]内的一个根,把方程改写成下列形式,并建立相应的迭代公式,迭代公式不收敛的是( )(A )11,1112-=-=+k k x x x x 迭代公式 (B )21211,11kk x x x x +=+=+迭代公式(C ) 3/12123)1(,1k k x x x x +=+=+迭代公式 (D )231x x =-迭代公式11221+++=+k k kk x x x x 解:在(A)中,2/32)1(21)(,11)(,11--='-=-=x x x x x x ϕϕ2/3)16.1(21->=1.076故迭代发散。

数值线性代数课程设计高斯消去法

数值线性代数课程设计高斯消去法

数值线性代数课程设计⾼斯消去法数值线性代数课程设计线性⽅程组的直接解法数理学院 09405011班 0940501120 沈骁摘要:如何利⽤电⼦计算机来快速、有效的求解线性⽅程组的问题是数值线性代数的核⼼问题。

本⽂将主要介绍解线性⽅程组的基本的直接法——⾼斯消去法,平⽅根法,并⽤实例来验证此⽅法的有效性。

关键字:⾼斯消去法,顺序消去法,选主元消去法,平⽅根法,消元过程,回代过程,主元数和乘数引⾔:因为各种各样的科学与⼯程问题往往最终都要归结为⼀个线性⽅程组的求解问题。

本⽂在⽐较着⼏个⽅法的基础上,通过⼀道实例来得到最⽅便最有效的⽅法。

基本原理:⼯程计算和科学研究中的许多问题,最终归结为线性代数⽅程组的求解。

求解的⽅法也有很多,如⾼斯消去法(顺序消去法,选主元消去法),平⽅根法。

⾼斯消去法是⽬前求解中⼩规模线性⽅程组最常⽤的⽅法;平⽅根法是求解对称正定线性⽅程组最常⽤的⽅法之⼀。

为了更快速、更⽅便的求解线性⽅程组,下⾯我们⽐较⼀下这⼏种⽅法哪种更好。

⼀、⾼斯(Causs )消去法就是逐步消去变元的系数,将原⽅程组Ax b =化为系数矩阵为三⾓形的等价⽅程组Ux d =,然后求解系数矩阵为三⾓形的⽅程组⽽得出原⽅程组解的⽅法。

把逐步消元去变元的系数,将⽅程组化为以系数矩阵为三⾓形的等价⽅程组的过程称为⼩院过程;把求系数矩阵为三⾓形的⽅程组解的过程称为回代过程。

最初求解⽅程组的⾼斯消去法也称为顺序消去法,它由消元过程和回代过程组成。

顺序消去法 1.消元过程考虑⼀般⽅程组,为了推导过程⽅便,记系数矩阵A 的元素ij a 为(0)ij a ,右端向量b 的元素i b 记为(0),1i n a +,于是⽅程组11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=??+++=+++=(1.1)成为()()()()()()()()()()()()00011112211100021122222100011221n n n n n n n n nn n nn a x a x a x a a x a x a x a a x a x a x a +++?+++=?+++=+++=假设(0)110a ≠,将第1个⽅程乘以(0)1(0)11()i a a -加到第i 个⽅程(2)i n ≤≤,得到第1个导出⽅程组(0)(0)(0)(0)111122111(1)(1)(1)222221(1)(1)(1)221n n n n n n n nn n nn a x a x a x a a x a x a a x a x a +++?++=?+=??+=其中:(0)(1)(0)(0)11(0)11i ij ij j a a a a a =-,2i n ≤≤,21j n ≤≤+。

数值分析1顺序消去法、列主元、列主元Gauss-Jordan消去法

数值分析1顺序消去法、列主元、列主元Gauss-Jordan消去法

数值分析1顺序消去法、列主元、列主元Gauss-Jordan消去法function x = Gauss (A, b)% 求解方程组的Gauss消去法,调用方法为% x = Gauss (A, b)% 其中% A 为方程组的系数矩阵,b为方程组的右端项% x 为方程组的解[n,m] = size (A); nb = length (b);if n~=merror ('% 系数矩阵必须为方的!');endif m~=nberror ('% b 的维数与方程组的行数不匹配!'); endfor k = 1:n-1% 消元过程for i = k+1:nm = A (i,k)/A(k,k);for j = k+1:nA (i,j) = A (i,j)-m*A (k,j);endb (i) = b (i)-m*b (k);endendx=zeros (size (b));for k = n:-1:1for j = k+1:nb (k) = b (k)-A (k,j)*x (j);endx (k) = b (k)/A(k,k);endendfunction x = Gauss_Elim (A, b)% 求解方程组的列主元Gauss消去法,调用方法为% x = Gauss_Elim (A, b)% 其中% A 为方程组的系数矩阵,b为方程组的右端项% x 为方程组的解[n,m] = size (A); nb = length (b);error ('% 系数矩阵必须为方的!');endif m~=nberror ('% b 的维数与方程组的行数不匹配!');endfor k = 1:n-1% 选主元a_max = 0;for i = k:nif abs (A (i,k))>a_maxa_max = A (i,k); r=i;endendif abs(a_max)<1e-15error ('% 系数矩阵奇异,无法求解方程组!');end% 交换两行if r>kfor j = k:nz=A (k,j); A (k,j)=A (r,j);A (r,j)=z;endz=b (k);b (k)=b (r);b (r)=z;end% 消元过程for i = k+1:nm = A (i,k)/A(k,k);for j = k+1:nA (i,j) = A (i,j)-m*A (k,j);endb (i) = b (i)-m*b (k);endend% 回代过程if abs (A (n,n))<1e-15error ('% 系数矩阵奇异,无法求解方程组!'); endx=zeros (size (b));for k = n:-1:1for j = k+1:nb (k) = b (k)-A (k,j)*x (j);endx (k) = b (k)/A(k,k);endendfunction x = Gauss_Jordan (A, b)% 求解方程组的列主元Gauss-Jordan消去法,调用方法为% x = Gauss_Jordan (A, b)% 其中% A 为方程组的系数矩阵,b为方程组的右端项% x 为方程组的解[n,m] = size (A); nb = length (b);error ('% 系数矩阵必须为方的!');endif m~=nberror ('% b 的维数与方程组的行数不匹配!'); endfor k = 1:n% 选主元a_max = 0;for i = k:nif abs (A (i,k))>a_maxa_max = A (i,k); r=i;endendif abs(a_max)<1e-15error ('% 系数矩阵奇异,无法求解方程组!'); end% 交换两行if r>kfor j = k:nz=A (k,j); A (k,j)=A (r,j);A (r,j)=z;endz=b (k);b (k)=b (r);b (r)=z;end% 消元计算b (k) = b (k)/A(k,k);for j = k+1:nA (k,j) = A (k,j)/A(k,k);endfor i=1:nfor j=k+1:nA (i,j) = A (i,j)-A (i,k)*A (k,j); endb (i)=b (i)-A (i,k)*b (k); endendendx = b; % 输出bend。

数值分析列主元高斯消去法

数值分析列主元高斯消去法

实验四:列组元消去法一、目的1)熟悉列主元高斯消元法解线性方程组的算法2)掌握列主元高斯消去法的编程二、实验原理列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss消去法的消元过程中,若出现a=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控制舍入误差的影响,并且选主元素比较方便.三、运行结果四、代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace高斯{class Program{static double[] Gause(double[,] a, int n){int i, j, k;int rank, columm;double temp, l, s, mx;double[] x = new double[n];for (i = 0; i <= n - 2; i++){mx = Math.Abs(a[i, i]);rank = i;columm = i;for (j = i + 1; j <= n - 1; j++) //选主元if (Math.Abs(a[j, i]) > mx){mx = Math.Abs(a[j, i]);rank = j;columm = i;}for (k = 0; k <= n; k++) //主元行变换{temp = a[i, k];a[i, k] = a[rank, k];a[rank, k] = temp;} //消元for (j = i + 1; j <= n - 1; j++){l = a[j, i] / a[i, i];for (k = i; k <= n; k++)a[j, k] = a[j, k] - l * a[i, k];}}x[n - 1] = a[n - 1, n] / a[n - 1, n - 1]; //回代方程求解x for (i = n - 2; i >= 0; i--){s = 0;for (j = i + 1; j <= n - 1; j++)s = s + a[i, j] * x[j];x[i] = (a[i, n] - s) / a[i, i];}return x;}static void Main(string[] args){double[,] a = new double[4, 5] { { 10, -7, 0, 1, 8 }, { -3, 2.099999, 6, 2, 5.900001 }, { 5, -1, 5, -1, 5 }, { 2, 1, 0, 2, 1 } };int n = 4;double[] x = new double[n];x = Gause(a, n);Console.WriteLine("高斯消去法方程:");for (int i = 0; i < n; i++){for (int j = 0; j < n; j++)Console.Write(a[i, j].ToString() + " ");Console.WriteLine();}Console.WriteLine("线性方程组的解:");for (int i = 0; i <= n - 1; i++)Console.Write("x" + (i + 1).ToString() + "=" +x[i].ToString() + " ");Console.WriteLine();Console.ReadLine();}}}四、分析通过本次实验的学习,学会根据算法编写基本的相关程序,虽然此次程序模板由老师给予,但认真阅读理解程序有助于今后的学习,再利用计算机中的C语言对高斯列主元消去法可以快速得到线性方程组的解,由简单的线性方程组可以推广到一般n阶线性方程组,这对如何利用高斯列主元消去法解决实际问题有了一定的经验。

数值分析高斯顺序消去法、列主元消去法LU分解法

数值分析高斯顺序消去法、列主元消去法LU分解法

数值分析实验报告(1)学院:信息学院班级:计算机0903班姓名:***学号:********课题一A.问题提出给定下列几个不同类型的线性方程组,请用适当的方法求解线性方程组1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------1368243810041202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------19243360021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )TB.(1)对上述三个方程组分别用Gauss 顺序消去法与Gauss 列主元消去法;平方根 与改进平方根法;追赶法求解(选择其一) (2)编写算法通用程序(3)在应用Gauss 消去时,尽可能利用相应程序输出系数矩阵的三角分解式C.(1)通过该课题的程序编制,掌握模块化结构程序设计方法 (2)掌握求解各类线性方程组的直接方法,了解各种方法的特点 (3)体会高斯消去法选主元的必要性 实验步骤:(高斯消去法,列主元,LU )1顺序高斯消去法2.LU 分解法3.列主元高斯消去法(如下图)(1)高斯消去法运行结果如下(2)对方程的系数矩阵进行LU分解并求出方程组的解(3)列主元高斯消去法实验体会总结:利用gauss消去法解线性方程组的时候,如果没有经过选主元,可能会出现数值不稳定的现象,使得方程组的解偏离精确解。

博士研究生入学考试《数值分析(机电院)》考试大纲

博士研究生入学考试《数值分析(机电院)》考试大纲

博士研究生入学考试《数值分析(机电院)》考试大纲第一部分考试形式和试卷结构一、考试方式:考试采用闭卷笔试方式,试卷满分为100分。

二、考试时间:180分钟。

三、试卷内容结构:约占 60%,主观题约占 40%。

四、试卷题型结构:试卷由三部分组成:选择/判断、填空、分析/计算。

其中:1、选择/判断题,约占20%。

测试考生对本课程基本概念、基本知识和数值计算常用算法设计与分析方法的掌握程度。

2、填空题,约占40%。

测试考生运用数值计算相关基础知识和基本方法,开展计算、简要分析以及求解实际问题的能力。

3、分析、计算题,约占40%。

测试考生综合运用数值计算理论、典型方法解决综合问题,并开展相关计算方法收敛性以及误差分析等能力。

第二部分考察的知识及范围1.误差度量与数值算法设计误差基本概念:误差来源与分类,截断误差、舍入误差、绝对误差、相对误差,有效数字以及数值稳定性。

函数计算误差分析:一元函数误差估计,四则运算误差估计。

数值算法设计原则:简化计算步骤以节省计算量(秦九韶算法)、减少有效数字损失,选择数值稳定的算法。

2.函数的插值方法以及误差估计插值问题的基本概念:插值问题的描述,插值多项式的存在和唯一性,差商、差分的概念以及性质。

拉格朗日插值:线性插值与抛物插值,n次拉格朗日插值,插值余项公式。

牛顿插值:均差的概念与性质,牛顿插值公式及其余项,差分的概念与性质。

埃尔米特插值:两点三次埃尔米特插值及其余项,n点埃尔米特插值,非标准埃尔米特插值及其余项。

分段低次插值:分段线性插值,分段三次埃尔米特插值。

三次样条插值:三次样条函数建立,三次样条插值方法。

3.函数逼近与曲线拟合正交多项式:函数内积、欧几里德范数,正交函数序列,正交多项式,勒德让多项式,切比雪夫多项式。

最佳平方逼近:最佳平方逼近问题及解法,基于正交函数、勒德让多项式、切比雪夫多项式的最佳平方逼近。

最小二乘法:最小二乘曲线拟合问题的提出和解法,最小二乘计算,最小二乘法的应用(算术平均、超定方程组)。

数值分析-线性方程组的直接解法

数值分析-线性方程组的直接解法

算法 Gauss(A,a,b,n,x)
1. 消元 For k=1,2, … , n-1 1.1 if akk=0 , stop; 1.2 For i=k+1,k+2, …, n 1.2.1 l ik=aik /akk => aik 1.2.2 For j=k+1,k+2, … ,n ai j -aik ak j =>aij 1.2.3 bi -aik bk=> bi 2. 回代 2.1 bn / an=>xn; 2.2 For i=n-1,n-2, …, 2,1 2.2.1 bk => S 2.2.2 For j=k+1,k+2, … ,n S –akj xj =>S 2.2.3 S/ akk => xk a1 1 a1 2 a13 a2 1 a2 2 a23
线性方程组的直接解法
刘 斌
线性方程组的直接解法
§1 Gauss消去法 1.1 顺序Gauss消去法
1.2
§2 2.1 2.2 2.3
列主元Gauss消去法
Gauss消去法的矩阵运算 Doolittle分解法 平方根法
直接三角分解方法
2.4
追赶法
引入
在科学计算中,经常需要求解含有n个未知量 的n个方程构成的线性方程组 a11 x1 a12 x2 a1n xn b1 a21 x1 a22 x2 a2 n xn b2 (1) an1 x1 an 2 x2 ann xn bn
(1) a12 ( 2) a22 0
(1) (1) a13 a1 n ( 2) ( 2) a23 a2 n ( 3) ( 3) a33 a3 n
0

数值计算基础Gauss列选主元消去法及追赶法

数值计算基础Gauss列选主元消去法及追赶法

1、用Guass列选主元消去法求解方程组源程序代码:#include<stdio.h>#include<stdlib.h>#include<math.h>#define MAX_n 100#define PRECISION 0.0000001void MatrixInput(float A[][MAX_n],int m,int n)//输入数组{int i,j;float ftmp;printf("\n===Begin input Matrix elements===\n");for(i=1;i<=m;++i){printf("Input_Line %d : ",i);for(j=1;j<=n;++j){scanf("%f",&ftmp);A[i][j]=ftmp;}}}void MatrixOneColumnOutput(float A[][MAX_n],int n,int k)//输出方程的解{int i;for(i=1;i<=n;++i)printf("\nx[%d]=%f",i,A[i][k]);}int UpTriangle(float U[][MAX_n],int n)//解上三角方程组{int i,j;for(i=n;i>0;--i){if(fabs(U[i][i])<PRECISION)return 1;for(j=i+1;j<=n;++j)U[i][n+1]-=U[i][j]*U[j][n+1];U[i][n+1]/=U[i][i];}return 0;}void Swap(float *a,float *b)//a,b二个变量中的值交换{float ftmp;ftmp=*a;*a=*b;*b=ftmp;}int GaussElimination_column_select(float A[][MAX_n],int n)//选主元{ int i,j,k;float fTmp;for(i=1;i<n;++i){ //找主元所在行for(k=i,j=i+1;j<=n;++j)if(fabs(A[j][i])>fabs(A[k][i])) k=j;//二行交换for(j=i;j<=n+1;++j)Swap(&A[i][j],&A[k][j]);//消元if(fabs(A[i][i])<PRECISION)return 1;for(j=i+1;j<=n;++j)for(k=i+1;k<=n+1;++k)A[j][k]-=A[i][k]*A[j][i]/A[i][i];}UpTriangle(A,n);return 0;}void main(){int n;float A[MAX_n][MAX_n];printf("Input n=");scanf("%d",&n);if(n>=MAX_n-1){printf("\an must <%d!\n",MAX_n);exit(0);}MatrixInput(A,n,n+1);if(GaussElimination_column_select(A,n)) printf("\nGauss Failed!");else{printf("\nOutput Solution:");MatrixOneColumnOutput(A,n,n+1);printf("\n\n");}}运行结果:2、用追赶法求解方程组#include<stdio.h>#include<math.h>double ZhuiGanFa(double a[],double b[],double c[],double d[],int n); void main(){int n,i;double a[10],b[10],c[10],d[10];printf("Input n value:");/*表示n维向量*/scanf("%d",&n);printf("\n");printf("Now input the (a_i),i=1,2,…,%d: ",n-1);for(i=0;i<=n-2;i++)scanf("%lf",&a[i]);printf("Now input the (b_i),i=1,2,…,%d: ",n);for(i=0;i<=n-1;i++)scanf("%lf",&b[i]);printf("Now input the (c_i),i=1,2,…,%d: ",n-1);for(i=0;i<=n-2;i++)scanf("%lf",&c[i]);printf("Now input the (d_i),i=1,2,…,%d: ",n);for(i=0;i<=n-1;i++)scanf("%lf",&d[i]);ZhuiGanFa(a,b,c,d,n);}double ZhuiGanFa(double a[],double b[],double c[],double d[],int n) {int i;double t;if(fabs(b[0])<=fabs(c[0])||fabs(c[0])<=0||fabs(b[n-1])<fabs(a[n-2])||fabs(a[n-2])<=0)/*判断是否符合追赶法条件*/{printf("fail\n");return 0;}for(i=1;i<=n-2;i++){if(fabs(b[i])<(fabs(a[i])+fabs(c[i]))||a[i]*c[i]==0){printf("fail\n");return 0;}}c[0]=c[0]/b[0];d[0]=d[0]/b[0];for(i=1;i<=n-2;i++){t=b[i]-a[i-1]*c[i-1];c[i]=c[i]/t;d[i]=(d[i]-a[i-1]*d[i-1])/t;}d[n-1]=(d[n-1]-a[n-2]*d[n-2])/(b[n-1]-a[n-2]*c[n-2]);for(i=n-2;i>=0;i--)d[i]=d[i]-c[i]*d[i+1];printf("\n");for(i=0;i<=n-1;i++)printf("x(%d)=%f\n",i,d[i]);printf("\n");return 1;}运行结果1:运行结果2:。

matlab高斯消gf,高斯消去、追赶法matlab(示例代码)

matlab高斯消gf,高斯消去、追赶法matlab(示例代码)

matlab⾼斯消gf,⾼斯消去、追赶法matlab(⽰例代码)1. 分别⽤Gauss消去法、列主元Gauss消去法、三⾓分解⽅法求解⽅程组程序:(1)Guess消去法:function x=GaussXQByOrder(A,b)%Gauss消去法N = size(A);n = N(1);x = zeros(n,1);for i=1:(n-1)for j=(i+1):nif(A(i,i)==0)disp(‘对⾓元不能为0‘);return;endm = A(j,i)/A(i,i);A(j,i:n)=A(j,i:n)-m*A(i,i:n);b(j)=b(j)-m*b(i);endendx(n)=b(n)/A(n,n);for i=n-1:-1:1x(i)=(b(i)-sum(A(i,i+1:n)*x(i+1:n)))/A(i,i);end命令⾏输⼊:A=[1 -1 2 1;-1 3 0 -3 ;2 0 9 -6;1 -3 -6 19];b=[1 3 5 7];b=b‘;x=GaussXQByOrder(A,b)-8.0000000000000000.3333333333333333.6666666666666672.000000000000000(2)列主元Gauss消去法程序:function x=GaussXQLineMain(A,b)%列主元Gauss消去法N = size(A);n = N(1);x = zeros(n,1);zz=zeros(1,n);for i=1:(n-1)[~,p]=max(abs(A(i:n,i)));zz=A(i,:);A(i,:)=A(p+i-1,:);A(p+i-1,:)=zz;temp=b(i);b(i)=b(i+p-1);b(i+p-1)=temp;for j=(i+1):nm = A(j,i)/A(i,i);A(j,i:n)=A(j,i:n)-m*A(i,i:n);b(j)=b(j)-m*b(i);endendx(n)=b(n)/A(n,n);for i=n-1:-1:1x(i)=(b(i)-sum(A(i,i+1:n)*x(i+1:n)))/A(i,i); end命令⾏:A=[1 -1 2 1;-1 3 0 -3 ;2 0 9 -6;1 -3 -6 19];x=GaussXQLineMain(A,b)运⾏结果:x =-8.0000000000000050.3333333333333323.6666666666666682.000000000000000(3)三⾓分解⽅法程序:function x = LU(A,b)%三⾓分解N = size(A);n = N(1);L = eye(n,n);U = zeros(n,n);x = zeros(n,1);y = zeros(n,1);U(1,1:n) = A(1,1:n);L(1:n,1) = A(1:n,1)/U(1,1);for k=2:nfor i=k:nU(k,i) = A(k,i)-L(k,1:(k-1))*U(1:(k-1),i);endfor j=(k+1):nL(j,k) = (A(j,k)-L(j,1:(k-1))*U(1:(k-1),k))/U(k,k); endendy(1)=b(1)/L(1,1);for i=2:ny(i)=b(i)-sum(L(i,1:i-1)*y(1:i-1));endx(n)=y(n)/U(n,n);x(i)=(y(i)-sum(U(i,i+1:n)*x(i+1:n)))/U(i,i);end命令⾏:A=[1 -1 2 1;-1 3 0 -3 ;2 0 9 -6;1 -3 -6 19];b=[1 3 5 7];b=b‘;x=LU(A,b)运⾏结果:x =-8.0000000000000000.3333333333333333.6666666666666672.000000000000000程序:function [times,wucha]=zhuiganfa(a,b,c,f)%追赶法:x为所求解,times为所有乘除运算次数(即时间),wucha为误差的2-范数。

数值分析5-2(高斯消去法)知识讲解

数值分析5-2(高斯消去法)知识讲解

a1(n3) a2(3n) a3(3n)
... an(3n)

x1
x2
xn
b1(3)
b2(3)
bn(3)

1 0
0 1
.(nn))
0 0
...
1
xn
bn(n)
故方程组的解为
x 1 x 2 .x . n T . b 1 ( n )b 2 ( n ).b . n ( n ) T .
四、高斯—约当消去法(Gauss-Jordan)
高斯消去法在消元时始终消去对角线下方的 元素,而高斯——约当消去法则同时消去对 角线上方和下方的元素。
aa12((1111))
a1(12) a2(12)
... ...
aa12((11nn))•xx12 bb12((11))
...
an(11) an(12) ... an(1n) xn bn(1)
高斯消去法的特点:消元和回代不同步!
3. 使用高斯消去法的条件
使用高斯消去法要求在每步消元时 ak(kk) 0 , 那么矩阵A满足什么,才能保证这一条件呢?
引理:约化的主元素 ak(kk) 0 (i=1,2,…,n) 的充 要条件是矩阵A的顺序主子式 D i 0(i1,2,..n.),
推论:如果A的顺序主子式不等于0,则
a1(11) 0
第一次 消元
a1(11) a1(12) ... a1(1n) x1 b1(1)
0
a2(22) ... a2(2n)•x2 b2(2)
...
0
an(22) ... an(2n) xn bn(2)
……
(记 为 A(2)x = b(2))
a1(11)

列主元消去法平方根法追赶法

列主元消去法平方根法追赶法
1 1 1 1 1 1 1 1 1 2 3 1 1 7 4 2 3 1 7 4
8 87 99 55 8 7 9 5 8 7 9 5 8 7 7 9 5 8 7 9 5 8 1 2 1 1 0 8 7 9 5 7 9 5 8 7 9 5 8 7 9 5 7 9 17 7 9 17 7 17 7 7 39 17 1 9 53 17 7 9 17 1 7 9 17 3 3 8 7 9 3 34 1 4 1 1 4 3 3 1 4 4 4 4 4 4 4 4 4 4 2 4 4 12 4 24 4 24 2 4 4 4 42 3 3 3 1 2 4 6 2 2 4 5 5 2 33 55 60 5 11 3 7 5 6 5 5 2 8 9 5 2 1 1 1 1 2 1 1 0 1 4 4 474 4 44 447 7 74 7 7 7 7 7 4 4 1 1 6 7 9 8 6 7 9 8 7 1 9 36 3 2 63 2 17 4 6 17 9 9 82 1 1 1 7 17 3 2 4 2 1 3 2 2 2 4 4 4 7 4 4 4 2 2 2 7 7 7 7 7 7 3
解:在八位十进制的计算机上,进行两次消元
108 1 2 3 第二次消元 第一次消元 9 9 9 ( A | b) 0 0.2 10 0.3 10 0.1 10 0 0.4 9 9 9 0 0 0 10 0 . 6 10 0 . 2 10

第1节 gauss消元法

第1节  gauss消元法

若系数矩阵A非奇异,即 det (A)≠0 ,则方程组有 惟一解 x =( x1, x2, …, xn )T . 根据 Gramer(克莱姆)法则,求解方程组(5.1)时, 要计算大量的行列式,所需乘法次数大约为
N=(n2-1)n!
当 n 较大时,这个计算量是惊人的。例 如,当 n= 20 时,约需乘法次数为 N=9.7×1020 如果用每秒一亿次的计算机来计算,需要三十万年时 间。可见Gramer法则不是一种实用的方法。 因此,必须构造出适合于计算机使用的线性方程组的求 解方法。
b
( 2) i
b
(1) i
l i 1b
(1) 1
, i 2,3, , n
第二步,设 a22(2)≠ 0 ,将第二列a22(2)以下各元素消成零,
即依次用
li 2
2 a i(2 ) ( 2) a 22
(i=3,4,…,n)
乘以矩阵[A(2),b(2)]的第二行再加到第i行,得到矩阵
这是与原线性方程组(5.1)等价的方程组.
(1 (1 ( ( a11) x1 a12) x 2 a11) x n b11) n (2 ( ( a 22) x 2 a 22 ) x n b22 ) n 对于等价方程组 ( n 1 ) ( n 1 ) ( n 1 ) a n 1n 1 x n 1 a n 1n x n bn 1 (n ( a nn) x n bnn )
(1 a12) (1 a 22) (1 a 32)
(1 a13) (1 a 23) (1 a 33)
( a11) n ( a 21) n ( a 31) n

( a n1) 2

( a n1) 3

数值分析-第二章-学习小结

数值分析-第二章-学习小结

第2章线性方程组的解法--------学习小结一、本章学习体会本章主要学习的是线性方程组的解法。

而我们则主要学习了高斯消去法、直接三角分解法以及迭代法三种方法。

这三种方法的优缺点以及适用范围各有不同。

高斯消去法中,我们又学习了顺序高斯消去法以及列主元素高斯消去法。

顺序高斯消去法可以得到方程组的精确解,但要求系数矩阵的主对角线元素不为零,而且该方法的数值稳定性没有保证。

但列主元素高斯消去法因为方程顺序的调整,其有较好的数值稳定性。

直接三角分解法中,我们主要学习了Doolitte分解法与Crout分解法。

其思想主要是:令系数矩阵A=UL,其中L为下三角矩阵,U是上三角矩阵,为求AX=b 的解,则引进Ly=b,Ux=y两个方程,以求X得解向量。

这种方法计算量较小,但是条件苛刻,且不具有数值稳定性。

迭代法(逐次逼近法)是从一个初始向量出发,按照一定的计算格式,构造一个向量的无穷序列,其极限才是所求问题的精确解,只经过有限次运算得不到精确解。

该方法要求迭代收敛,而且只经过有限次迭代,减少了运算次数,但是该方法无法得到方程组的精确解。

二、本章知识梳理针对解线性方程组,求解线性方程组的方法可分为两大类:直接法和迭代法,直接法(精确法):指在没有舍入误差的情况下经过有限次运算就能得到精确解。

迭代法(逐次逼近法):从一个初始向量出发,按照一定的计算格式,构造一个向量的无穷序列,其极限才是所求问题的精确解,只经过有限次运算得不到精确解。

我们以前用的是克莱姆法则,对于计算机来说,这种方法运算量比较大,因此我们学习了几种减少运算次数的方法,有高斯消去法、直接三角分解法,同时针对病态方程组,也提出了几种不同的解法。

2.1 Gauss消去法Gauss消去法由消元和回代两个过程组成,消元过程是指针对方程组的增广矩阵,做有限次初等行变化,使它系数矩阵变为上三角矩阵。

2.1.1顺序Gauss消去法消元过程:对于K=1,2,3…,n-1执行(1)如果,则算法失效,停止计算;否则转(2)(2)对于计算回代过程:综上:顺序Gauss消去法的数值稳定性是没有保证的。

数值分析

数值分析

数值分析 第一章: 误差估计绝对误差,相对误差,有效数字。

大数吃小数。

(填空)三角分解(大题)杜利脱尔分解,克洛脱分解,乔列斯基分解,平方根法,追赶法, 例 1 用最小刻度为毫米的卡尺测量直杆甲和直杆乙,分别读出长度为 ,问: 各是多少?两直杆的实际长度 在什么范围内? 例2 设 是分别由准确值 经过四舍五入而得到的近似值, 问: 各是多少?例3 下列近似值的绝对误差限都是0.005, 问:各个近似值有几位有效数字?求和时从小到大相加,可使和的误差减小。

1、下列各近似值均有四位有效数字,试指出它们的绝对误差限和相对误差限。

2、下列近似值的绝对误差限都是0.0005,试指出它们有几位有效数字。

3、在四位十进制的限制下,试选择精确度最高的算法,计算下式的值。

答案:1、0.000005,0.03712%;0.005,0.04052%;0.0005,0.04167%.2、4、2、03、1342004、 高斯消去法步骤:(1) 首先将增广阵 [ A, b ] 化为上三角阵; (2) 用三角方程组,回代求解 。

例1在四位十进制的限制下,分别用不选主元高斯消去法与列选主元高斯消去法求解下列方程组。

mm b mm a 24,312==)( ,)( ,)(,)(b a b a r r εεεεm m y m m m m x m m b b b a a a m m b a r r 5.245.23,5.3125.311%,08.2245.0)()( %,16.03125.0)()( ,5.0)()(≤≤≤≤≈==≈====εεεεεε1200.2,18.2=-=b a )( ,)( ,)(,)(b a b a r r εεεε%0024.01200.200005.0)()( %,23.018.2005.0)()( 05000.0)(,005.0)(≈==≈====b b b a a a b a r r εεεεεε41086.0,0312.0,38.1-⨯=-==c b a 200.1,341.12,01347.0-=-==c b a 00032.0,042.0,00031.1-==-=c b a 906050401013402++++⨯=u )1(41,1411---==+n n n n y ny n y y 1231231230.012 0.0100.1670.67810.8334 5.91012.132001200 4.2981x x x x x x x x x ++=⎧⎪++=⎨⎪++=⎩解:用顺序消去法的消元过程:回代后,得列选主元高斯消去法的消元过程:回代后,得杜利脱尔分解:如果方程组 Ax =b 的系数阵 A 能分解为A =LU , 其中,L 是下三角矩阵,U 是上三角矩阵.例1.3 用矩阵的杜利脱尔(Doolittle )分解解方程组解:设 比较两边系数得:3215.546,100.0,104.0x x x ===-3215.546,45.76,17.46x x x ==-=11121212221210010010n n n n nn u u u l u u A l l u ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦0.01200.0100.16700.67811.0000.8334 5.91012.1032001200 4.200981.0⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦320.01200.0100.16700.678100.1000108.01044.4101467445410179810-⎡⎤⎢⎥→⨯--⎢⎥⎢⎥--⨯-⨯⎣⎦3550.01200.0100.16700.678100.1000108.01044.4100117510654710-⎡⎤⎢⎥→⨯--⎢⎥⎢⎥-⨯-⨯⎣⎦0.01200.0100.16700.67811.0000.8334 5.91012.1032001200 4.200981.0⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦232001200 4.200981.000.45845.90911.7900.5500100.16700.6744-⎡⎤⎢⎥→⎢⎥⎢⎥⨯⎣⎦32001200 4.200981.000.4584 5.90911.79000.096090.5329⎡⎤⎢⎥→⎢⎥⎢⎥⎣⎦.201814513252321321⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡x x x LU u u u u u u l l l =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡332322131211323121111513252321⎪⎪⎪⎩⎪⎪⎪⎨⎧-=-=-=======2454132321333223223121131211u l u u l l u u u ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=2441321153121U L 于是练习: 用矩阵的杜利脱尔(Doolittle )分解 A=LU 解方程组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课题名称:课题一解线性方程组的直接方法解决的问题:给定三个不同类型的线性方程组,用适当的直接法求解。

采用的数值方法:对第一个普通的线性方程组,采用了高斯顺序消去法和高斯列主元消去法。

对第二个正定线性方程组,采用了平方根法。

对第三个三对角线性方程组,采用了追赶法。

算法程序:(1)普通的线性方程组①顺序消去法#include<stdio.h>#include<math.h>int main(void){float A[10][10]= {{4,2,-3,-1,2,1,0,0,0,0},{8,6,-5,-3,6,5,0,1,0,0},{4,2,-2,-1,3,2,-1,0,3,1},{0,-2,1,5,-1,3,-1,1,9,4},{-4,2,6,-1,6,7,-3,3,2,3},{8,6,-8,5,7,17,2,6,-3,5},{0,2,-1,3,-4,2,5,3,0,1},{16,10,-11,-9,17,34,2,-1,2,2},{4,6,2,-7,13,9,2,0,12,4},{0,0,-1,8,-3,-24,-8,6,3,-1}};float b[10]= {5,12,3,2,3,46,13,38,19,-21}; float x[10]= {0};float Aik,S,temp;int i,j,k;int size=10;for(k=0; k<size-1; k++){if(!A[k][k])return -1;for(i=k+1; i<size; i++){Aik=A[i][k]/A[k][k];for(j=k; j<size; j++){A[i][j]=A[i][j]-Aik*A[k][j]; }b[i]=b[i]-Aik*b[k];}}printf("A[]\n");for(i=0; i<size; i++){for(j=0; j<size; j++)printf("%f ",A[i][j]);printf("\n");}printf("b[]\n");for(i=0; i<size; i++)printf("%f ",b[i]);printf("\n\n");x[size-1]=b[size-1]/A[size-1][size-1]; for(k=size-2; k>=0; k--){S=b[k];for(j=k+1; j<size; j++){S=S-A[k][j]*x[j];}x[k]=S/A[k][k];}printf("x[]=\n");for(i=0; i<size; i++)printf("%f ",x[i]);return 0;}②列主元消去法#include<stdio.h>#include<math.h>int main(void){float A[10][10]= {{4,2,-3,-1,2,1,0,0,0,0}, {8,6,-5,-3,6,5,0,1,0,0},{4,2,-2,-1,3,2,-1,0,3,1},{0,-2,1,5,-1,3,-1,1,9,4},{-4,2,6,-1,6,7,-3,3,2,3},{8,6,-8,5,7,17,2,6,-3,5},{0,2,-1,3,-4,2,5,3,0,1},{16,10,-11,-9,17,34,2,-1,2,2},{4,6,2,-7,13,9,2,0,12,4},{0,0,-1,8,-3,-24,-8,6,3,-1}};float b[10]= {5,12,3,2,3,46,13,38,19,-21}; float x[10]= {0};float Aik,S,temp;int i,j,k;float max;int col;int size=10;for(k=0; k<size-1; k++){max=fabs(A[k][k]);col=k;for(i=k; i<size; i++){if(max<fabs(A[i][k])) {max=fabs(A[i][k]); col=i;}}for(j=k; j<size; j++){temp=A[col][j];A[col][j]=A[k][j];A[k][j]=temp;}temp=b[col];b[col]=b[k];b[k]=temp;if(!A[k][k])return -1;for(i=k+1; i<size; i++){Aik=A[i][k]/A[k][k]; for(j=k; j<size; j++){A[i][j]=A[i][j]-Aik*A[k][j]; }b[i]=b[i]-Aik*b[k];}}printf("A[]\n");for(i=0; i<size; i++){for(j=0; j<size; j++)printf("%f ",A[i][j]);printf("\n");}printf("b[]\n");for(i=0; i<size; i++)printf("%f ",b[i]);printf("\n\n");x[size-1]=b[size-1]/A[size-1][size-1]; for(k=size-2; k>=0; k--){S=b[k];for(j=k+1; j<size; j++){S=S-A[k][j]*x[j]; }x[k]=S/A[k][k];}printf("x[]=\n");for(i=0; i<size; i++)printf("%f ",x[i]);return 0;}(2)对称正定线性方程组平方根法:#include <stdio.h>#include <math.h>#define n 8int main(void){float A[8][8]={{4,2,-4,0,2,4,0,0},{2,2,-1,-2,1,3,2,0},{-4,-1,14,1,-8,-3,5,6},{0,-2,1,6,-1,-4,-3,3},{2,1,-8,-1,22,4,-10,-3},{4,3,-3,-4,4,11,1,-4},{0,2,5,-3,-10,1,14,2},{0,0,6,3,-3,-4,2,19}};float g[8][8]= {0};float b[8]= {0,-6,6,23,11,-22,-15,45}; float x[8]= {0};float y[8]= {0};int k,m,i,sq;for(k=0; k<n; k++){float p=0,q=0,s=0;for(m=0; m<=k-1; m++){p=p+A[k][m]*A[k][m];}g[k][k]=sqrt(A[k][k]-p);A[k][k]=g[k][k];for(i=k+1; i<n; i++){q=0;for(m=0; m<=k-1; m++){q=q+A[i][m]*A[k][m];}g[i][k]=(A[i][k]-q)/A[k][k]; A[i][k]=g[i][k];}s=0;for(m=0; m<=k-1; m++){s=s+A[k][m]*y[m];}y[k]=(b[k]-s)/A[k][k];}x[n-1]=y[n-1]/A[n-1][n-1];for(k=n-2; k>=0; k--){float sum=0;for(m=k+1; m<n; m++){sum=sum+A[m][k]*x[m];}x[k]=(y[k]-sum)/A[k][k];}for(sq=0; sq<n; sq++){printf("%f ",x[sq]);}return 0;}(3)三对角线性方程组追赶法#include <stdio.h>#include <math.h>#define n 10int main(void){float a[10]={4,4,4,4,4,4,4,4,4,4};float c[9]={-1,-1,-1,-1,-1,-1,-1,-1,-1};float d[9]={-1,-1,-1,-1,-1,-1,-1,-1,-1}; float b[10]={7,5,-13,2,6,-12,14,-4,5,-5}; float x[10]={0};float y[10]={0};float arf[10]={0};float bt[9]={0};arf[0]=a[0];int i;for(i=0;i<n-1;i++){bt[i]=c[i]/arf[i];arf[i+1]=a[i+1]-d[i+1]*bt[i];//printf("%f %f \n",bt[i],arf[i+1]); }y[0]=b[0]/arf[0];//printf("%f\n",y[0]);for(i=1;i<n;i++){y[i]=(b[i]-d[i]*y[i-1])/arf[i];}//printf("%f\n",y[1]);x[n-1]=y[n-1];for(i=n-2;i>=0;i--){x[i]=y[i]-bt[i]*x[i+1]; }for(i=0;i<n;i++)printf("%lf ",x[i]);return 0;}数值结果:(1) 普通的线性方程组①顺序消去法②列主元消去法(2) 对称正定线性方程组平方根法:(3)三对角线性方程组追赶法:对实验计算结果的讨论和分析:(1) 普通的线性方程组①顺序消去法x1~x10的绝对误差:0.000001,-0.000001,0.000001,0,0.000001,0,0.000002,0,0,0x1~x10的相对误差:0.000001,0.000001,-1,0,0.0000005,0,0.00000067,0,0,0误差很小,基本可以忽略。

高斯消去法由消元和回代两个过程组成。

消元过程就是将原增广矩阵[A,b]中矩阵A的部分约化为上三角矩阵,然后就可以进行回代过程,从最后一个方程开始,依次求出xn,xn-1一直到x1.到这里,顺序高斯消去法完成。

相关文档
最新文档