数值线性代数课程设计_代数
线性代数课程设计课程设计

线性代数课程设计一、设计背景线性代数是现代数学的一门重要学科,广泛应用于自然科学、工程技术领域以及金融和信息学等各个领域。
作为一门重要的基础课程,线性代数的课程设计对于学生成绩的提高和对相关领域的应用具有至关重要的意义。
本课程设计旨在通过实际案例演示,在线性代数相关应用场景中,提高学生对线性代数概念和方法的理解和记忆,帮助学生掌握线性代数的实际应用。
二、设计目标通过本次课程设计,希望达到以下目标:1.帮助学生深入理解和记忆线性代数概念和方法。
2.培养学生应用线性代数解决实际问题的能力。
3.提高学生的计算机编程和模拟仿真能力。
4.丰富学生的科学素养和综合能力。
三、设计内容本课程设计分为两个部分:1.线性代数基本概念和方法的讲解2.案例分析和计算机模拟实验3.1 线性代数基本概念和方法的讲解本部分主要涉及以下内容:1.向量、向量空间、线性变换等线性代数基本概念。
2.矩阵运算、矩阵求逆、矩阵特征值等线性代数基本方法。
3.矩阵分解(QR分解、LU分解等)和特殊矩阵。
4.向量函数和曲线的参数描述。
3.2 案例分析和计算机模拟实验本部分主要分为以下两个阶段:阶段一:案例分析在本阶段,我们将介绍各种不同领域的典型实际问题,并通过线性代数方法求解这些问题。
实际问题包括:1.电路分析问题2.能量传递问题3.无人机运动控制问题4.网络流问题5.金融风险分析问题通过这些实际问题的分析和解决,希望能够让学生感受到线性代数在不同领域中的重要应用。
阶段二:计算机模拟实验在本阶段,我们将使用计算机编程语言实现一些典型模拟实验,学生将在模拟实验中自己设计并运用线性代数方法解决问题,掌握计算机编程和模拟仿真的能力。
实际案例包括:1.用最小二乘法拟合非线性函数曲线2.布朗运动与随机漫步模拟3.用PCA方法进行图像处理和识别4.用SVD奇异值分解进行图像压缩和还原通过计算机模拟实验,帮助学生加深对线性代数中各种方法的理解和掌握应用方法。
江苏科技大学数值线性代数课程设计

应用Jacobi 迭代法和Gauss-Seidel 迭代法求解线性方程组数理学院 作者:耿志银(送给学弟学妹!)摘要:在面对解线性方程组的问题时,直接法虽然很方便,但直接法大多数均需对系数矩阵A 进行分解,无法保持A 的稀疏性。
但在实际应用中,我们常常得面对大型稀疏性方程的求解问题,此时,迭代法比直接法更适用。
迭代法是按照某种规则构造一个向量序列{x k },使其极限向量*x 是方程组Ax=b 的精确解。
这里主要介绍Jacobi 迭代和Gauss-Seidel 迭代。
关键词:Jacobi 迭代 Gauss-Seidel 迭代 向量序列 极限向量引言:Jacobi 迭代法和Gauss-Seidel 迭代法是两类重要的方法,他能充分利用系数矩阵的稀疏性,减少内存占用量,而且程序简单,缺点是计算量大,同时还有收敛性的问题需要讨论。
基本原理:Jacobi 迭代设有方程组AX=b ,方程形式为1nij jij a xb ==∑(i=1,2,…,n ),假设|A|≠0,且ii a ≠0(i=1,2,…,n ),从第i个方程中解出x i ,得11x ()(1,2,...,)ni i ij jj ii j ib a x i n a =≠=-=∑,写成易于迭代的形式:(1)()11x ()(1,2,...,nk k i i ij j j ii j ib a x i n a +=≠=-=∑;k=0,1,2,…)这就是Jacobi 迭代的分量形式。
令A=D-L-U ,,其中D=diag(11a ,22a ,…,nna ),L=21313212,10000n n n n a a a a a a -⎡⎤⎢⎥-⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥---⎣⎦,121312321,0000n n n n a a a a a U a ----⎡⎤⎢⎥--⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎣⎦,此时AX=b可以写成x=Bx+g,其中B=11(),D L U g D b --+=.若给定初始向量(0)(0)(0)012(,,...,)T n x x x x =,并带入x=Bx+g 的右端,就能计算出一个新的向量1x ,即10x Bx g =+;再把1x 代入x=Bx+g 的右端,又得到了一个向量2x ;依次类推有1x Bx g k k -=+,k=1,2,3,…这个就是Jacobi 迭代格式。
《线性代数》教案

