线性代数方程组数值解法及MATLAB实现综述

合集下载

(完整word版)线性方程组的直接解法及matlab的实现

(完整word版)线性方程组的直接解法及matlab的实现

本科毕业论文(2010 届)题目线性方程组的直接解法及matlab的实现学院数学与信息工程学院专业数学与应用数学班级2006级数学1 班学号0604010127学生姓名胡婷婷指导教师王洁完成日期2010年5月摘要随着科技技术的发展及人类对自然界的不断探索模拟。

在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!本文的主要内容是对线性方程组求解方法的探讨,主要介绍了四种求解线性方程组的方法,第一种是教科书上常见的消元法,我们称之为基本法。

第二种方法是标准上三角形求解法,即将增广矩阵经过初等变换后化成标准上三角形,然后求解.它改进了一般教科书上的常见方法,与常见方法比较有如下优点:1)规范了自由未知量的选取;2)只用矩阵运算;3)减少了计算量.第三种方法是对特定的方程组(系数矩阵A为n阶对称正定矩阵,且A的顺序主子式均不为零。

)的求解方法进行描述,并且为这种线性方程的求解提供了固定的公式化的方法。

第四种方法是对现在实际问题中常常会遇到的系数矩阵为三对角矩阵的方程组的求解方法。

同时给出这几种方法的数值解法(matlab程序),由于运用电脑软件求解,所以必须考虑计算方法的时间、空间上的效率以及算法的数值稳定性问题,所以针对不同类型的线性方程组有不同的解法.但是,基本的方法可以归结为两大类,即直接法和迭代法.关键词高斯消去法;三角分解法;乔莱斯基分解法;追赶法AbstractSystems of linear equations are associated with many problems in engineering and scinence ,as well as with applications of mathematics to the social sciences and the quantitative study of business and economic problems.The main content of this article is the method for solving linear equations,we introduce four methods for solving linear equations in this paper。

解线性代数方程组迭代法的MATLAB GUI设计[文献综述]

解线性代数方程组迭代法的MATLAB GUI设计[文献综述]

毕业论文文献综述信息与计算科学解线性代数方程组迭代法的MATLAB GUI设计一、前言部分MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

图形用户界面(Graphical User Interfaces ,GUI)则是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。

用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。

GUI是向别人提供应用程序,进行某种技术、方法的演示,制作一个供反复使用且操作简单的专用工具的最好的选择之一[1]。

我们似乎都碰到过这样的问题,为了求得某个线性方程组的解而花费大量的时间和计算量,还容易出错,而应用迭代法求解线性代数方程组的解则可以解决这个问题。

一个收敛的迭代法不仅具有程序设计简单,适于自动计算的优点,而且较直接法而言用更少的计算量就可以获得满意的解。

因此迭代法是求解线性代数方程组,尤其是求解具有大型系数矩阵的线性方程组的主要方法之一。

而MATLAB的计算能力和MATLAB GUI的图形显示功能就能给研究特别是形象表示线性方程组的解带来了很大的方便。

二、主题部分2.1 MATLAB软件介绍2.1.1 MATLAB软件概况MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。

1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。

数值分析中求解线性方程组的MATLAB程序(6种)

数值分析中求解线性方程组的MATLAB程序(6种)

