数值分析-Gauss消去法

合集下载

数值分析实验报告

数值分析实验报告

实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性)问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。

实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816M O O O b A ,则方程有解T x )1,,1,1(*Λ=。

取n=10计算矩阵的条件数。

让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。

每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。

若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。

重复上述实验,观察记录并分析实验结果。

思考题一:(Vadermonde 矩阵)设⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=∑∑∑∑====n i i n n i i n i i n i i n n n n n n n x x x x b x x x x x x x x x x x x A 002010022222121102001111M ΛM ΛM M M ΛΛΛ,, 其中,n k k x k ,,1,0,1.01Λ=+=,(1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化?(2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b(3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。

数值分析Gauss消去法课件

数值分析Gauss消去法课件

高斯消元法的代码实现
初始化矩阵
将系数矩阵A进行初始化,并存储在二维数 组中。
消元过程
通过一系列行变换,将系数矩阵变为上三角 矩阵。
主元选择
选择主元,即系数矩阵中所在行和列的最大 元素。
回带求解
利用上三角矩阵的元素,求解线性方程组的 解。
选主元的优化策略
1 2
自然主元
选择系数矩阵中绝对值最大的元素作为主元。
病态问题
对于一些病态问题,高斯 消元法可能无法得到准确 解,需要采用其他方法进 行求解。
01
Gauss消去法的应 用实例
应用领域与案例介绍
线性方程组求解
01
Gauss消去法是求解线性方程组的一种常用方法,适用于大ห้องสมุดไป่ตู้模
、稀疏矩阵的求解。
矩阵求逆
02
通过Gauss消去法可以计算矩阵的逆,这在许多科学计算和工程
最小二乘主元
选择使所在行和列的绝对值之和最小的元素作为 主元。
3
随机主元
随机选择一个元素作为主元,可以避免某些数值 问题。
数值稳定性与误差控制
01
02
03
数值稳定性
高斯消元法在某些情况下 可能产生数值不稳定性, 如主元接近零或数值误差 累积。
误差控制
在消元过程中,可以通过 一些技巧来控制误差,如 预处理、选主元策略和舍 入误差控制。
领域中都有应用。
特征值和特征向量计算
03
Gauss消去法可以用于计算矩阵的特征值和特征向量,这在物理
、工程和经济学等领域有广泛的应用。
实际应用中的问题与挑战
数值稳定性
Gauss消去法在处理病态问题或 接近奇异矩阵时可能会出现数值 不稳定性,导致计算结果误差较 大。

数值分析(清华大学出版社)第二章课后答案

数值分析(清华大学出版社)第二章课后答案

1.用Gauss 消去法解方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤---⎢⎢⎢⎢⎣⎡-551631011411014211264321x x x x 解:第一步:交换第三行和第一行,得到如下矩阵⎥⎥⎥⎥⎦⎤----⎢⎢⎢⎢⎣⎡-56153101111402411621做运算()22121E E E →⎪⎭⎫ ⎝⎛+-,()33161E E E →⎪⎭⎫⎝⎛+-,()()441E E E →+,得到增广矩阵 ⎥⎥⎥⎥⎦⎤------⎢⎢⎢⎢⎣⎡0249525213237414210001 第二步:再做运算()3322E E E →+,()44221E E E →⎪⎭⎫⎝⎛+-,得到如下矩阵 ⎥⎥⎥⎥⎦⎤-----⎢⎢⎢⎢⎣⎡94295292113377400210001第三步:做运算()4433713E E E →⎪⎭⎫⎝⎛+,得到 ⎥⎥⎥⎥⎦⎤------⎢⎢⎢⎢⎣⎡21342951919210377400210001利用回代公式求得.790576.0,361257.0,863874.0,115183.11234=-==-=x x x x2、解 2.51 1.48 4.531.480.93 1.302.68 3.041.48⎡⎤⎢⎥-⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.051.030.53⎡⎤⎢⎥⎢⎥⎢⎥-⎣⎦ 做两次换行()()()()↔↔3132;E E E E 得2.683.04 1.42.511.48 4.531.480.931.30⎡⎤-⎢⎥⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.051.03⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦ 计算()()()()-+→-+→1221330.93657;0.55224;E E E E E E2.683.04 1.481.3672 5.916100.748810.48269⎡⎤-⎢⎥-⎢⎥⎢⎥--⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.546381.3227⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦计算()()-+→2330.54770;E E E2.683.04 1.4801.36725.9161003.7229⎡⎤-⎢⎥-⎢⎥⎢⎥-⎣⎦123x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦=0.530.546381.0235⎡⎤-⎢⎥⎢⎥⎢⎥⎣⎦ 换行和消去到此结束,经回代计算得到x =()1.440360, 1.577963,0.27494T--3.用Doolittle 三角分解方法解方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----551631011411014211264321x x x x解:首先对系数矩阵A 做分解LUA =解出:解b y L=,计算出Ty ⎪⎭⎫ ⎝⎛--=74213,521,1,6解y x U=,计算出()T x 115183.1,863874.0,361257.0,790576.0--=4.设][,ij n n a A R A =∈⨯,011≠a ,b Ax =经过高斯消去法一步后变为)2()2(b x A =,其中=)2(A⎥⎦⎤⎢⎣⎡21110A a a T ,(2)A =()(2),2n ij i j a =为(n-1)⨯(n-1)矩阵.其元素为(2)ija =(1)ij a -(1)(1)11i j a a /(1)11a , ,i j =2,3, n. 证明:(1)若A 对称正定,则2A 是对称矩阵。

数值分析分解法

数值分析分解法

§3 LU 分解法——Gauss 消去法的变形知识预备:1矩阵的初等行变换、初等矩阵及其逆、乘积2矩阵的乘法3上三角矩阵的乘积、单位下三角矩阵的乘积 4单位下三角矩阵的逆、可逆的上三角矩阵的逆一、Gauss 消去法的矩阵解释Gauss 消去法实质上是将矩阵A 分解为两个三角矩阵相乘。

我们知道,矩阵的初等行变换实质就是左乘初等矩阵。

第一轮消元:相当于对A(1)左乘矩阵L 1,即)2()1(1A A L =其中)1(11)1(11)2()2(2)2(2)2(22)1(1)1(12)1(11)2(131211,,1001011a a l a a a a a a a Al l l L i i nn n n n n =⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=第二轮消元:对应于)3()2(2A A L =一般地1,,2,1)1()(-==+n k A A L k k k (1)其中nk k i a a l l l L k kkk ikik nk kk k ,,2,1,,10111)()(1 ++==⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--=+整个消元过程为U A A L L L L n n n 记)(1221=-- ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=nn nnu u u u u u 22211211………(2) 从而U L U L L L L U L L L L A n n n n ⋅===---------1112121111221)(其中L 是单位下三角矩阵,即,1,,1,,3,2,,1111)()(21323121⎪⎪⎭⎫⎝⎛-===⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=n j n i l l l l l l L j jj j ija a ij n n …(3) 【注】消元过程等价于A 分解成LU 的过程回代过程是解上三角方程组的过程。

二、矩阵的三角分解1、若将A 分解成L?U ,即A=L?U ,其中L 为单位下三角矩阵,U 为非奇异上三角矩阵,则称之为对A 的Doolittle 分解。

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

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

实验四:列组元消去法一、目的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消去法解线性方程组的时候,如果没有经过选主元,可能会出现数值不稳定的现象,使得方程组的解偏离精确解。

Gauss列主元消去法

Gauss列主元消去法

贵州师范大学数学与计算机科学学院学生实验报告课程名称: 数值分析 班级: 实验日期: 年 月 日 学 号: 姓名: 指导教师: 实验成绩:一、实验名称实验五:线性方程组的数值解法二、实验目的及要求1. 让学生掌握用列主元gauss 消去法、超松弛迭代法求解线性方程组.2. 培养Matlab 编程与上机调试能力.三、实验环境每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0).四、实验内容1. 编制逐次超松弛迭代(SOR 迭代)函数(子程序),并用于求解方程组⎪⎪⎩⎪⎪⎨⎧=-++=+-+=++-=+++-141414144321432143214321x x x x x x x x x x x x x x x x取初始向量T x )1,1,1,1()0(=,迭代控制条件为 5)1()(1021||||--⨯≤-k k x x 请绘制出迭代次数与松弛因子关系的函数曲线,给出最佳松弛因子.SOR 迭代的收敛速度是否一定比Gauss-Seidel 迭代快?2. 编制列主元 Gauss 消去法函数(子程序),并用于解 ⎪⎩⎪⎨⎧=++-=-+-=+-615318153312321321321x x x x x x x x x要求输出方程组的解和消元后的增广矩阵. 注:题2必须写实验报告五、算法描述及实验步骤Gauss 消去法:功能 解方程组b Ax = .输入 n ,n n ij a A ⨯=)(,T n b b b b ),,,(21 =.输出 方程组的解T n x x x x ),,,(21 =或失败信息.步1 对1,,2,1-=n k 执行步2→步4 .步2 调选列主元模块 .步3 若0=kk a ,则=x “消去法失败”,结束 .步4 对n k k i ,,2,1 ++=执行步5→步6 .步5 对n k k j ,,2,1 ++=执行ij kj kk ik ij a a a a a +⨯-⇐/ .步6 i k kk ik i b b a a b +⨯-⇐/ .步7 nn n n a b x /⇐ .步8 对1,,2,1 --=n n i 执行ii n i j j ij i i a x a b x /)(1∑+=-⇐ .步9 输出T n x x x x ),,,(21 = .选列主元模块:功能 选列主元 .输入 n k k i b n k k j i a i ij ,,1,,;,,1,,, +=+= .输出 n k k i b n k k j i a i ij ,,1,,;,,1,,, +=+= .步1 kk a m ⇐;k l ⇐ .步2 对n k k i ,,2,1 ++=执行若m a ik >则ik a m ⇐;i l ⇐ .步3 若k l ≠,则交换kj a 和lj a ,n k k j ,,1, +=;交换k b 和l b .步4 返回主模块 .六、调试过程及实验结果>> A=[12,-3,3;-18,3,-1;1,1,1];>> b=[15;-15;6];>> x=Gauss1(A,b)Ab =-18.0000 3.0000 -1.0000 -15.00000 1.1667 0.9444 5.16670 0 3.1429 9.4286 index = 1x = 1.0000 2.0000 3.0000七、总结由于数)1(-k kka 在Gauss 消去法中有着突出的作用,第k 步消元时,要用)1(-k kk a 作除数,如果)1(-k kk a =0消元会失败,即使主元)1(-k kk a ≠0,但很小时,舍入误差也会使计算结果面目全非,避免这种缺陷的基本方法就是选主元。

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

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

算法 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. 考虑方程组⎪⎪⎩⎪⎪⎨⎧-=+++=+++=+++=+++2557.03927.02786.04002.01784.04240.00643.03781.01920.03645.01550.01129.04015.03872..02246.04043.02943.03678.01234.04069.04.3214.3214.3214.321x x x x x x x x x x x x x x x x (1) 用Gauss 消去法解所给方程组(用四位小数计算);(2) 用列主元素消去法解所给方程组并且与(1)比较结果。

1. Matlab 程序>> clearA=input('输入系数矩阵A :');b=input('输入b 向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB ,所以此方程组无解.\n')returnendif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d ,所以此方程组有唯一解.\n',n) X=zeros(n,1);for p=1:n-1for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endend%把方程组系数矩阵A 化为同解的上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);end%从xn 至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行后输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-0.2603-1.73242.3280-0.44712.Matlab程序>> clearA=input('输入系数矩阵A:');b=input('输入b向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.\n')endif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d,所以此方程组有唯一解.\n',n)X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1[Y,j]=max(abs(B(p:n,p))); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endend%把方程组系数矩阵A化为同解的上三角矩阵b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);end%从xn至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行结果输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-1.7324 2.3280 -0.4471。

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

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

数值分析第一次上机实习报告——线性方程组直接解法一、问题描述设 H n = [h ij ] ∈ R n ×n 是 Hilbert 矩阵, 即11ij h i j =+- 对n = 2,3,4,…13,(a) 取11n n x R ⨯⎛⎫ ⎪=∈ ⎪ ⎪⎝⎭,及n n b H x =,用Gauss 消去法和Cholesky 分解方法来求解n n H y b =,看看误差有多大.(b) 计算条件数:2()n cond H(c) 使用某种正则化方法改善(a)中的结果.二、方法描述1. Gauss 消去法Gauss 消去法一般用于系数矩阵稠密且没有任何特殊结构的线性方程组。

设H =[h ij ],y = (y 1,y 2,…,y n )T . 首先对系数矩阵H n 进行LU 分解,对于k=1,2,…n,交替进行计算:1111),,1,,1(),1,2,,k kj kj kr rj r k ik ik ir rk r kk u h l u j k k n l a l u i k k n u -=-=⎧=-=+⎪⎪⎨⎪=-=++⎪⎩∑∑…… 由此可以得到下三角矩阵L=[l ij ]和上三角矩阵U=[u ij ]. 依次求解方程组Ly=b 和Ux=y ,111,1,2,,1(),,1,,1i i i ir r r n i i ir r r i ii y b l y i n x y u x i n n u -==+⎧=-=⎪⎪⎨⎪=-=-⎪⎩∑∑…… 即可确定最终解。