《线性代数》教案一、前言1. 教学目标(1)理解线性代数的基本概念和原理;(2)掌握线性代数的基本运算方法和技巧;(3)能够应用线性代数解决实际问题。
2. 教学内容(1)线性方程组;(2)矩阵及其运算;(3)线性空间和线性变换;(4)特征值和特征向量;(5)二次型。
二、第一章:线性方程组1. 教学目标(1)理解线性方程组的定义和性质;(2)掌握线性方程组的求解方法;(3)能够应用线性方程组解决实际问题。
2. 教学内容(1)线性方程组的定义和性质;(2)线性方程组的求解方法:高斯消元法、克莱姆法则;(3)线性方程组的应用:线性规划、电路方程等。
三、第二章:矩阵及其运算1. 教学目标(1)理解矩阵的定义和性质;(2)掌握矩阵的运算方法;(3)能够应用矩阵解决实际问题。
2. 教学内容(1)矩阵的定义和性质;(2)矩阵的运算:加法、数乘、乘法;(3)矩阵的逆矩阵及其求法;(4)矩阵的应用:线性方程组、线性变换等。
四、第三章:线性空间和线性变换1. 教学目标(1)理解线性空间和线性变换的定义和性质;(2)掌握线性变换的表示方法;(3)能够应用线性变换解决实际问题。
2. 教学内容(1)线性空间的定义和性质;(2)线性变换的定义和性质;(3)线性变换的表示方法:矩阵表示、坐标表示;(4)线性变换的应用:图像处理、信号处理等。
五、第四章:特征值和特征向量1. 教学目标(1)理解特征值和特征向量的定义和性质;(2)掌握特征值和特征向量的求法;(3)能够应用特征值和特征向量解决实际问题。
2. 教学内容(1)特征值和特征向量的定义和性质;(2)特征值和特征向量的求法:幂法、矩阵对角化;(3)特征值和特征向量的应用:线性变换、振动系统等。
六、第五章:二次型1. 教学目标(1)理解二次型的定义和性质;(2)掌握二次型的标准形和规范形;(3)能够应用二次型解决实际问题。
2. 教学内容(1)二次型的定义和性质;(2)二次型的标准形和规范形:配方法、矩阵的对角化;(3)二次型的应用:最小二乘法、优化问题等。
数值线性代数课程设计高斯消去法

数值线性代数课程设计⾼斯消去法数值线性代数课程设计线性⽅程组的直接解法数理学院 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 ≤≤+。
线性代数课程设计 (2)

线性代数课程设计设计背景线性代数是一门基础的数学课程,也是许多其他理工科学科的基础。
本课程设计旨在通过实际应用,加深学生对线性代数知识的理解和运用。
设计目的1.掌握向量操作的基本技能,包括向量加减、向量点积、向量叉积等。
2.掌握矩阵操作的基本技能,包括矩阵加减、矩阵乘法、矩阵求逆等。
3.熟练掌握矩阵的各种性质和特征值的求法。
4.能够利用线性代数知识解决实际问题。
设计内容本课程设计共分为三个部分,每个部分需要学生利用线性代数知识解决一个实际问题。
第一部分问题描述:求解平面上多边形的面积。
设计要求:首先,学生需要掌握向量的定义、加减、点积和叉积等基本操作;其次,学生需要了解如何将平面上的一个多边形转化为向量的形式,然后可以通过叉积来求解该多边形的面积。
实现步骤:1.将多边形的顶点表示为向量,并将相邻的两个向量相减,得到边向量。
2.对于任意一个边向量,将它与与其相邻的两个边向量做叉积,得到一个向量,将这个向量除以2,即可得到以该边为底的梯形面积,再将所有梯形面积加起来,即可得到多边形的面积。
第二部分问题描述:求解一个由3x3矩阵表示的线性方程组的解。
设计要求:首先,学生需要掌握矩阵的定义、加减、乘法和求逆等基本操作;其次,学生需要学会如何通过将矩阵消元来解决线性方程组。
实现步骤:1.将系数矩阵和常数矩阵组成增广矩阵。
2.对增广矩阵进行初等变换,使其转化为类似于阶梯矩阵的形式,即上三角矩阵。
3.利用上三角矩阵,从最后一行开始,反向求解出线性方程组的解。
第三部分问题描述:求解一个5维向量的主成分。
设计要求:首先,学生需要掌握矩阵的定义、乘法、特征值和特征向量等基本操作;其次,学生需要学会如何通过特征值分解来求解向量的主成分。
实现步骤:1.构建5x5的矩阵,其中第i行为原数据集中第i维的值。
2.计算矩阵的协方差矩阵。
3.对协方差矩阵进行特征值分解,求出特征值和对应的特征向量。
4.将五维向量投影到特征向量上,得到它在该向量上的投影长度即为主成分。
线性代数课程设计

