线性代数方程组数值解法及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计算方法3解线性方程组计算解法

MATLAB计算方法3解线性方程组计算解法

直到(n-1) 原方程组化为
a11 x1 a12 x2 a1n xn a1,n1 a22 x2 a2 n xn a2 ,n1

ann xn an ,n1
(上三角方程组) (3.2) 以上为消元过程。
(n) 回代求解公式
a n ,n1 xn a nn n x k 1 [a k ,n1 a kj x j ] a kk j k 1 ( k n 1, n 2,...,1)
由矩阵乘法 (1) 1) l11 a11 l11
umj 1 ukj a kj ukj a kj l km umj
m 1
k 1
2 求L的第k列:用L的第i行 u的第k列
(i k 1, , n),即 ( l i 1 , , l ik , l kk , 0 0) ( u1k , u2 k , , ukk , 0 0)' a ik
( 2) 1)求u的第2行:用L的第2行 u的第j列 (j 2, , n) l 21 u1 j 1 u2 j a 2 j u2 j a 2 j l 21u1 j 2)求L的第2列:用L的第i行 u的第2列 (i 3,4, , n) l i 1 u12 l i 2 u22 a i 2 l i 2 (a i 2 l i 1 u12 ) / u22
m 1
l
k 1
im
umk l ik ukk a ik
k 1
l ik a ik l im umk ukk m 1
LU分解式: u1 j a1 j ( j 1,2, n) l i 1 a i 1 u11 ( i 2,3, , n) k 1 ukj a kj l km umj a kj m 1 ( j k , k 1, , n) k 1 l ik a ik l im umk ukk a ik m 1 ( i k 1, , n) ( k 2, 3, , n )

数值分析中求解线性方程组的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。

MATLAB计算方法3解线性方程组计算解法

MATLAB计算方法3解线性方程组计算解法

MATLAB计算方法3解线性方程组计算解法线性方程组是数学中的一个重要问题,解线性方程组是计算数学中的一个基本计算,有着广泛的应用。

MATLAB是一种功能强大的数学软件,提供了多种解线性方程组的计算方法。

本文将介绍MATLAB中的三种解线性方程组的计算方法。

第一种方法是用MATLAB函数“linsolve”解线性方程组。

该函数使用高斯消元法和LU分解法求解线性方程组,可以处理单个方程组以及多个方程组的情况。

使用该函数的语法如下:X = linsolve(A, B)其中A是系数矩阵,B是常数向量,X是解向量。

该函数会根据A的形式自动选择求解方法,返回解向量X。

下面是一个使用“linsolve”函数解线性方程组的例子:A=[12;34];B=[5;6];X = linsolve(A, B);上述代码中,A是一个2×2的系数矩阵,B是一个2×1的常数向量,X是一个2×1的解向量。

运行代码后,X的值为[-4.0000;4.5000]。

第二种方法是用MATLAB函数“inv”求解逆矩阵来解线性方程组。

当系数矩阵A非奇异(可逆)时,可以使用逆矩阵求解线性方程组。

使用“inv”函数的语法如下:X = inv(A) * B其中A是系数矩阵,B是常数向量,X是解向量。

该方法先计算A的逆矩阵,然后将逆矩阵与B相乘得到解向量X。

下面是一个使用“inv”函数解线性方程组的例子:A=[12;34];B=[5;6];X = inv(A) * B;上述代码中,A是一个2×2的系数矩阵,B是一个2×1的常数向量,X是一个2×1的解向量。

运行代码后,X的值为[-4.0000;4.5000]。

第三种方法是用MATLAB函数“mldivide”(或“\”)求解线性方程组。

该函数使用最小二乘法求解非方阵的线性方程组。

使用“mldivide”函数的语法如下:X=A\B其中A是系数矩阵,B是常数向量,X是解向量。

线性方程组的直接解法及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).另一种是大型稀疏矩阵(矩阵阶数高且零元素较多).所以,现在我们需要对求线性方程组的方法进行探究,以便能够找到一些简便的方法来加以应用!本文主要就线性方程组的直接解法予以讨论.线性方程组是线性代数的主要内容,包括线性方程组有解性的判定、消元法解线性方程组和线性方程组解的结构. 它与矩阵、向量的内容密切相关,与矩阵、向量组相关的许多重要结论都是线性方程组有关结论的应用和推广. 如:一个向量是否可以由一个向量组线性表示、表示形式是否唯一往往与非齐次线性方程组是否有解、有唯一解还是无穷多解是等价的;一个向量组是否线性相关与齐次线性方程组是否有非零解是等价的等等.而且随着现代工业的发展,线性方程组的应用出现在各个领域,伴随着大量方程和多未知数的出现, 例如电学中的网络问题,用最小二乘法求实验数据拟合问题(如大地测量数据处理),解非线性方程组问题,用差分法或有限元法解常微分方程、偏微分方程边值问题等最终都归结于解线性代数方程组。