2. Cholesky 分解法对于系数矩阵对称正定的方程组n n H y b =,存在唯一的对角元素为正数的下三角矩阵L ,使得H=LL T 。

因此,首先对矩阵H n 进行Cholesky 分解,即1122111()1()j jj jj jk k j ij ij ik jk k jj l h l l h l l l -=-=⎧=-⎪⎪⎨⎪=-⎪⎩∑∑ 1,i j n =+… L 的元素求出之后,依次求解方程组Ly=b 和L T x=y ,即1111111(),2,3,i i i ik k k ii b y l y b l y i n l -=⎧=⎪⎪⎨⎪=-=⎪⎩∑… 11(),1,2,n n nn n i i ki k k i nn y x l x y l x i n n l =+⎧=⎪⎪⎨⎪=-=--⎪⎩∑…1 由此求得方程组n n H y b =的解。

数值分析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)

高斯消元法_实验报告

高斯消元法_实验报告

- - 华中科技大学数值分析实验报告系、年级研究生院2012级****类别硕士2013年5月6日实验6.1实验要求:根据教材实验6.1做出相应改编:分别使用Gauss 消元、列选主元。

全选主元的方法求解线性方程组,分别比拟三种消元方法的结果和算法的区别,并说明主元的选取在Gauss 消元的中的作用。