线性代数课程设计一、课程目标知识目标:1. 理解线性代数的基本概念,掌握矩阵、向量、线性方程组等核心知识点的定义及性质;2. 学会运用矩阵运算法则,解决实际问题中的线性方程组,并能解释其几何意义;3. 掌握线性空间、线性变换的基本理论,并能运用到实际问题中。
技能目标:1. 能够运用矩阵运算解决线性方程组问题,提高计算准确性和解题速度;2. 能够运用线性空间和线性变换的理论分析问题,培养空间想象能力和逻辑思维能力;3. 能够运用所学知识解决实际问题,提高数学建模和数学应用能力。
情感态度价值观目标:1. 培养学生对线性代数学科的兴趣,激发学习热情,形成积极向上的学习态度;2. 培养学生的团队协作精神,学会倾听、交流、合作,提高人际沟通能力;3. 培养学生严谨、勤奋、求实的科学态度,形成正确的价值观。
本课程针对高中年级学生,结合线性代数学科特点,注重理论联系实际,培养学生的数学素养和创新能力。
在教学过程中,教师需关注学生的个体差异,因材施教,确保学生能够达到上述课程目标。
通过本课程的学习,使学生能够掌握线性代数的基本知识和技能,为后续学习及相关领域的研究奠定基础。
同时,注重培养学生的情感态度价值观,使其成为具有较高综合素质的人才。
二、教学内容本章节教学内容依据课程目标,结合教材线性代数相关知识,主要包括以下部分:1. 矩阵与向量- 矩阵的定义、性质及运算规则;- 向量的线性运算、线性组合及线性相关;- 教材第一章内容。
2. 线性方程组- 高斯消元法及其应用;- 克莱姆法则及其应用;- 教材第二章内容。
3. 线性空间与线性变换- 线性空间的定义、基、维数及坐标;- 线性变换的定义、性质及矩阵表示;- 教材第三章内容。
4. 实践与应用- 利用矩阵运算解决实际问题;- 线性空间与线性变换在实际问题中的应用;- 结合教材实例及拓展案例。
教学大纲安排如下:第一周:矩阵与向量基本概念及运算规则;第二周:线性方程组的求解方法;第三周:线性空间与线性变换基本理论;第四周:实践与应用,结合实际案例分析。
数值线性代数课程设计报告

燕山大学课程设计题目:Gauss消去法及其变形方法求解线性方程组学院(系):年级专业:学号:学生姓名:指导教师:教师职称:燕山大学课程设计(论文)任务书院(系):理学院基层教学单位:信息与计算科学系年月日燕山大学课程设计评审意见表目录摘要 (2)一、问题的提出 (2)二、数学模型的建立 (3)三、计算机程序 (3)四、计算结果及分析 (5)五、参考文献 (20)六、心得体会 (20)Gauss 消去法是求解线性方程组的最基本的方法之一。
实际计算中,线性方程组的系数矩阵常常具有对称正定性,即其各阶顺序主子式及全部特征值均大于零。
矩阵的这一特性使它的三角分解也有更简单的形式,从而导出一些特殊的解法,如平方根法和改进的平方根法。
关键词:线性方程组,Gauss 消去法,平方根法,改进的平方根法,Hilbert 矩阵。
一、问题的提出1、先用你所熟悉的计算机语言将不选主元和列主元Gauss 消去法编写成通用程序,然后用你编写的程序求解下面的84阶方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛141515151576816816816816816848382321 x x x x x x最后,将你的计算结果与方程组的精确解进行比较,并就此谈谈你对Gauss 消去法的看法。
2、先用你所熟悉的计算机语言将平方根法和改进的平方根法编写成通用程序,然后用你编写的程序求解对称正定方程组b Ax =,其中 (1)b 随机地选取,系数矩阵为100阶矩阵⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛1011101110111011101110(2)系数矩阵为40阶Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为11-+=j i a ij ,向量b 的第i 个分量为∑=-+=nj i j i b 111。
3、用1中的程序求解2中的两个方程组并比较所有的计算结果,然后评论各个方法的优劣。
。
二、数学模型的建立1、Gauss 消去法:用消去法解方程组的基本思想是用逐次消去未知数的方法把原来方程组Ax=b 化为与其等价的三角方程组,而求解三角方程组就容易了。
数值线性代数课程设计资料