如何使用Matlab解决数学问题

如何使用Matlab解决数学问题

如何使用Matlab解决数学问题使用Matlab解决数学问题引言:数学作为一门基础学科,广泛应用于各个学科领域。

而Matlab作为一款数学软件,拥有强大的计算能力和丰富的函数库,成为了数学问题解决的得力工具。

本文将介绍如何使用Matlab解决数学问题,并通过实例来展示其强大的功能和灵活性。

一、Matlab的基本使用方法1. 安装和启动Matlab首先,我们需要从官方网站下载并安装Matlab软件。

安装完成后,打开软件即可启动Matlab的工作环境。

2. 变量和运算符在Matlab中,变量可以用来存储数据。

我们可以通过赋值运算符“=”将数值赋给一个变量。

例如,可以使用“a=5”将数值5赋给变量a。

Matlab支持常见的运算符,如加、减、乘、除等,可以通过在命令行输入相应的表达式进行计算。

3. Matirx和向量的操作Matlab中,Matrix和向量(Vector)是常用的数据结构。

我们可以使用方括号将数值组成的矩阵或向量输入Matlab,比如“A=[1 2; 3 4]”可以创建一个2x2的矩阵。

4. 函数和脚本Matlab提供了丰富的内置函数和函数库,可以通过函数来解决各种数学问题。

同时,我们还可以自己编写函数和脚本。

函数用于封装一段可复用的代码,而脚本则是按照特定的顺序执行一系列的命令。

二、解决线性代数问题1. 线性方程组求解Matlab提供了“solve”函数用于求解线性方程组。

例如,我们可以使用“solve([2*x + y = 1, x + 3*y = 1], [x, y])”来求解方程组2x + y = 1和x + 3y = 1的解。

2. 矩阵运算Matlab提供了丰富的矩阵运算函数,如矩阵的加法、乘法、转置等。

通过这些函数,我们可以快速进行矩阵运算,解决线性代数问题。

三、解决数值计算问题1. 数值积分对于某些无法解析求解的积分问题,Matlab可以通过数值积分方法求得近似解。

Matlab提供了“integral”函数用于数值积分,我们只需要给出被积函数和积分区间即可。

利用Matlab进行线性代数问题求解的方法与案例

利用Matlab进行线性代数问题求解的方法与案例

利用Matlab进行线性代数问题求解的方法与案例引言线性代数是数学的一个重要分支,广泛应用于工程、物理、计算机科学等领域。

而Matlab作为一种功能强大的数值计算软件,提供了各种实用的工具和函数,可以方便地解决线性代数问题。

本文将介绍一些常用的线性代数问题求解方法,并通过具体的案例来展示Matlab在实际应用中的效果。

一、线性方程组的求解线性方程组是线性代数中最基础的问题之一。

Matlab提供了多种求解线性方程组的函数,如“backslash”操作符(\)和“linsolve”函数等。

下面通过一个实例来说明Matlab的线性方程组求解功能。

案例:假设有以下线性方程组需要求解:2x + 3y - 4z = 53x - 2y + z = 8x + 5y - 3z = 7在Matlab中输入以下代码:A = [2 3 -4; 3 -2 1; 1 5 -3];b = [5; 8; 7];x = A\b;通过以上代码,我们可以得到线性方程组的解x=[1; -2; 3]。

这表明在满足以上方程组的条件下,x=1,y=-2,z=3。

可以看出,Matlab在求解线性方程组时,使用简单且高效。

二、矩阵的特征值和特征向量求解矩阵的特征值和特征向量也是线性代数中的重要概念。

利用特征值和特征向量可以得到矩阵的许多性质和信息。

在Matlab中,我们可以通过“eig”函数来求解矩阵的特征值和特征向量。

案例:假设有一个2x2矩阵A,需要求解其特征值和特征向量。

在Matlab中输入以下代码:A = [2 3; 1 4];[V, D] = eig(A);通过以上代码,我们可以得到矩阵A的特征向量矩阵V和特征值矩阵D。