问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进展的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

一般来说书本上采用的列选主元的方法对其线性方程组进展求解的,则我们是否可以选择一种行列都选取主元消去的方法来减小相应的误差呢?全主元消元法和列主元消元法一样都是由高斯消元法演变而来。

只不过选取主元的*围有所加大。

全选主元相对于列选主元的更加复杂化了,因为在运算的过程中导致了元的位置发生了变化,这样我们就不得不追踪每个元的位置。

本次实验就几个问题进展了matlab 实验分析,比拟几种计算方法的优劣性。

实验内容:考虑线性方程组编制一个程序:分别能进展Gauss 消去、列选主元Gauss 消去、全选主元Gauss 消去法进展解线性方程组。

对三种算法所得到的结果进展比拟,分析三种计算方法的准确性。

具体内容:〔1〕取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。

取n=10、n=20计算矩阵的条件数。

分别编写利用matlab 编写运算程序,实现Gauss消去、列选主元消去以及全选主元消去的方法。

比拟三种计算方法的运算结果。

在列选主元的过程中分别采用每步消去过程总选取按模最小或按模尽可能小的元素作为主元或每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

数值分析3 Gauss消去法

数值分析3 Gauss消去法

§1 Gauss 消去法它是以行初等变换为基础,整理而成的计算机算法。