数值分析中求解线性方程组的MATLAB程序(6种)1.回溯法(系数矩阵为上三角)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N-1[Y,j]=max(abs(Aug(p:N,p)));C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)==0'A was singular.No unique solution.'break;endfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));2.系数矩阵为下三角function x=matrix_down(A,b)%求解系数矩阵是下三角的方程组n=length(b);x=zeros(n,1);x(1)=b(1)/A(1,1);for k=2:1:nx(k)=(b(k)-A(k,1:k-1)*x(1:k-1))/A(k,k);end3.普通系数矩阵(先化为上三角,在用回溯法)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N-1[Y,j]=max(abs(Aug(p:N,p)));C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)==0'A was singular.No unique solution.'break;endfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));4.三角分解法function [X,L,U]=LU_matrix(A,B)%A是非奇异矩阵%AX=B化为LUX=B,L为下三角,U为上三角%程序中并没有真正解出L和U,全部存放在A中[N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);R=1:N;for p=1:N-1[max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=R(p);R(p)=R(j+p-1);R(j+p-1)=d;if A(p,p)==0'A is singular.No unique solution'break;endfor k=p+1:Nmult=A(k,p)/A(p,p);A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N);endendY(1)=B(R(1));for k=2:NY(k)=B(R(k))-A(k,1:k-1)*Y(1:k-1);endX(N)=Y(N)/A(N,N);for k=N-1:-1:1X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);endL=tril(A,-1)+eye(N)U=triu(A)5.雅克比迭代法function X=jacobi(A,B,P,delta,max1);%雅克比迭代求解方程组N=length(B);for k=1:max1for j=1:NX(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);enderr=abs(norm(X'-P));relerr=err/(norm(X)+eps);P=X';if (err<delta)|(relerr<delta)breakendendX=X';k6.盖斯迭代法function X=gseid(A,B,P,delta,max1);%盖斯算法,求解赋初值的微分方程N=length(B);for k=1:max1for j=1:Nif j==1X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);elseif j==NX(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);elseX(j)=(B(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*P(j+1:N))/A(j,j);endenderr=abs(norm(X'-P));relerr=err/(norm(X)+eps);P=X';if (err<delta)|(relerr<delta)break;endendX=X';k。

实验5_线性代数方程组的数值解法

实验5_线性代数方程组的数值解法

实验5 线性代数方程组的数值解法化工系 毕啸天 2010011811【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。

【实验内容】题目3已知方程组Ax=b ,其中A ,定义为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------=32/14/12/132/14/14/12/132/14/14/12/132/14/12/13A试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。

实验要求:(1)选取不同的初始向量x (0)和不同的方程组右端项向量b ,给定迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b 和初始向量x (0),将A 的主对角线元素成倍增长若干次,非主对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足 ,比较收敛速度,分析现象并得出你的结论。

3.1 模型分析选取初始向量x(0) =(1,1,…,1)T ,b=(1,1,…,1)T ,迭代要求为误差满足 ,编写雅各比、高斯-赛德尔迭代法的函数,迭代求解。

3.2 程序代码function x = Jacobi( x0,A,b,m ) D=diag(diag(A)); U=-triu(A,1); L=-tril(A,-1); B1=D\(L+U); f1=D\b; x(:,1)=x0;x(:,2)=B1*x(:,1)+f1; k=1;while norm((x(:,k+1)-x(:,k)),inf)>m x(:,k+2)=B1*x(:,k+1)+f1; k=k+1; endendfunction x = Gauss( x0,A,b,m )D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B2=(D-L)\U;f2=(D-L)\b;x(:,1)=x0;x(:,2)=B2*x(:,1)+f2;k=1;while norm((x(:,k+1)-x(:,k)),inf)>mx(:,k+2)=B2*x(:,k+1)+f2;k=k+1;endendA1=3.*eye(20,20);A2=sparse(1:19,2:20,-1/2,20,20);A3=sparse(1:18,3:20,-1/4,20,20);AA=A1+A2+A3+A2'+A3';A=full(AA);b=ones(20,1); %输入自选右端项向量b x0=ones(20,1); %输入自选初始向量x0 m=1e-5;x1=Jacob(x0,A,b,m);x2=Gauss(x0,A,b,m);结果输出数据:3.3.1将x0各分量初值置为0【分析】从数据中可以看出,当迭代的初值变化了,达到相同精度所需要的迭代次数也变化了。

线性方程组的直接解法及matlab的实现

线性方程组的直接解法及matlab的实现