具体结果如下:特征向量矩阵V = [0.8507 -0.5257; 0.5257 0.8507]特征值矩阵D = [1.5858 0; 0 4.4142]由结果可知,矩阵A的特征向量矩阵V和特征值矩阵D可以提供有关该矩阵的很多信息,如相关线性变换、对称性等。

MATLAB解代数方程

MATLAB解代数方程

例 用Jacobi迭代法求解下列线性方程组。设迭代初值为0, 迭代精度为10-6。 在命令中调用函数文件Jacobi.m,命令如下: A=[10,-1,0;-1,10,-2;0,-2,10]; b=[9,7,6]'; x= [x,n]=jacobi(A,b,[0,0,0]',1.0e-6) 0.9958
x= -66.5556 25.6667 -18.7778 26.5556
(2) QR分解 对矩阵X进行QR分解,就是把X分解为一个正交矩阵Q和一 个上三角矩阵R的乘积形式。QR分解只能对方阵进行。 MATLAB的函数qr可用于对矩阵进行QR分解,其调用格 式为: [Q,R]=qr(X):产生一个正交矩阵Q和一个上三角矩阵R,使 之满足X=QR。 [Q,R,E]=qr(X):产生一个一个正交矩阵Q、一个上三角矩阵 R以及一个置换矩阵E,使之满足XE=QR。 实现QR分解后,线性方程组Ax=b的解x=R\(Q\b)或 x=E(R\(Q\b))。
-1.7556 n= n1 =
4
1011
非线性方程数值求解
单变量非线性方程求解 在MATLAB中提供了一个fzero函数,可以用来求单变量 非线性方程的根。该函数的调用格式为: z=fzero('fname',x0,tol,trace) 其中fname是待求根的函数文件名,x0为搜索的起点。一个 函数可能有多个根,但fzero函数只给出离x0最近的那个 根。tol控制结果的相对精度,缺省时取tol=eps,trace• 指 定迭代信息是否在运算中显示,为1时显示,为0时不显示, 缺省时取trace=0。
例 用LU分解求解线性方程组。 命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; [L,U]=lu(A); x=U\(L\b) 采用LU分解的第2种格式,命令如下: [L,U ,P]=lu(A); x=U\(L\P*b)

使用Matlab求解线性代数问题(一)

使用Matlab求解线性代数问题(一)

使用Matlab求解线性代数问题一、用行列式求解线性方程组x1+ x2–2*x3 = -35*x1–2*x2+ 7*x3 = 222*x1–5*x2+ 5*x3 = 4解法1:使用矩阵求解方程组在Matlab 7.1命令行界面中输入(A表示系数矩阵,b表示向量)A = [1 1 -2; 5 -2 7; 2 -5 5]; % 系数矩阵b = [-3; 22; 4]; % 向量format rat; % 设置结果的显示形式为分数x = A\b; % 计算结果x = x' % 转置以行向量形式显示界面显示结果为x = 47/56 163/56 27/8即方程的解为x1 = 47/56; x2 = 163/56; x3 = 27/8解法2:使用Cramer法则求解方程组在Matlab 7.1命令行界面中输入D(系数行列式)D = [1 1 -2; 5 -2 7; 2 -5 5]; % 系数矩阵DD1 = [b D(:,2) D(:, 3)]; % D1D2 = [D(:,1) b D(:, 3)]; % D2D3 = [D(:, 1) D(:,2) b]; % D3format rat; % 设置结果的显示形式为分数x1 = det(D1)/det(D)x2 = det(D2)/det(D)x3 = det(D3)/det(D)输出结果为x1 = 47/56x2 = 163/56x3 = 27/8即方程的解为:x1 = 47/56; x2 = 163/56; x3 = 27/8二、求排列65872134的逆序数,并确定其奇偶性。

解:排列的逆序数定义为:如在1,2,3,…,n的一个全排列(s1 s2 s3…s n)中,有i<j时,s i >s j,这时s i、s j违反了自然顺序,就说它们构成了一个逆序。

排列(s1 s2 s3…s n)中逆序的总数称为该序列的逆序数。