由它改进和变形得到的高斯选主元消去法及三角分解法,仍然是目前计算机上常用的解低阶稠密矩阵的线性方程组的有效方法。

一、 引例:解方程组:⎪⎩⎪⎨⎧-=-+-=+-=+-4336425294321321321x x x x x x x x x用Matlab 先画出空间三个平面,并找出三平面的交点clear,clf,x=[-9 –9 9 9 -9];y=[-9 9 9 –9 -9];z=5-4*x+9*y;plot3(x,y,z),hold on,grid on z=3-2*x+4*y;plot3(x,y,z) z=-4+x-y;plot3(x,y,z)A=[4 –9 2;2 –4 6;-1 1 –3];b=[5 3 –4]';x=A\b; plot3(x(1),x(2),x(3),'r*')解:方程组的增广矩阵是[]⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----=431136425294b A消元运算:[]⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--−−−→−⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----−−→−-----5.110005.055.00529475.25.225.105.055.0052942313125.025.14142r r r r r r b A回代求解:0.15,1.5/103-=-=x [],5.25.0/)15.0(55.0x 2=-⨯-=95.64/)15.025.295(x 1=⨯+⨯+=。

【注】Gauss 消元的基本思想:用初等行变换方法化一般的方程组为上三角方程组,然后求解;Gauss 消去法步骤:先消元计算,再回代求解二、Gauss 消去法设n阶线性代数方程组为Ax=b (1)其中系数矩阵A(n 阶非奇异矩阵)和右端列向量b 分别为A=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡nn n n n n a a a a a a a a a 212222111211 , b=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡n b b b 21 (一)上三角方程组的回代求解:⎪⎪⎩⎪⎪⎨⎧==++=+++n n nn n n n n b x u b x u x u b x u x u x u 2222211212111 ………………(2) 假设u ii ≠0(i=1,2,…,n ),则回代解得:⎪⎩⎪⎨⎧-==∑+=ii ni j j ij i innn n u x u b x u b x /)(/11,2,2,1 --=n n i ………………(3) (二)GAUSS消元过程:(行变换)记方程组(1)为⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++)1()1(2)1(21)1(1)1(2)1(22)1(221)1(21)1(1)1(12)1(121)1(11nn nn n n n n n n b x a xa x ab x a x a x a b x a x a x a (4)对应的增广矩阵为[]⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)1()1()1(2)1(1)1(2)1(2)1(22)1(21)1(1)1(1)1(12)1(11)1()1(,n nn n n nn b a a a b a a a b a a a bA…………………(5) 第一轮消元:若)1(11a ≠0,利用)1(11a 消下面的)1(1i a (i=2,3,…n), 消元因子:)1(11)1(11/a a l i i = (i=2,3,…n)[]⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)2()2()2(2)2(2)2(2)2(22)1(1)1(1)1(12)1(11)2()2(00,n nn n nnb a a b a a b a a a bA………………(6) 其中)1(11)1()2(j i ij ij a l a a -= n j i ,,3,2, =)1(11)1()2(b l b b i i i -= n i ,,3,2 = (7)第二轮消元:若0)2(22≠a ,用第i 行减去第二行的)2(22)2(22/a a l i i =(i=3,4,…n)倍,得到[]⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=)3()3()3(3)3(3)3(3)3(33)2(2)2(2)2(23)2(22)1(1)1(1)1(13)1(12)1(11)3()3(00000,n nnn nn nb a a b a a b a a a b a a a a b A……………(8) 其中n j i b l b b a l a a i i ij i ij ij ,,4,3,,,)2(22)2()3()2(22)2()3( =-=-= …………(9) 已进行k-1轮消元后,得[]⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=)()()()()()()2(2)2(2)2(2)2(22)1(1)1(1)1(1)1(12)1(11)()(,k n k nnk nk k k k knk kk nkn k k K b a a b a a b a a a b a a a a b A……………(10) 第k 轮消元:若)(k kk a ≠0,用第i 行元素减去第k 行元素的)()(/k kk k ik ik a a l = (i=k+1,k+2,…,n)倍,得[]⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=++++++++++++++++)1()1()1(111)1(1)1(11)()()(1)()2(2)2(2)2(12)2(2)2(22)1(1)1(1)1(11)1(1)1(12)1(11)1()1(,k n k nnk nk k k k nk k k k k k kn knk kk k kknk kn k kk K b a a b a a b a a a b a a a a b a a a a a b A…(11) 其中⎪⎩⎪⎨⎧-=-=++,)()()1()()()1(k k ik k i k ik kjik k ij k ij b l b b a l a a ,,,1,n k j i += (12)最后,得[]⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)()()2(2)2(2)2(22)1(1)1(1)1(12)1(11)()(,n n n nnnnn n b a b a a b a a a bA消元过程:[][][][])()()()()2()2()1()1(,,,,n n k k b A b A b A b A−→−−→−−→−−→−−→− (三)算法公式消元公式:对k=1,2,…,n-1若)(k kk a ≠0 )()(/k kk k ik ik a a l =⎪⎩⎪⎨⎧-=-=++,)()()1()()()1(k k ik k i k ik kj ik k ij k ij b l b b a l a a ,,,1,n k j i +=回代公式:)(n nn a ≠0⎪⎩⎪⎨⎧-==∑+=)(1)()()()(/)(/i ii n i j j i ij i i in nn n n n a x a b x a b x1,2,2,1 --=n n i三、GAUSS 消去法得以实现的前提(可行性分析)1、0a )()2(22(1)11≠n nn a a 或 2、,0,,0,,0,02122221112112221121111≠≠=≠≠A a a a aa a a a a D a a a a a kkk k k kk (13)这是因为:⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡→⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡)()2(2)2(22)1(1)1(12)1(11212222111211k kk n k kk k k k k a a a a a a a a a a a a a a a 行变换 k i a D n k i ii k ,,2,1,0,0,,,2,1)( =≠≠=则有若令【如】对称正定矩阵、严格对角占优矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡632351214 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-103131021310四、Gauss 消去法的运算量消元过程乘法:[])1(31)()1(211-=-⨯+-∑-=n n k n k n n k 除法:)1(2)(11-=-∑-=n nk n n k 回代过程乘除法总运算量:),1(221+=+++n nnGauss 消去法的总运算量为:3)3(31)1(2)1(2)1(313232n n n n n n n n n n ≈-+=++-+- 对比克莱姆法则的总运算量为(n+1)!【注】对比:当n=10时,克莱姆法则(n+1)!=39916800,而Gauss 消去法,运算430次五、算法及例子步1,定义数组A,B,x ; 步2,输入A,B,Eps ;步3,对k=1到n-1进行消元:⎪⎩⎪⎨⎧++=-⇐>-⇐n k k j i a b a b b Eps a a a a a a kkk ik i i kk kk kj ik ij ij ,,2,1,/,,/ 步4,nn n n a b x /=;对i=n-1到1回代解ij ni j j iji i a x ab x /)(1∑+=-=步5,输出n i x i ,,2,1, =; 步6,结束。

数值分析实验(Gauss消元法)

数值分析实验(Gauss消元法)
return;
end
%这里采用增广矩阵行变换的方式求解
c=n+1;
A(:,c)=b;
%%消元过程
for k=1:n-1
A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c);
end
%%回代结果
x=zeros(length(b),1);
x(n)=A(n,c)/A(n,n);
教师签名
年月日
重庆大学
学生实验报告
实验课程名称数值计算
开课实验室DS1421
学院2009年级土木专业班11班
学生姓名周波学号********
开课时间2010至2011学年第一学期
总成绩
教师签名
课程
名称
数值计算
实验项目
名称
Gauss消元法
实验项目类型
验证
演示
综合
设计
其他
指导
教师
何光辉
成绩