本科毕业论文( 2010 届)题目线性方程组的直接解法及matlab的实现学院数学与信息工程学院专业数学与应用数学班级2006级数学1 班学号**********学生姓名胡婷婷指导教师王洁完成日期2010年5月摘要随着科技技术的发展及人类对自然界的不断探索模拟.在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!本文的主要内容是对线性方程组求解方法的探讨,主要介绍了四种求解线性方程组的方法,第一种是教科书上常见的消元法,我们称之为基本法.第二种方法是标准上三角形求解法,即将增广矩阵经过初等变换后化成标准上三角形,然后求解.它改进了一般教科书上的常见方法,与常见方法比较有如下优点:1)规范了自由未知量的选取;2)只用矩阵运算;3)减少了计算量.第三种方法是对特定的方程组(系数矩阵A为n阶对称正定矩阵,且A的顺序主子式均不为零.)的求解方法进行描述,并且为这种线性方程的求解提供了固定的公式化的方法.第四种方法是对现在实际问题中常常会遇到的系数矩阵为三对角矩阵的方程组的求解方法.同时给出这几种方法的数值解法(matlab程序),由于运用电脑软件求解,所以必须考虑计算方法的时间、空间上的效率以及算法的数值稳定性问题,所以针对不同类型的线性方程组有不同的解法.但是,基本的方法可以归结为两大类,即直接法和迭代法.关键词高斯消去法;三角分解法;乔莱斯基分解法;追赶法AbstractSystems of linear equations are associated with many problems in engineering and scinence ,as well as with applications of mathematics to the social sciences and the quantitative study of business and economic problems.The main content of this article is the method for solving linear equations, we introduce four methods for solving linear equations in this paper. The first is the elimination method which is commonly found in textbooks, and we call the Basic Law. The second method is Standard on the triangle Solution, that first change Augmented matrix into standards in primary triangle, and then solving. It improves the general textbook on common methods, compared with the common method has the following advantages:1) Specification of the free choice of unknowns; 2)Only matrix operations;3) Reduce the computation. The third method describes a way to solve a Specific equations(N coefficient matrix A is symmetric positive definite matrix, and A are not zero-order principal minor), And for this linear equation provides a fixed formulaic approach. The fourth method is to present practical problems often encountered in the coefficient matrix is tridiagonal matrix method for solving the equations. These methods are given numerical solution of (matlab program), As the use of computer software to solve, it is necessary to consider ways of computing time and space efficiency and numerical stability of algorithms, Therefore, different types of linear equations have a different solution. However, the basic method can be classified into two categories, namely direct methods and iterative methods.Key wordsGaussian elimination; Triangular decomposition; Cholesky decomposition method;Thomas algorithm目录1. 引言 (1)2.相关知识 (2)2.1 向量和矩阵 (2)2.2 特殊矩阵 (3)3.问题叙述 (3)4.问题分析 (4)4.1高斯分解法 (4)4.2三角分解法 (6)4.3乔莱斯基分解法 (6)4.4追赶法 (7)5. 举例说明与总结 (9)5.1举例说明 (9)5.1.1高斯分解的matlab程序方法 (9)5.1.2三角分解法的matlab程序方法 (10)5.1.3乔莱斯基分解法的matlab程序方法 (11)5.1.4追赶法的matlab程序方法 (13)5.2总结 (14)参考文献 (16)谢辞 (17)线性方程组的直接解法及matlab的实现Direct solution of linear equations and matlab implementation数学与信息工程学院数学与应用数学专业胡婷婷指导教师:王洁1.引言随着科技技术的发展及人类对自然界的不断探索模拟.在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!例如电学中的网络问题,用最小二乘法求实验数据拟合问题(如大地测量数据处理),解非线性方程组问题,用差分法或有限元法解常微分方程、偏微分方程边值问题等最终都归结于解线性代数方程组.从实际数据来看,这些方程组的系数矩阵大致分为两种,一种是低阶稠密矩阵(阶数不超过150).另一种是大型稀疏矩阵(矩阵阶数高且零元素较多).所以,现在我们需要对求线性方程组的方法进行探究,以便能够找到一些简便的方法来加以应用!本文主要就线性方程组的直接解法予以讨论.线性方程组是线性代数的主要内容,包括线性方程组有解性的判定、消元法解线性方程组和线性方程组解的结构. 它与矩阵、向量的内容密切相关,与矩阵、向量组相关的许多重要结论都是线性方程组有关结论的应用和推广. 如:一个向量是否可以由一个向量组线性表示、表示形式是否唯一往往与非齐次线性方程组是否有解、有唯一解还是无穷多解是等价的;一个向量组是否线性相关与齐次线性方程组是否有非零解是等价的等等.而且随着现代工业的发展,线性方程组的应用出现在各个领域,伴随着大量方程和多未知数的出现, 例如电学中的网络问题,用最小二乘法求实验数据拟合问题(如大地测量数据处理),解非线性方程组问题,用差分法或有限元法解常微分方程、偏微分方程边值问题等最终都归结于解线性代数方程组。