根据定义计算逆序数的Matlab程序如下:a = [6 5 8 7 2 1 3 4]; % 将排列看作行向量Num = 0; % 逆序数初始值设为0Len = length(a); % 行向量中元素的个数for i = 1:1:(Len-1)n = length(find( a(i+1: Len) < a(i))); % 计算第i个元素% 的逆序数disp(strcat('第', num2str(i), '个元素', num2str(a(i)), '的逆序数为', num2str(n) ));Num = Num + n; %增加序列逆序数的个数end;disp(strcat('排列', num2str(a), '的逆序数为', num2str(Num)))将上述Matlab命令输入Matlab窗口命令行,执行结果为:第1个元素6的逆序数为5第2个元素5的逆序数为4第3个元素8的逆序数为5第4个元素7的逆序数为4第5个元素2的逆序数为1第6个元素1的逆序数为0第7个元素3的逆序数为0排列6 5 8 7 2 1 3 4的逆序数为19即排列65872134的逆序数为19,由于19为基数,所以排列65872134为逆排列。

【matlab-7】Matlab与线性代数(一)

【matlab-7】Matlab与线性代数(一)

【matlab-7】Matlab与线性代数(⼀)⼀、线性代数基本⽅程组基本⽅程组:矩阵表⽰:解决问题的视⾓:1、解联⽴⽅程的视⾓ (⾏阶梯变换 & 矩阵运算)着重研究解x,即研究线性⽅程组的解法。

中学⾥的解⽅程和MATLAB的矩阵除法就是这样。

要点:矩阵的每⼀⾏代表⼀个⽅程,m⾏代表m个线性联⽴⽅程。

n列代表n个变量。

如果m是独⽴⽅程数,根据m<n、m=n、m>n确定⽅程是 ‘⽋定’、‘适定’ 还是 ‘超定’。

对这三种情况都会求解了,研究就完成了。

必须剔除⾮独⽴⽅程。

⾏阶梯形式、⾏列式和秩的概念很⼤程度上为此⽬的⽽建⽴。

2、向量空间中向量的合成的视⾓ (⽤向量空间解⽅程组)把A各列看成n个m维基本向量,线性⽅程组看成基向量的线性合成:要点:解x是这些基向量的系数。

它可能是常数(适定⽅程),也可能成为其中的⼀个⼦空间(⽋定⽅程) 。

要建⽴其⼏何概念,并会求解或解空间。

3、线性变换或映射的视⾓ (线性变换及其特征)把b看成变量y,着重研究把Rn空间的x变换为Rm空间y 的效果,就是研究线性变换系数矩阵A的特征对变换的影响。

要点:就是要找到适当的变换,使研究问题的物理意义最为明晰。

特征值问题就是⼀例。

⼆、线性代数建模与应⽤概述介绍⼀些⼤的系统⼯程中使⽤线性代数的情况,使读者知道为什么线性代数在近⼏⼗年来变得如此的重要。

Leontief教授把美国的经济⽤500个变量的500个线性⽅程来描述,在1949年利⽤当时的计算机解出了42×42的简化模型,使他于1973年获得诺贝尔经济奖,从⽽⼤⼤推动了线性代数的发展。

把飞⾏器的外形分成若⼲⼤的部件,每个部件沿着其表⾯⼜⽤三维的细⽹格划分出许多⽴⽅体,这些⽴⽅体包括了机⾝表⾯以及此表⾯内外的空⽓。

对每个⽴⽅体列写出空⽓动⼒学⽅程,其中包括了与它相邻的⽴⽅体的共同边界变量,这些⽅程通常都已经简化为线性⽅程。

对⼀个飞⾏器,⼩⽴⽅体的数⽬可以多达400,000个,⽽要解的联⽴⽅程可能多达2,000,000个。

Matlab中线性代数方程组的求解

Matlab中线性代数方程组的求解

1
9—2 Matlab 中线性代数方程组的求解
2
z 定解方程组
定解方程组指未知数的个数和方程个数相同的方程
组,其求解可采用矩阵除法和初等变换法,当方程组的系数矩阵非奇异时,还可通过求系数矩阵的逆来进行
z 不定方程组
不定方程组指未知数的个数大于方程个数的方程组,用矩阵除法将给出一个具有最多零元素的特解,其通解则可通过null 命令求一个齐次组的基础解系来得到,或者由初等变换得到,
3z 超定方程组
超定方程组指未知数的个数小于方程个数的方程组,用矩阵除法可求得一最小二乘近似解。

z 奇异方程组
奇异方程组指方程组系数矩阵是奇异的,用矩阵除法不能直接求解,但经同解变形仍可求得一特解。

z 符号方程组
符号方程组的求解可通过函数solve 、linsolve 来实现。

4
z null()z rref()z A\b
z sym(A)\sym(b)z inv()
5
z rank( )z det( )z inv( )z eig( )z norm( )z jordan( )z poly( ) %求特征单项式
%P=poly(A), poly2str(P,’x’)。

