列主元Gauss消元法求解线性方程组的MATLAB实现
目录
- 顺序高斯消去法求解线性方程组的MATLAB实现
- 列主元Gauss消元法求解线性方程组的MATLAB实现
一、简介
MATLAB实现列主元Gauss消去法求解线性方程组,并与不列主元的Gauss消去法比较,最后对数值结果进行分析。
二、代码
function [Solution_matrix]=GaussElimination_Pivot(Augmented_matrix)
% 2020-5-18 臻orz
% inputs:
% Augmented_matrix:增广矩阵,为n*(n+1)维矩阵
% outputs:
% Solution_matrix:计算的解,为n*1维矩阵%initialize
[row,col]=size(Augmented_matrix);
Solution_matrix=zeros(row,1);%判定输入矩阵是否符合要求
if row~=col-1disp('请输入n*(n+1)维矩阵');
elsefor ii = 1:row-1%找寻主元max = ii;for jj = ii+1:rowif abs(Augmented_matrix(jj,ii)) > abs(Augmented_matrix(max,ii))max = jj;endendAugmented_matrix([ii,max],:) = Augmented_matrix([max,ii],:);if Augmented_matrix(ii,ii) == 0disp(['第',num2str(ii),'个主元素为零']);return;end%开始消元for jj = ii+1:rowAugmented_matrix(jj,:) = Augmented_matrix(jj,:)-...Augmented_matrix(jj,ii)/Augmented_matrix(ii,ii)*Augmented_matrix(ii,:);endend%消元完毕,开始回代if Augmented_matrix(row,row)==0disp(['第',num2str(row),'个主元素为零']);return;endSolution_matrix(row)=Augmented_matrix(row,col)/Augmented_matrix(row,col-1);for ii=row-1:-1:1Solution_matrix(ii)=(Augmented_matrix(ii,col)...-Augmented_matrix(ii,1:row)*Solution_matrix)/Augmented_matrix(ii,ii);end
end
end
三、数值结果分析
Emax = zeros(4,1);
index = 0;
for ii = [5,10,14,20]index = index+1;eval(['epsilon=1e-' num2str(ii) ';']);A = [epsilon 2 6 22; 5 7 5 34; 3 2 1 10];Emax(index) = max(abs(GaussElimination(A)-GaussElimination_Pivot(A)));
end
Emax
运行代码,结果为
>> GaussElimination_Compare
第3个主元素为零Emax =0.00000.00000.42113.0000
当epsilon不是很小的时候,机器误差就不是很大,此时可以不选取主元以减少计算量;当epsilon逐渐减小时,采用不选主元的方法计算时,精度逐渐不理想,误差开始增大;最后当epsilon很小时,不采用列主元得到的结果已经不正确了,最后会因为精度问题而报错(机器计算最小精度为1e-15,这时将epsilon视为0),从Emax中第四个值可以看出,此时不选主元来解时程序就会报错(Emax初始化为零,此时与准确解相差为3,故Emax第四个元素为3)。
由此可以看出,Gauss消去法的精确度不如列主元消去法,特别是当矩阵规模变大时,由于迭代次数增加,舍入误差累计,所得结果与精确解差距较大。最终得出的矩阵条件数都较大,尤其是当矩阵阶数变大时,条件数剧增,舍入误差对解的影响很大。在这样的情况下就更应该考虑更优化的算法。
列主元Gauss消元法求解线性方程组的MATLAB实现相关推荐
- Gauss消元法求解线性方程组的Matlab实现(列主元、全主元)
最近数值分析有作业要求用Matlab实现Gauss消元法,记录在此. 问题如下: 1.列主元消去法 function []=Gauss_L(A,b) %列主元求解线性方程组 ZG= [A b]; %增 ...
- Gauss 消元法求解线性方程组
Gauss 消元法求解线性方程组 内容 消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代入到另一方程中,这就消去了一未知数,得到一解:或将方程组中的一方程倍乘某个常数加到另外一 ...
- matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组
用matlab利用高斯消元法求解线性方程组Tag内容描述: 1.用C语言编写软件完成以下任务:请用高斯列主元消元法解下列线性方程组:方法说明(以4阶为例):第1步消元在增广矩阵(A,b)第一列中找到绝 ...
- Python解线性方程组:列主元Gauss消元法
目录 算法流程 代码 测试 列主元Gauss消元法各大教科书都有,是很基础的解方程组方法.其主要思想是把方程组化为上三角方程组,然后通过回代的方法求得方程组的解. Gauss的具体原理请参照数值分析的 ...
- 【Java例题】4.3 3. 使用Gauss消元法求解n元一次方程组的根,
3. 使用Gauss消元法求解n元一次方程组的根, 举例,三元一次方程组: 0.729x1+0.81x2+0.9x3=0.6867 x1+x2+x3=0.8338 1.331x1+1.21x2+1.1 ...
- 数值计算大作业:Jacobi与Gauss -Seidel迭代求解线性方程组(Matlab实现)
作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把Jacobi与Gauss -Seidel迭代求解线性方程组的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文 ...
- matlab约当消去法,Gauss消去法解线性方程组(Matlab)
clear;clc; % Gauss消去法解线性方程组 A=[3 -5 6 4 -2 -3 8; 1 1 -9 15 1 -9 2; 2 -1 7 5 -1 6 11; -1 1 3 2 7 -1 - ...
- 松弛迭代法matlab,逐次超松弛迭代法求解线性方程组的MATLAB实现
function [X_reality,n_reality] = SOR(A,b,X_start,w,n_limit,tolerance) %% % A为迭代的系数矩阵 % b为方程组右边的常数项(列 ...
- 高斯列主元消元法求解线性方程组
一.高斯消去法的基本思想 例1. 解方程组: 解 方程组矩阵形式为: AX=b ,其中: 第一步,消元过程:对增广矩阵进行消元 即 ...
最新文章
- DVWA提示Unable to connect to the database.
- 【图像处理】透视变换 Perspective Transformation
- 在多个游戏视图间切换环境准备
- linux 触摸屏驱动编写
- iphone桌面横屏设置在哪里_iPhone的实用攻略如此多,这4个你知道吗?
- AndroidStudio 常用配置
- 用8小时工作,用24小时思考
- matlab lpfilter.m,histroi/statmoments/lpfilter/dftuv的Matlab程序
- Fedora/RedHat安装Mysql8.0
- Vue「三」—— vue 侦听器、vue 计算属性、vue-cli、vue 组件
- Flutter Text详解
- 【QT】QT从零入门教程(十七):QT+OpenCV+VS 打包exe
- 空间中的语义直线检测_基于语义分割的车道线检测算法研究
- 【STL】List基础
- 【渝粤题库】陕西师范大学209019 鲁迅研究 作业(专升本)
- mysql phpmyadmin远程_phpMyAdmin远程连接mysql数据库
- 工信部:将实施国家软件重大工程解决关键软件“卡脖子”问题丨权威发布
- 实践中如何优化MySQL
- 前端笔记:Grid布局
- JasperReports初体验
热门文章
- 一个数的亲和数iiic++_小学1-6年级数学公式和定律
- 穿越美丽秋色---黄草梁
- 冶炼金属【暴力枚举 + 二分 + 二元不等式】
- elasticsearch-java客户端测试
- 具体如何使用STAR结构化思维
- 时间序列分析(TSA)
- linux脚本读文件的值,shell脚本如何从json文件读取一个某个值
- 【ERP】实践3_会计科目_凭证_期初余额
- 论文精读《Prototypical Networks for Few-shot Learning》
- SQLite 3.39.0 发布,支持右外连接和全外连接