实验五(线性方程组的数值解法和非线性方程求解)

实验五(线性方程组的数值解法和非线性方程求解)

1大学数学实验 实验报告 | 2014/4/5一、 实验目的1、学习用Matlab 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2、通过实例学习用线性代数方程组解决简化问题。

二、 实验内容项目一:种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应维持不变。

种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。

种群年龄记作k=1,2,…,n ,当年年龄k 的种群数量记作x k ,繁殖率记作b k (每个雌性个体1年的繁殖的数量),自然存活率记作s k (s k =1−d k ,d k 为1年的死亡率),收获量记作ℎk ,则来年年龄k 的种群数量x ̌k 应该为x ̌k =∑b k n k=1x k , x ̌k+1=s k x k −ℎk , (k=1,2,…,n -1)。

要求各个年龄的种群数量每年维持不变就是要求使得x ̌k =x k , (k=1,2,…,n -1).(1) 如果b k , s k 已知,给定收获量ℎk ,建立求各个年龄的稳定种群数量x k 的模型(用矩阵、向量表示).(2) 设n =5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如要求ℎ1~ℎ5为500,400,200,100,100,求x 1~x 5.(3) 要使ℎ1~ℎ5均为500,如何达到?问题分析:该问题属于简单的种群数量增长模型,在一定的条件(存活率,繁殖率等)下为使各年龄阶段的种群数量保持不变,各个年龄段的种群数量将会满足一定的要求,只要找到种群数量与各个参量之间的关系,建立起种群数量恒定的方程就可以求解出各年龄阶段的种群数量。