线性代数的MATLAB软件实验报告

线性代数的MATLAB软件实验报告

线性代数的MATLAB 软件实验一、实验目的1.熟悉矩阵代数主要MATLAB 指令。

2.掌握矩阵的转置、加、减、乘、除、乘方、除法等MATLAB 运算。

3.掌握特殊矩阵的MATLAB 生成。

4.掌握MATLAB 的矩阵处理方法。

5.掌握MATLAB 的矩阵分析方法。

6.掌握矩阵的特征值与标准形的MATLAB 验算。

7.掌握线性方程组的MATLAB 求解算法。

二、实验原理1.线性方程组 【基本观点】自然科学和工程实践很多问题的解决都涉及线性代数方程组的求解和矩阵运算.一方面,许多问题的数学模型本身就是一个线性方程组,例如结构应力分析问题、电子传输网分析问题和投入产出分析问题;另一方面,有些数值计算方法导致线性方程组求解,如数据拟合,非线性方程组求解和偏微分方程组数值解等.n 个未知量m 个方程的线性方程组一般形式为⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++.,,22112222212111212111m n mn m m n n n n b x a x a x a b x a x a x a b x a x a x a (3.1) 令,,,2121212222111211⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫⎝⎛=m n mn m m n n b b b b x x x x a a a a a aa a a A则得矩阵形式Ax=b. (3.2)若右端b=0,即Ax=0, (3.3)则称方程组为齐次的.方程组(3.1)可能有唯一解,可能有无穷多解,也可能无解,主要取决于系数矩阵A 及增广矩阵(A,b )的秩.若秩(A )=秩(A,b )=n,存在唯一解,其解理论上用Cramer 法则求出,但由于这种方法要计算n+1个n 阶行列式,计算量太大通常并不采用;若秩(A )=秩(A,b )<n,存在无穷多解,其通解可表示为对应齐次方程组(3.3)的一个基础解系与(3.2)的一个特解的叠加;若秩(A )≠秩(A,b ),则无解,这时一般寻求最小二乘近似解,即求x 使向量Ax-b 模最小.P50矩阵左除的数学思维:恒等变形Ax=b 方程两边的左边同时除以A ,得:b AAx A11=,即:b A b Ax 11-==MATLAB 的实现(左除):x=A\b 2.逆矩阵 【基本观点】方阵A 称为可逆的,如果存在方阵B ,使 AB=BA=E,这里E 表示单位阵.并称B 为A 的逆矩阵,记B=1-A .方阵A 可逆的充分必要条件是A 的行列式det A ≠0.求逆矩阵理论上的公式为*1det 1A AA =-, (3.4)这里*A 为A 的伴随矩阵.利用逆矩阵,当A 可逆时,(3.2)的解可表示为b A x 1-=.由于公式(3.4)涉及大量行列式计算,数值计算不采用.求逆矩阵的数值算法一般是基于矩阵分解的方法.3.特征值与特征向量 【基本观点】对于方阵A ,若存在数λ和非零向量x ,使,x Ax λ= (3.5) 则称λ为A 的一个特征值,x 为A 的一个对应于特征值λ的特征向量.特征值计算归结为特征多项式的求根.对于n 阶实数方阵,特征多项式在复数范围内总有n 个根。

数值分析MATLAB科学计算—线性方程组

数值分析MATLAB科学计算—线性方程组

科学计算—理论、方法及其基于MATLAB的程序实现与分析 三、 解线性方程组(线性矩阵方程)解线性方程组是科学计算中最常见的问题。

所说的“最常见”有两方面的含义:1) 问题的本身是求解线性方程组;2) 许多问题的求解需要或归结为线性方程组的求解。

关于线性方程组B A x B Ax 1-=⇒=(1)其求解方法有两类:1) 直接法:高斯消去法(Gaussian Elimination ); 2) 间接法:各种迭代法(Iteration )。

1、高斯消去法1) 引例考虑如下(梯形)线性方程组:()⎪⎩⎪⎨⎧==+==+-=⇒⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--⇔⎪⎩⎪⎨⎧==-=+-5.0141315.3221122004301211214322332321321332321x x x x x x x x x x x x x x x 高斯消去法的求解思路:把一般的线性方程组(1)化成(上或下)梯形的形式。