实验目的、实验原理
通过高斯消元法的实践环节,达到加深对高斯消元法理解和培养学生程序设计能力的目的。
在Matlab命令窗口中输入Gauss得出结果如下:
>> Gauss
x=
2.0000
1.0000
-1.0000
实验中遇到的问题及解决办法
消元过程要求a(ii)≠0,(i=1,2,…,n-1),回代过程则进一步要求a(nn)≠0。
Matlab求解线性方程的几种命令如下(方程组的一般形式可用矩阵和向量表示成: ,但运用下列方法的前提必须保证所求解的方程为恰定方程,即方程组存在唯一的一组解) :
运用求逆思想 : 或 ;

数值分析实验作业,gauss消去法的数值稳定性分析

数值分析实验作业,gauss消去法的数值稳定性分析

实验3.1 Gauss 消去法的数值稳定性试验实验目的:观察和理解Gauss 消元过程中出现小主元(即)(k kka 很小)时引起的方程组解的数值不稳定性。

实验内容:求解方程组b Ax =,其中(1)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⨯=11212592.1121-130.6-291.51314.59103.015-1A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2178.4617.591b ; (2)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=2010151526990999999999.23107102A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=15019000000000.582b .实验要求:(1) 计算矩阵的条件数,判断系数矩阵是良态的还是病态的。