数值线性代数课程设计报告(2014-2015第二学期)姓名:王美玲学号:081310104任课教师:杨熙南京航空航天大学2015 年6 月18Jacobi 迭代法,Gauss-Seidel 迭代法,SOR 迭代法求解线性方程组的数值效果比较摘要:Jacobi 迭代法,Gauss-Seidel 迭代法,SOR 迭代法是三种经典的用于求解线性方程组的迭代方法,本文主要对这三种方法的数值逼近效果进行比较。
关键词:Jacobi 迭代法;Gauss-Seidel 迭代法;SOR 迭代法;线性方程组线性方程组的求解方法可归纳为直接法和迭代法。
迭代法中有三种最为经典的迭代方法,就是Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。
然而三种方法的收敛性,近似解的逼近效果有不同。
本文将对三种方法求解线性方程组的迭代效果做相应探讨。
设有线性方程组Ax=b ,A 为非奇异矩阵,求x 的近似解,三种迭代方法如下。
1. Jacobi 迭代法 算法:(1) 选取初始点 ,精度要求ep ,最大迭代次数N ,初始化迭代次数k=0。
(2) 由 Jacobi 迭代法计算公式计算点 。
(3) 相对误差err 小于等于精度要求ep 时,输出 作为方(k+1)(0) x x x(k+1)程的近似解。
(4) = ,k=k+1,转步骤(2)。
2. Gauss-Seidel 迭代法 算法:(1) 选取初始点,精度要求ep ,最大迭代次数N ,初始化迭代次数k=0。
(2) 由 Gauss-Seidel 迭代法计算公式计算点 。
(3) 相对误差err 小于等于精度要求ep 时,输出 作为方程的近似解。
(4) = ,k=k+1,转步骤(2)。
3. SOR 迭代法 算法:(1) 选取初始点,精度要求ep ,最大迭代次数N ,初始化迭代次数k=0。
(2) 由 SOR 迭代法计算公式计算点 。
(k+1) (0)(k+1)(0)x (k) x (k+1) x x x(k+1) x (k) x (k+1) x x(3) 相对误差err 小于等于精度要求ep 时,输出 作为方程的近似解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值代数》课程设计评分标准 (1)交作业的内容 (1)附录1 论文结构撰写规范 (2)附录2 (2)参考论文1 (2)参考论文2 (13)参考论文3 (16)参考论文4 (21)1. 2-3两天查资料;2. 1-2天论文构思,列出提纲;3. 2-3确定计算方法和计算程序的详细内容和设计步骤;写课程设计报告;论文内容: 问题背景介绍, 建立正确的数学模型, 求解模型的数学原理, 计算过程,编写计算程序, 解释计算结果.论文字数: 1800-2200字. 注: 字数是指正文的字数.标题、摘要、关键字、目录、图表说明、参考文献、程序等不算入字数统计.论文格式: 5号字体,A4版面, 上下左右各留2cm,单倍行距,页面设置选为无网格; 编页码;图形尺寸:长度不超过4cm.一行可以放若干张图. 文稿中数据保留3位小数点.(1)要有勤于思考、刻苦钻研的学习精神和严肃认真、一丝不苟、有错必改、精益求精的工作态度,对有抄袭他人设计论文或找他人代设计、代做论文等行为的弄虚作假者一律按不及格记成绩。
(2)要敢于创新,勇于实践,注意培养创新意识。
(3)掌握课程的基本理论和基本知识,概念清楚,设计计算正确,结构设计合理,实验数据可靠,软件程序运行良好,绘图符合标准,论文撰写规范,答辩中回答问题正确。
附录1 论文结构撰写规范(1)题目、院系、班级、学生姓名。
(2)摘要摘要是论文内容的简短陈述,一般不超过150字。
关键词应为反映论文主题内容的通用技术词汇,一般为4个左右,一定要在摘要中出现。
(3)正文正文应按目录中编排的章节依次撰写,要求计算正确,论述清楚,文字简练通顺,插图简明,书写整洁。
文中图、表及公式不能徒手绘制和书写。
(4)参考文献(资料)参考文献必须是学生在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。
各类文献的书写格式如下:a.图书类的参考文献序号作者名·书名·(版次)·出版单位,出版年:引用部分起止页码。
b.翻译图书类的参考文献序号作者名·书名·译者·(版次)出版单位,出版年:引用部分起止页码。
c.期刊类的参考文献序号作者名·文集名·期刊名·年,卷(期):引用部分起止页码。
附录2数值代数课程设计题参考论文1《数值线性代数》课程设计信息与计算科学0440501106 蔡云摘要:Gauss消去法是目前求解中小规模线性方程组(即阶数不要太高,例如不超过1000)常用的方法,它一般用于系数矩阵稠密(即矩阵的绝大多数元素都是非零的)而没有任何特殊结构的线性方程组。
选主元Gauss消去法弥补了不选主元的Gaauss消去法的不足,但是也付出了昂贵的代价。
平方根是求解对称正定线性方程组最常用的方法之一。
关键词:Gauss 消去法,选主元Gauss 消去法,平方根法正文:一,问题背景:在古代数学和近代数学数值计算和工程应用中,求解线性方程组都是重要的课题。
西方的Gauss 消元法在求解未知数多的大型线形方程组则是在20世纪中叶电子计算机问世后才成为现实。
这次实验将充分运用各种数值计算方法,及计算机的强大数值计算功能来解决所遇到的问题。
二,问题提出:1.先用你所熟悉的计算机语言讲不选主元和列主元Gauss消去法编写成通用的子程序,然后用你所编写的程序求解下面的84阶方程组最后,将你的计算结果与方程组的精确解进行比较,并就次谈谈你对Gauss 消去法的看法。
2.先用你所熟悉的计算机语言将平方根法和改进的平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组Ax=b,其中 (1)b 随机的选取,系数矩阵为100阶矩阵1011101110111011101110⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦;(2)系数矩阵为40阶Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为11i j a i j =+-,向量的第i 个分量为111ni j b i j ==+-∑。
3.用第1题的程序求解第2题的两个方程组并比较所有的计算结果,然后评论各个方法的优劣。
三,模型建立与数学原理: (1)Gauss 消去法Gauss 消去法即是把一个给定的矩阵分解为一个下三角L 和一个上三角U 的乘积。
为此我们找到了一个最简单的下三角矩阵T k k k L I l e =-.其中1,(0,,0,,,)k k k nk l l l =+即1,,1111k k kn k L l l +⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎣⎦这种类型的下三角称作Gauss 变换。
而称向量k l 为Gauss 向量。
对于一个给定的向量1(,,)T n n x x x R =∈ ,我们有111,(,,,,,)T k k k k k k n k nk L x x x x x l x x l ++=-- 只要取,1,,i ik k xl i k n x ==+ ,便有1(,,,0,,0)T k k L x x x = 。
于是将Gauss 变换作用于一个矩阵,就将对应的列向量相应项变为0。
一般的阶矩阵A,在一定条件下,我们也可以计算n-1个Gauss 变123828384617861158611586115861158614x x x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦换121n L L L - 使121n n L L L A -- 为上三角矩阵。
A LU = ,这种计算主元分解的方法称做Gauss 消去法。
LU 分解的可行性分析:若n n A R ⨯∈的顺序主子阵L 均非奇异,则存在唯一的单位下三角n nL R⨯∈和上三角阵n nU R⨯∈使得A LU =对于题1中,我们可以通过高等代数的方法计算出对于*det()A =*.det()A ≠0,也即存在唯一性。
(2) 列主元Gauss 消去法由于可能存在小主元现象,在Gauss 消去的过程除数的绝对值过小,则导致其他变量量级的巨大增长和舍入误差扩散。
因而要保持数值解得精度应避免选取绝对值过小的元素作主元。
(3) 平方根法Cholesky 分解定理:若n nA R ⨯∈对称正定,则存在一个对角元均为正数的下三角阵n nL R ⨯∈,使得TA LL =。
Cholesky 分解可用不选主元的Gauss 消去法来实现,更简单的方法是比较A=LL T 两边对应元素来计算L 的,设11212212l n n nn l l l L l l ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦比较TA L L =两边对应元素,得关系式1nij ip jpp a ll ==∑ 1j i n ≤≤≤。
经计算得11()/k ik ik ip kp kk p l a l l l -==-∑ ,1,,i k n =+这样便求出了L 的第k 列元素。
这种方法称为平方根法。
四,计算过程及敏度分析: (1)在1中对题目用高斯消去法C++编程(见附录一)后运行,结果用matlab 作图后显示可以看出,在初始分量,效果还是比较理想的逼近于x=1,到后面出现了震荡。
可见得出的解数值不太稳定。
这是由于系数矩阵的条件数κ(A)非常大,用matlab 计算(程序见附录六)可得κ(A)=cond(A)= 4.1779e+016,已经非常大,也即该线形方程组得求解问题是病态的,我们得到的数值解是不稳定的。
而应用列主元高斯消去法,当矩阵是84阶时,不能得出结果,这是因为条件数很大时矩阵接近于一个奇异矩阵,高斯消去法不一定能够进行下去。
当为30阶时,可以看出也得到了精确解(附录中只提供了84阶矩阵,相应30阶读者可以自行改动)。
(2)2中系数矩阵是严格对角占优的。
条件数κ(A)=Cond(A)=1.4997,比较小,可知此问题数值比较稳定。
由于细数矩阵严格对角的方程组Gauss-seidel 迭代收敛,所以可以应用此算法来解决(具体程序见附录)。
从计算结果的图形表示我们可以看出,此种方法达到了数值要求,比较好的收敛于线性方程的解。
应用平方根法时的程序见附录四。
由于b 是计算机随机选取的,所以得到的解是人为无法确定的,我们在这里只画出了一种解的情况下的图象(见图3)用改进的平方根法解Hilbert 矩阵的程序见附录五,相应的图形件图4。
有趣的是,当我们用平方根法解十并不会得到结果。
应着重指出,正定矩阵的TLL分解具有重要的性质,即ik l ≤L 的元素的绝对值不会变得很大,这个性质对计算方法的稳定性是非常重要的。
(3)平方根法可以免去高斯消元过程。
但是只限于对称方程组。
高斯消元法是比较经典的求解稠密线性方程组的方法。
为避免小主元,应选用高斯列主元法。
五,参考文献:[1] 徐树方等·数值线性代数·北京大学出版社·2000年;[2]张韵华,陈效群等·数值计算方法和算法·科学出版社·2002年[3] 蒋长锦·科学计算和C程序集·中国科学技术大学出版社·1998年六,附录:附录一:Gauss消去法#include<iostream.h>#include<stdlib.h>#include<math.h>#ifndef Epsilon#define Epsilon 0.00000001#endif#define DIM 84int gcplim(int process,double A[DIM][DIM],double xx[DIM]){int k,i,j;//double pelement;if(process==1)cout<<"The process of elimination:\n";for(k=0;k<DIM;k++){/*pelement=fabs(A[k][k]);i0=k;for(i=k;i<DIM;i++)if(fabs(A[i][k])>pelement){pelement=fabs(A[i][k]);i0=i;}if(i0!=k){for(j=0;j<DIM;j++){pelement=A[k][j];A[k][j]=A[i0][j];A[i0][j]=pelement;}pelement=xx[k];xx[k]=xx[i0];xx[i0]=pelement;}*/if(fabs(A[k][k])<Epsilon) return(1);for(i=k+1;i<DIM;i++){A[i][k]=A[i][k]/A[k][k];for(j=k+1;j<DIM;j++)A[i][j]=A[i][j]-A[i][k]*A[k][j];xx[i]=xx[i]-A[i][k]*xx[k];}if(process==1){for(i=0;i<DIM;i++){for(j=0;j<DIM;j++)cout<<A[i][j]<<'\t';cout<<" |"<<xx[i];cout<<endl;}cout<<endl;}}//for(i=DIM-1;i>=0;i--)//{xx[DIM-1]=xx[DIM-1]/A[DIM-1][DIM-1];for(i=DIM-2;i>=0;i--){for(j=i+1;j<DIM;j++)xx[i]=xx[i]-A[i][j]*xx[j];xx[i]=xx[i]/A[i][i];}return(0);}void main(){int i;static double A[DIM][DIM];for(i=1;i<DIM;i++){A[i][i]=6;A[i][i+1]=1;A[i][i-1]=8;}A[0][0]=6;A[0][1]=1;A[DIM-1][DIM-1]=6;A[DIM-1][DIM-2]=8;static double b[DIM];for(i=1;i<DIM-1;i++)b[i]=15;b[0]=7;b[DIM-1]=14;cout<<"Colume"<<endl;if(gcplim(1,A,b)==1){cout<<"The linear system hasn't solution!"<<endl;cout<<"Strike any key to exit!"<<endl;exit(1);}cout<<"Column principle elimination for the solution:\n";for(i=0;i<DIM;i++)cout<<b[i]<<endl;}解的图象如下所示:图表1附录二:Gauss列主元消去法#include<iostream.h>#include<stdlib.h>#include<math.h>#ifndef Epsilon#define Epsilon 0.00000001#endif#define DIM 84int gcplim(int process,double A[DIM][DIM],double xx[DIM]){int k,i,j,i0;double pelement;if(process==1)cout<<"The process of elimination:\n";for(k=0;k<DIM;k++){pelement=fabs(A[k][k]);i0=k;for(i=k;i<DIM;i++)if(fabs(A[i][k])>pelement){pelement=fabs(A[i][k]);i0=i;}if(i0!=k){for(j=0;j<DIM;j++){pelement=A[k][j];A[k][j]=A[i0][j];A[i0][j]=pelement;}pelement=xx[k];xx[k]=xx[i0];xx[i0]=pelement;}if(fabs(A[k][k])<Epsilon) return(1);for(i=k+1;i<DIM;i++){A[i][k]=A[i][k]/A[k][k];for(j=k+1;j<DIM;j++)A[i][j]=A[i][j]-A[i][k]*A[k][j];xx[i]=xx[i]-A[i][k]*xx[k];}if(process==1){for(i=0;i<DIM;i++){for(j=0;j<DIM;j++)cout<<A[i][j]<<'\t';cout<<" |"<<xx[i];cout<<endl;}cout<<endl;}}for(i=DIM-1;i>=0;i--){//xx[DIM-1]=xx[DIM-1]/A[DIM-1][DIM-1];//for(i=DIM-2;i>=0;i--)// {for(j=i+1;j<DIM;j++)xx[i]=xx[i]-A[i][j]*xx[j];xx[i]=xx[i]/A[i][i];}return(0);}void main(){int i;static double A[DIM][DIM];for(i=1;i<DIM;i++){A[i][i]=6;A[i][i+1]=1;A[i][i-1]=8;}A[0][0]=6;A[0][1]=1;A[DIM-1][DIM-1]=6;A[DIM-1][DIM-2]=8;static double b[DIM];for(i=1;i<DIM-1;i++)b[i]=15;b[0]=7;b[DIM-1]=14;cout<<"Colume"<<endl;if(gcplim(1,A,b)==1){cout<<"The linear system hasn't solution!"<<endl;cout<<"Strike any key to exit!"<<endl;exit(1);}cout<<"Column principle elimination for the solution:\n";for(i=0;i<DIM;i++)cout<<b[i]<<endl;}当DIM=84时程序最后输出结果为:The linear system hasn't solution!Strike any key to exit!Press any key to continue附录三:Gauss-seidel迭代#include<iostream.h>#include<math.h>#include<stdlib.h>#define DIM 100#define E 1E-6double f(double x[DIM],double y[DIM]){double m[DIM];for(int i=0;i<DIM;i++){m[i]=fabs(x[i]-y[i]);if(m[i]>m[0])m[0]=m[i];}return m[0];}int jacobi(double a[DIM][DIM],double b[DIM],double x[DIM]){static int first=0;int i,j,k;static double x1[DIM],norm;norm=0;if(first==0){for(i=0;i<DIM;i++){x[i]=rand();norm+=x[i]*x[i];}norm=sqrt(norm);for(i=0;i<DIM;i++)x[i]/=norm;first=1;}for(k=0;k<10000;k++){for(i=0;i<DIM;i++){x1[i]=b[i];for(j=0;j<i;j++)x1[i]-=a[i][j]*x[j];//若为Gauss-Seidel迭代,则此行变为"x1[i]-=a[i][j]*x1[j];"其他地方不变。