2)高斯消去法——示例考虑如下线性方程组:⎪⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---⇔⎪⎩⎪⎨⎧=++-=-+-=+-306015129101.2001.221113060129501.2001.221321321321321x x x x x x x x x x x x 1) 第一个方程的两端乘12加到第二个方程的两端,第一个方程的两端乘-1加到第三个方程的两端,得⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--3060031110001.0001.00111321x x x2) 第二个方程的两端乘001.010-加到第三个方程的两端,得 ⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--60600311010001.0001.00111321x x x3) 从上述方程组的第三个方程依此求解,得()⎪⎩⎪⎨⎧==+-==+-=600300001.03100024011332321x x x x x x 3)高斯消去法的不足及其改进——高斯(全、列)主元素消去法在上例中,由于建模、计算等原因,系数2.001而产生0.0005的误差,实际求解的方程组为⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---306015129101.20005.22111321x x x ⎪⎩⎪⎨⎧===⇒70.4509.30142.2565321x x x注:数值稳定的算法高斯列主元素消去法就是在消元的每一步选取(列)主元素—一列中绝对值最大的元取做主元素,高斯列主元素消去法是数值稳定的方法。

matlab 方程组 解

matlab 方程组 解

Matlab方程组解1. 引言方程组是数学中一个重要的概念,它描述了多个未知数之间的关系。

解方程组的过程在科学、工程和计算机科学等领域中有着广泛的应用。

Matlab作为一种高级数值计算环境,提供了丰富的工具和函数来解决方程组的求解问题。

本文将介绍如何使用Matlab解方程组,包括线性方程组和非线性方程组的求解方法。

2. 线性方程组的求解2.1 利用矩阵求解线性方程组可以表示为矩阵形式,例如:Ax = b,其中A是系数矩阵,x是未知数向量,b是常数向量。

在Matlab中,可以使用线性代数工具箱中的函数来求解线性方程组。

2.1.1 使用inv函数求解如果系数矩阵A是可逆的,可以使用inv函数求解线性方程组。

具体步骤如下: 1. 计算A的逆矩阵:A_inv = inv(A) 2. 计算解向量:x = A_inv * b2.1.2 使用linsolve函数求解linsolve函数可以直接求解线性方程组,无需计算逆矩阵。

具体步骤如下: 1. 调用linsolve函数:x = linsolve(A, b)2.2 利用高斯消元法求解高斯消元法是一种常用的求解线性方程组的方法,它通过矩阵的行变换将方程组转化为上三角矩阵,然后通过回代得到解。

在Matlab中,可以使用lu函数来进行高斯消元法求解。

2.2.1 使用lu函数求解lu函数可以将方程组的系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U,即A = LU。

具体步骤如下: 1. 调用lu函数:[L, U] = lu(A) 2. 解得方程组:x = U \ (L \ b)3. 非线性方程组的求解非线性方程组是指未知数与其函数之间存在非线性关系的方程组。

与线性方程组不同,非线性方程组的求解通常需要借助数值方法。

Matlab提供了多种函数和工具箱来解决非线性方程组的求解问题。

3.1 利用fsolve函数求解fsolve函数是Matlab中用于求解非线性方程组的函数,它通过迭代的方式逼近方程组的解。

解线性代数方程组迭代法的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中的线性代数计算技巧指南

Matlab中的线性代数计算技巧指南

Matlab中的线性代数计算技巧指南线性代数是数学中一门重要的学科,它在许多领域中都有着广泛的应用,包括工程、科学和金融等。

而Matlab是一种功能强大的数值计算软件,其中包含了许多用于线性代数计算的工具和函数。

本文将为读者介绍一些在Matlab中进行线性代数计算时常用的技巧和方法。

1. 矩阵的创建与操作在Matlab中,我们可以使用矩阵来表示向量、矩阵和张量等对象。

创建一个矩阵可以使用以下命令:```matlabA = [1 2 3; 4 5 6; 7 8 9];```这样就创建了一个3×3的矩阵A,其中的分号用于分隔行。

我们也可以使用函数来创建特殊的矩阵,比如单位矩阵、零矩阵等:```matlabeye(3); % 创建3×3的单位矩阵zeros(2, 3); % 创建2×3的零矩阵```对于矩阵的操作,Matlab提供了许多常用的函数,比如矩阵的转置、矩阵的相乘等:```matlabA'; % 矩阵的转置A*B; % 矩阵的乘法```2. 矩阵的求逆与解线性方程组在线性代数中,求逆矩阵和解线性方程组是两个常见的问题。