(2) 用Gauss 列主元消去法求得L 和U 及解向量421,R x x ∈.(3) 用不选主元的Gauss 消去法求得L ~和U ~及解向量421~,~R x x ∈.(4) 观察小主元并分析其对计算结果的影响.程序如下:计算矩阵条件数及Gauss 列主元消去法:format longengA1=[0.3e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; b1=[59.17;46.78;1;2]; n=4;k2=cond(A1) %k2为矩阵的条件数;for k=1:n-1a=max(abs(A1(k:n,k))); [p,k]=find(A1==a); B=A1(k,:);c=b1(k);A1(k,:)=A1(p,:);b1(k)=b1(p); A1(p,:)=B;b1(p)=c; if A1(k,k)~=0A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n); else break end endL1=tril(A1,0); for i=1:n L1(i,i)=1; end L=L1U=triu(A1,0) for j=1:n-1b1(j)=b1(j)/L(j,j);b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j); endb1(n)=b1(n)/L(n,n); for j=n:-1:2b1(j)=b1(j)/U(j,j);b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j); endb1(1)=b1(1)/U(1,1); x1=b1运行结果如下: K2=68.43;⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---⨯=-14929.00202.00893.0011755.04724.00011079.2600118L⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=801.0000231.1835.2001314.5902592.11U 1x =[18.9882;3.3378;-34.747;-33.9865] 不选主元的Gauss 消去法程序:clearformat longengA1=[0.3e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; b1=[59.17;46.78;1;2]; n=4;for k=1:n-1A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n); endL1=tril(A1,0); for i=1:n L1(i,i)=1; end L=L1U=triu(A1,0) for j=1:n-1b1(j)=b1(j)/L(j,j);b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j); endb1(n)=b1(n)/L(n,n); for j=n:-1:2b1(j)=b1(j)/U(j,j);b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j); endb1(1)=b1(1)/U(1,1); x1=b1程序运行结果如下:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯⨯=10189.010333.3011168.21033.3700110637.170001~151515L⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯-⨯-⨯-⨯=-5.000816010637.171091.5210043.101314.59103.0~15151815U ]0;0;0005.1;6848.23[~1=x同理可得2A 对应的系数矩阵条件数及Gauss 列主元消去法求解结果: K2=8.994;⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-⨯=1333.04.0001104.0-3.0-0015.0000112-L ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=36667.300030.26005.155.2010710U ]0.1;;0.1;0.1;10444.0[152-⨯=-x不选主元的Gauss 消去法结果:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯=1400.0109999.0-001104998.2-5.00013.0-0001~1212L ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯⨯--=-3667.3000107495.5109987.14003.26100.1010710~121212U ]000145.1;99994.0;000.1;1045.1[~52-⨯-=-x实验4.5 三次样条插值函数的收敛性问题提出:多项式插值不一定收敛的,即插值的节点多,效果不一定就好。

数值分析实验报告

数值分析实验报告

实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。

实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。

取n=10计算矩阵的条件数。

让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。

每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。

若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。

重复上述实验,观察记录并分析实验结果。

思考题一:(Vadermonde 矩阵)设⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=∑∑∑∑====n i i n n i i ni i n i i n n n n n n nx x x x b x x x x x x x x x x x x A 002010022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=,(1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化?(2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b(3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。

数值分析5-2(高斯消去法)

数值分析5-2(高斯消去法)

M M ... (3) xn bn (3) ann

( 1 0 ... 0 x1 b1n) 0 1 ... 0 x b(n) • 2 = 2 O M M 0 0 ... 1 x (n) n bn
高斯-约当消去法的应用 高斯 约当消去法的应用
1.同时求解系数矩阵相同的多个方程组 同时求解系数矩阵相同的多个方程组 用高斯-约当消去法求解两个方程 例 用高斯 约当消去法求解两个方程 组 AX=b1 和AX=b2 ,其中
3 4 6 2 4 5 A= 1 2 3
3 b1 = 4 1
(1 a11) ≠ 0
第一次 消元
(2 a22) ≠ 0
(2 (2 ( 1 a12) ... a1n) x1 b12) b(2) (2) (2) 0 a22 ... a2n x2 2 • = ... M M (2) (2) (2) 0 an2 ... ann xn bn
1 1 1 A = 0 4 − 1 2 − 2 1 1 0 0 1 1 1 ∆ = 0 1 0 • 0 4 − 1 = LU ห้องสมุดไป่ตู้ 2 − 1 1 0 0 − 2
则求解原方程组可转化为如下两个三角形方 程组: 程组:
第五章 解线性方程组的直接法 §2 高斯消去法
一、高斯消去法 二、矩阵的三角分解 三、高斯消去法的计算量 四、高斯—约当消去法 高斯 约当消去法
一、高斯消去法
1. 高斯消去法的基本思想 举例 用消去法解方程组
基本思想:用逐次消去未知数的方法把 x1 + x2 + x3 = 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析上机报告
1. 考虑方程组
⎪⎪⎩⎪⎪⎨⎧-=+++=+++=+++=+++2557
.03927.02786.04002.01784.04240.00643.03781
.01920.03645.01550.01129.04015.03872..02246.04043.02943.03678.01234.04069.04.3214.3214.3214.321x x x x x x x x x x x x x x x x (1) 用Gauss 消去法解所给方程组(用四位小数计算);
(2) 用列主元素消去法解所给方程组并且与(1)比较结果。

1. Matlab 程序
>> clear
A=input('输入系数矩阵A :');
b=input('输入b 向量(按行向量):');
B=[A b'];
n=length(b);
RA=rank(A);
RB=rank(B);
zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB ,所以此方程组无解.\n')
return
end
if RA==RB
if RA==n
fprintf('请注意:因为RA=RB=%d ,所以此方程组有唯一解.\n',n) X=zeros(n,1);
for p=1:n-1
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end
%把方程组系数矩阵A 化为同解的上三角矩阵
b=B(1:n,n+1);
A=B(1:n,1:n);
X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
%从xn 至x1逐个求解上三角方程组
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
return
end
end
disp('方程组的解为:');
X
运行后
输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]
输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]
请注意:因为RA=RB=4,所以此方程组有唯一解.
方程组的解为:
X =
-0.2603
-1.7324
2.3280
-0.4471
2.Matlab程序
>> clear
A=input('输入系数矩阵A:');
b=input('输入b向量(按行向量):');
B=[A b'];
n=length(b);
RA=rank(A);
RB=rank(B);
zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB,所以此方程组无解.\n')
end
if RA==RB
if RA==n
fprintf('请注意:因为RA=RB=%d,所以此方程组有唯一解.\n',n)
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
[Y,j]=max(abs(B(p:n,p))); C=B(p,:);
B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end
%把方程组系数矩阵A化为同解的上三角矩阵
b=B(1:n,n+1);
A=B(1:n,1:n);
X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
%从xn至x1逐个求解上三角方程组
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
return
end
end
disp('方程组的解为:');
X
运行结果
输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]
输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]
请注意:因为RA=RB=4,所以此方程组有唯一解.
方程组的解为:
X =
-1.7324 2.3280 -0.4471。

相关文档
最新文档