模型建立:根据题目中的信息,令x ̌k =x k ,得到方程组如下:{x ̌1=∑b k nk=1x k =x 1x ̌k+1=s k x k −ℎk =x k+1整理得到:{−x 1∑b k nk=1x k =0−x k+1+s k x k =ℎk2 大学数学实验 实验报告 | 2014/4/52写成系数矩阵的形式如下:A =[b 1−1b 2b 3s 1−100s 2−1…b n−1b n0000⋮⋱⋮000000000⋯00−10s n−1−1]令h =[0, ℎ1,ℎ2,ℎ3,…,ℎn−2,ℎn−1]Tx =[x n , x n−1,…,x 1]T则方程组化为矩阵形式:Ax =h ,即为所求模型。

MatLab解线性方程组

MatLab解线性方程组

MatLab解线性方程组MatLab解线性方程组当齐次线性方程AX=0,rank(A)=r<n时,该方程有无穷多个解,怎样用matlab求它的一个基本解呢?< p="">用matlab 中的命令 x=null(A, r )即可.其中:r=rank(A)A=[ 1 1 1 1 -3 -1 11 0 0 0 1 1 0-2 0 0 -1 0 -1 -2]用matlab 求解程序为:A=[1 1 1 1 -3 -1 1;1 0 0 0 1 1 0;-2 0 0 -1 0 -1 -2];r=rank(A);y=null(A, r )得到解为:y=[ 0 -1 -1 0-1 2 1 11 0 0 00 2 1 -20 1 0 00 0 1 00 0 0 1]其列向量为Ay=0的一个基本解一:基本概念1.N级行列式A:|A|等于所有取自不同行不同列的n个元素的积的代数和。

2.矩阵B:矩阵的概念是很直观的,可以说是一张表。

3.线性无关:一向量组(a ,a ,…. a )不线性相关,即没有不全为零的数k ,k ,……kn 使得:k1* a +k2* a +…..+kn*an=04. 秩:向量组的极在线性无关组所含向量的个数称为这个向量组的秩。

5.矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。

记:R(B)6.一般线性方程组是指形式: (1)其中x1,x2,…….xn为n个未知数,s为方程个数。

记:A*X=b7.性方程组的增广矩阵: =8. A*X=0 (2)二:基本理论三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;3互换两个方程的位置。

以上称初等变换。

消元法(理论上分析解的情况,一切矩阵计算的基础)首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解;否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数r等于未知量的个数,那么方程组有唯一的解,3:如果阶梯形方程组中方程的个数r小于是未知量的个数,那么方程组就有无穷个解。

基于MATLAB的线性方程组数值算法实现

基于MATLAB的线性方程组数值算法实现

基于MATLAB 的线性方程组数值算法实现摘要:MATLAB 图形用户界面(GUI )编程技术是当今计算机数值计算的重大成就之一,它在软件编程上具有着友好性、直观性、易懂性的优点而被广泛应用。

本文主要介绍图形用户界面在求解线性方程组中的应用,同时介绍了求解大型线性方程组的主要迭代算法。

首先,对一些经典迭代法(Jacobi 方法、Gauss- Seidel 方法)进行了详细的讨论,并从理论上给出了迭代公式。

最后通过用MATLAB 图形用户界面(GUI )编程对求解线性方程组的设计一个用户与计算机直接交互界面,实现简单的求解线性方程组的应用软件。

关键字:图形用户界面;线性方程组;直接求解法;迭代法一、 引言MATLAB 以强大的科学计算与可视化功能、简单易用、开放式可扩展环境,成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。

MATLAB 的附带功能图形用户界面(GUI )更具有友好性、直观性、易懂性的优点而被广泛应用[1]。

与此同时, 数值计算软件的发展与成熟,在强调数值计算方法的原理、思想和基本理论的同时, 适当淡化了算法的细节和繁杂的理论证明,并在一个通用的软件平台上开展。

而在当今社会中,线性方程组被广泛应用,如一个实际问题中归纳出来的数学模型中出现的函数、方程或不等式都是线性的。

线性模型在社会经济中的数据计算、信息处理、均衡生产、减少消耗、增加产出等方面有着广泛的应用,是我们改善企业生产管理、提高经济的有效工具。

由于线性方程组在各学科的广泛应用,其重要性是显而易见的,有必要对线性方程组的求解进行讨论.但随着社会的发展,线性模型即线性方程组的求解也越来越复杂,针对解线性方程组有几种很好的经典算法,如Jacobi 迭代法、Guass-Seidel 迭代法和SOR 迭代法等。

本文根据人们需要方便快捷,通俗易懂的原则,设计了一个求解线性方程组的软件应用界面,在GUI 上实现解线性方程组的直接法、Jacobi 迭代法、Guass-Seidel 迭代法。

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

线性代数方程组数值解法及MATLAB实现综述廖淑芳20122090 数计学院12计算机科学与技术1班(职教本科)一、分析课题随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。

其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。

因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。

关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。

直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。

直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。

迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。

迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。

迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。

迭代法包括Jacobi法SOR法、SSOR法等多种方法。

二、研究课题-线性代数方程组数值解法一、直接法1、Gauss消元法通过一系列的加减消元运算,也就是代数中的加减消去法,以使A对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x向量。

1.1消元过程1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。

11121121222212n n n n nnn a a a b a a a b a a a b ⎛⎫⎪ ⎪ ⎪⎪⎝⎭(1)(1)(1)(1)(1)11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()00000n n nn n nnn a a a a b a a a b a a b a b ⎛⎫ ⎪⎪ ⎪ ⎪ ⎪⎪⎝⎭步骤如下:第一步:1111,2,,i a i i n a -⨯+=第行第行11121121222212n n n n nnn a a a b a a a b a a a b ⎛⎫⎪ ⎪ ⎪⎪⎝⎭111211(2)(2)(2)2222(2)(2)(2)200nnn nnn a a a b a a b a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭第二步:(2)2(2)222,3,,i a i i n a -⨯+=第行第行 111211(2)(2)(2)2222(2)(2)(2)200n nn nnn a a a b a a b a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭11121311(2)(2)(2)(2)222322(3)(3)(3)3333(3)(3)(3)300000nn nn nnn a a a a b a a a b a a b a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎪⎝⎭类似的做下去,我们有:第k 步:()()k ,1,,k ikk kka i i k n a -⨯+=+第行第行。

n -1步以后,我们可以得到变换后的矩阵为:11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()00000n n nn n nnn a a a a b a a a b a a b a b ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭注意到,计算过程中()k kk a 处在被除的位置,因此整个计算过程要保证它不为0。

所以,Gauss 消元法的可行条件为:()0k kka ≠。

就是要求A 的所有顺序主子式均不为0,即1111det 0,1,,i i ii a a i n a a ⎛⎫ ⎪≠= ⎪ ⎪⎝⎭因此,有些有解的问题,不能用Gauss 消元求解。

另外,如果某个()k kk a 很小的话,会引入大的误差。

例 用Gauss 消去法解方程组:(1)1234123341518311151111631112x x x x -⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪---- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭ (1)对增广矩阵进行初等变换1221331443()21()121()41233415371512334150522218311155321911116044343111277700444E E E E E E E E E +→-+→-+→-⎛⎫⎪⎛-⎫ ⎪- ⎪ ⎪---- ⎪ ⎪−−−−−−→ ⎪ ⎪ ⎪ ⎪⎪-⎝⎭ ⎪-- ⎪⎝⎭2332443445()677()()6111233412334151537370505151522222211291129000111136367357910000003633E E E E E E E E E +→+→-+→--⎛⎫⎛⎫⎪⎪ ⎪ ⎪-- ⎪ ⎪ ⎪ ⎪−−−−−→−−−−−−→ ⎪ ⎪⎪⎪ ⎪⎪⎪ ⎪⎝⎭⎝⎭得等价方程组12342343441233415371552221129113691033x x x x x x x x x x -++=⎧⎪⎪-++=⎪⎪⎨+=⎪⎪⎪=⎪⎩回代得40x =,33x =,22x =,11x =。

第一步:将(1)/3使x 1的系数化为1,再将(2)、(3)式中x 1的系数都化为零,即由(2)-2×(1)(1)得由(3)-4×(1)(1)得第二步:将(2)(1)除以2/3,使x 2系数化为1,得再将(3)(1)式中x 2系数化为零,由(3)(1)-(-14/3)*(2)(2),得第三步:将(3)(2)除以18/3,使x 3系数化为1,得经消元后,得到如下三角代数方程组:)1(321)1( (23)132=++x x x )1(32)2( (034)32=+x x )1(32)3( (63)10314-=--x x )2(32)2(......02=+x x )2(3)3( (63)18-=x )3(3)3(......1-=x1.2回代过程由(3)(3)得 x 3=1,将x 3代入(2)(2)得x 2=-2,将x 2 、x 3代入(1)(1)得x 2=1,所以,本题解为[x]=[1,2,-1]T1.3高斯消元的公式综合以上讨论,不难看出,高斯消元法解方程组的公式为 第一步,消元(1) 令a ij (1) = a ij , (i,j=1,2,3,…,n )b i (1) =b i , (i=1,2,3,…,n ) (2) 对k=1到n-1,若a kk (k)≠0,进行l ik = a ik (k)/ a kk (k), (i=k+1,k+2,…,n ) a ij (k+1) = a ij (k) - l ik * a kj (k), (i,j= k+1,k+2,…,n ) b i (k+1) = b i (k) - l ik * b k (k), (i= k+1,k+2,…,n )第二步,回代若a nn (n) ≠ 0x n = b n (n) / a nn (n)x i = (b i (i) – sgm(a ij (i) * x j )/- a ii (i) ,(i = n-1,n-2,…,1),( j = i+1,i+2,…,n )2 、LU 分解法求解线性代数方程组除了高斯消元法外,还常用LU 分解法(三角形分解法)。

LU 分解法的优点是当方程组左端系数矩阵不变,仅仅是方程组右端列向量改变,即外加激励信号变化时,能够方便地求解方程组。

矩阵的三角分解法可分为直接三角分解法,列主元三角分解法,平方根法,三对角方程组的追赶法。

下面讨论直接三角分解法。

设n阶线性方程组Ax=b 。

假设能将方程组左端系数矩阵A,分解成两个三角阵的乘积,即A=LU ,式中,L为主对角线以上的元素均为零的下三角矩阵, 且主对角线元素均为1的上三角矩阵;U为主对角线以下的元素均为零所以有,LUx=b令Ux=y,则Ly=b由A=LU,由矩阵的乘法公式:a1j = u1j, j=1,2,…,na i1 = li1u11, i=1,2,…,n推出u1j = a1j, j=1,2,…,nl i1 = ai1/u11, i=1,2,…,n这样就定出了U的第一行元素和L的第一列元素。

设已定出了U的前k-1行和L的前k-1列,现在确定U的第k行和L的第k列。

由矩阵乘法:. -当r>k 时,l kr =0, 且l kk =1,因为所以,同理可推出计算L 的第k 列的公式:因此得到如下算法——杜利特(Doolittle )算法:(1) 将矩阵分解为A=LU,对k=1,2,…,n ;j=k,k+1,…n ; i=k,k+1,…n ;公式1(2) 解L y =b(3) 解U x =y对大规模稀疏问题,如果能够通过调整方程及未知量的顺序使得方程组的系数矩阵成带状结构,则对系数矩阵使用通常的LU 分解,可以保障单位下三角矩阵L 及上三角矩阵U 仍为带状结构.∑==nr rjkr kj u l a 1∑=+=-=n r rjkr kj kj nk k j u l a u 1,...,1,∑=+=nr rjkr kj kj u l u a 1∑=+=-=nr kkrj kr ik ik nk k i u u l a l 1,...,1,/)(∑-==-=11,...,2,1:2k r rkr k k nk y l b y 公式∑+=-=-=nk r kkrkr k k n n k u x uy x 11,...,1,/)(3:公式⎪⎪⎪⎩⎪⎪⎪⎨⎧=-=-=∑∑==1/)(u 11kk kknr rj ky ik jk nr yjki kj ki l u u l a l u l a3、直接三角分解法Gauss 消去法还有许多变形,有些变形是为了利用特殊技巧减少误差,把Gauss 消去法改写为更紧凑的形式,还有一些变形时根据某类矩阵的特性作一些修正和简化,这些方法可统称为直接三角分解法。

矩阵的三角分解设A 的顺序主子式0(1,2,,)k k n ∆≠=,则可建立线性方程组Ax b =的Gauss消去法与矩阵分解的关系,即矩阵A 的LU 分解。

这个问题前面已经讲的比较详细了,此处不再赘述。

Doolittle 分解法首先假设A 的顺序主子式k ∆都不为零,则A 可作Doolittle 分解,即A LU =,其中L 是单位下三角阵,有1ii l =,i j <时0ij l =;U 是上三角阵,i j >时0ij u =。

仔细写出为111211112121222212221212111n n n n n n nn n n nn a a a u u u a a a l u u A LU a a a l l u ⎛⎫⎛⎫⎛⎫⎪⎪⎪ ⎪ ⎪⎪=== ⎪ ⎪⎪⎪⎪⎪⎝⎭⎝⎭⎝⎭(2.11) 在前面逐步推导L 和U 的元素公式都要借助于有关的()k ij a 来表示。

相关文档
最新文档