在Matlab中,可以使用`inv`函数来求逆矩阵:```matlabinv(A); % 求矩阵A的逆矩阵```如果要解一个线性方程组,我们可以使用线性方程组求解器`linsolve`函数:```matlabX = linsolve(A, B); % 解线性方程组AX=B```其中,A是系数矩阵,B是常数向量。

这样,X就是线性方程组的解向量。

3. 特征值和特征向量特征值和特征向量在线性代数中有着重要的意义,它们在许多应用中扮演着重要的角色。

在Matlab中,我们可以使用`eig`函数来计算矩阵的特征值和特征向量:```matlab[V, D] = eig(A); % 计算矩阵A的特征向量和特征值```其中,V是包含特征向量的矩阵,D是包含特征值的对角矩阵。

线性代数方程组的求解与Matlab编程

线性代数方程组的求解与Matlab编程

在数学领域中,线性代数方程组经常会需要使用到,这也是线性代数的重要内容。

基础理论知识,矩阵的构成,这些是学习线性代数求解的基本模块,矩阵的初等行(列)变换则是线性方程组求解的基础步骤。

这也延伸出了很多种线性代数方程组的求解办法,比如行阶梯法、矩阵运算法等一系列办法,根据具体线性代数题U的不同,我们在求解中也可以灵活运用不同的方法。

这些方法的不同优点可以更方便的帮助我们解决线性方程组求解中不同类型的题U,在具体求解过程中,矩阵和向量是基础也是重中之重,它使我们解决问题的关键。

我们生活中也有很多问题会用到线性代数方程组方面的知识,所以它与我们的生活也是密不可分的。

MATLAB作为一门科学与计算机方向的重要编程语言,是现如今我们可以在计算机上找到的最优秀的工具之一,它拥有强大的计算能力、图形编程能力、符号推算能力、文字处理能力、动态模拟仿真能力。

Matlab拥有的强大的编程讣算能力,让它可以根据本文中线性方程组的这些求解方法,分别给出在求解线性方程组中的Matlab应用,并且利用计算机对线性代数方程组进行求解。

[关键词]Mat lab线性方程组矩阵求解初等变换摘要........................................................... -1 一ABSTRACT ............................................................................................. 错误!未定义书签。

目录........................................................... -1 -1前言............................................................. - 2 -1.1国内外研究现状............................................. -2 -1.2课题的研究意义............................................. _ 3 -1.3本文所完成的工作............................................ -3 - 2预备知识......................................................... -4 -2.1线性方程组的定义............................................ -4 -2.2线性方程组有解判别定理...................................... -4 -2.3线性方程组解的结构.......................................... -5 -2. 3. 1齐次线性方程组的性质................................. -6 -2. 3. 2基础解系及其存在性................................... -6 -2. 3. 3 一般线性方程组的解的结构............................. -7 - 3线性方程组的求解方法............................................. -8 -3.1行阶梯法解线性方程.......................................... -8 -3. 1. 1初等行变换........................................... -8 -3.1.2行阶梯矩阵的生成(高斯消元过程)...................... - 8 -3.1. 3行阶梯法解欠定方程组................................ -10 -3.2用矩阵运算法解线性方程组 .................................. -10 -3.2.1矩阵运算规则及MATLAB实例........................... - 10 -3.2. 2 行列式.............................................. - 12 -3.2. 3矩阵的秩和矩阵求逆.................................. - 12 -3.2.4条件数一衡量奇异程度的量.............................. -12 -3.2.5用矩阵“除法”解线性方程.............................. -13 -4 Mat lab编程方法及实例 ........................................... -13 -4. 1 Matlab中的行阶梯法解线性方程.............................. -13 -4. 1. 1线性方程的Mat lab表示方法 ........................... - 13 -4.1.2基于Matlab的高斯消元及实例 ........................... - 15 -4. 1. 3 MATLAB中的行阶梯生成函数.......................... -17 -4. 1. 4解欠定方程组实例.................................... - 18 -4. 2 Matlab中的矩阵运算法解线性方程............................ - 20 -4. 2. 1矩阵运算规则的matlab实例............................. -20 -4. 2. 2初等变换乘子矩阵的生成及MATLAB实例................ -22 -4.2.3行列式的Mat lab实例................................... -26 -4. 2. 4矩阵求逆实例......................................... -27 -4. 2. 5矩阵“除法”解欠定方程实例........................... -28 -结论............................................................ 一30 -参考文献......................................................... 一31 一1.1国内外研究现状线性方程组求解这个数学领域,国内外数学学家对此的研究非常广泛,也为这个课题做出了许多贡献,在科技和学术日益进步的今天,数学已经与我们的生活息息相关,影响着社会的进程和科技的发展。

MATLAB线性方程组求解方法

MATLAB线性方程组求解方法
下面把该线性方程组问题用矩阵形式来表达,从而方便 MATLAB 7.0 计算。首先把 x 和 y 用列向量来表示,具体代码如下: x=(0:0.1:1)’; y=([-0.01 0.045 0.12 0.2 0.33 0.52 0.67 0.95 1.2 1.45 1.78])’; 然后构造系数矩阵 A,具体代码如下: A(:,1)=x’; A(:,2)=x’.^2; 此时方程组可以写成:A*[c1 c2]’=y,然后用反斜杠’\’来求系数 c1 和 c2,具体代 码如下: c=A\y 由上述语句得到如下代码: c= 0.2420 1.5407 最后,拟合得到 y=0.242*x+1.5407*x 2 。具体代码如下: y_fit=c(1)*x+c(2)*x.^2; plot(x,y_fit,’-’,x,y,’o’) 由上述语句得到如图 3-1 所示的拟合结果和原始数据的对比图。 图 3-1 拟合结果和原始数据对比 由图 3-1 可见,虽然拟合得到的结果与原始数据并不严格重合,但其差别比原始数据
——GW318 物联网实验室学术活动
MATLAB 线性方程组求解方法
1.线性方程组的问题 在工程计算中,一个重要的问题是线性方程组的求解。在矩阵表示法中,上述问题可以 表述为给定两个矩阵 A 和 B,是否存在惟一的解 X 使得 AX=B 或 XA=B。 例如,求解方程 3x=6 就可以将矩阵 A 和 B 看成是标量的一种情况,最后得出该方 程的 解为 x=6/3=2。 尽管在标准的数学中并没有矩阵除法的概念,但 MATLAB 7.0 采用了与解标量方程中 类 似的约定,用除号来表示求解线性方程的解。MATLAB 7.0 采用第 2 章介绍过的运算 符斜杠 ’/’和运算符反斜杠’\ ’来表示求线性方程的解,其具体含义如下: • X=A\B 表示求矩阵方程 AX=B 的解; • X=B/A 表示求矩阵方程 XA=B 的解。 对于 X=A\B,要求矩阵 A 和矩阵 B 有相同的行数,X 和 B 有相同的列数,X 的行 数等于 矩阵 A 的列数。X=B\A 行和列的性质则与之相反。 在实际情况中,形式 AX=B 的线性方程组比形式 XA=B 的线性方程组要常见得多。 因此 反斜杠’\’用得更多。本小节的内容也主要针对反斜杠’\’除法进行介绍。斜杠’/’ 除法的性质可以 由恒等变换式得到(B/A)’=(A’\B’)。 系数矩阵 A 不一定要求是方阵,矩阵 A 可以是 m×n 的矩阵,有如下 3 种情况: • m=n 恰定方程组,MATLAB7.0 会寻求精确解; • m>n 超定方程组,MATLAB7.0 会寻求最小二乘解; • m<n 欠定方程组,MATLAB7.0 会寻求基本解,该解最多有 m 个非零元素。 值得注意的是用 MATLAB 7.0 求解这种问题时,并不采用计算矩阵的逆的方法。针对 不 同的情况,MATLAB7.0 会采用不同的算法来解线性方程组。 2.线性方程组的一般解 线性方程组 AX=B 的一般解给出了满足 AX=B 的所有解。线性方程组的一般解可以通 过 下面的步骤得到。 • 解相应的齐次方程组 AX=0, 求得基础解。 可以使用函数 null()来得到基础解。 语 句 null(A) 返回齐次方程组 AX=0 的一个基础解,其他基础解与 null(A)是线性关系。 • 求非齐次线性方程组 AX=B,得到一个特殊解。 • 非齐次线性方程组 AX=B 的一般解等于基础解的线性组合加上特殊解。 在后面的章节将介绍求非齐次线性方程组 AX=B 特殊解的方法。 3.恰定方程组的求解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于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)200n nn 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)得x3=1,将x3代入(2)(2)得x2=-2,将x2、x3代入(1)(1)得x2=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 = l i1u11 , i=1,2,…,n推出u1j = a1j, j=1,2,…,nl i1 = a i1/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 11kkkknr rj ky ik jk nr yj ki 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 来表示。

相关文档
最新文档