《矩阵分析》代码Ⅱ

(一)gauss消元法

1.1 算法思想
(1)算法大体思想:



(2)算法具体实现:

1.2 matlab代码实现
function X=Gauss(A,B)
%%%此函数用于通过Gauss法,计算方程组的解;
%%%输入系数矩阵A和列向量B;
%%%输出方程组的解。
[n,~]=size(A);
AB=[A,B];
for k=1:nfor i=k+1:nL=-AB(i,k)/AB(k,k);AB(i,k)=0;for j=k+1:n+1AB(i,j)=AB(i,j)+L*AB(k,j);endend
end
a=AB(:,1:n);                 %%矩阵a为上三角矩阵
b=AB(:,n+1);
X=a_Back_subtitution(a,b);   %%调用上三角矩阵的回代法计算。

:关于第二步的回代法,直接调用了自定义的a_Back_subtitution(A,B)函数,关于该函数可以参考上一篇文章
https://blog.csdn.net/m0_46498899/article/details/109223781。最后小声说一句,没有a_Back_subtitution(A,B)函数是会报错的哟,所以记得把她也一起带走哟~~后面两种算法中也会用到滴

1.3 代码调用

(二)列主元素法

2.1 算法思想

在gauss消元法中,我们会发现:每进行一步都要用该步的主元素(即i步中的第i行第i列的元素)作为除数,如果某一步的主元素为0就无法进行,并且如果主元素是一个绝对值很小的数,在进行计算时就会造成截断误差过大,即产生“大数吃小数”的情况。因此我们需要对高斯消元法进行改进,于是列主元素法应运而生了。下面是关于列数元素法的算法思想:

2.2 matlab代码实现

在代码的实现之前小编有必要说明一下,gauss消元法的本质:将方程组变换为解相同的等价方程组。在系数矩阵上表现出来的是系数矩阵的上三角化。而列主元素法只是保证每一步计算是保证主元素是该列的最大元,从而在计算机计算过程中减小误差。
下面是具体的代码实现


function X=Column(A,B)
%%%此函数用于通过列主元素法,计算方程组的解;
%%%输入系数矩阵A和列向量B;
%%%输出方程组的解X。
[n,~]=size(A);
AB=[A,B];
for k=1:nLK=abs(AB(k:n,k));    %%%提取第k列中的第k行到第n行的元素并取绝对值;M=max(LK);if M==0disp('error!!!输入的矩阵可能为奇异矩阵,请仔细检查。');return endq=find(LK==M);     %%%找出最大元素在所提取的列向量中的位置;Rk=k+q(1)-1;for j=k:n+1        %%%此for循环用于互换第k行和第k列主元素所在的第Rk行;temp=AB(k,j);AB(k,j)=AB(Rk,j);     AB(Rk,j)=temp;endfor i=k+1:n        %%%此for循环用于将第k列中第k行及以下元素化为0;;    L=-AB(i,k)/AB(k,k);AB(i,k)=0;for j=k+1:n+1AB(i,j)=AB(i,j)+L*AB(k,j);endend
end
a=AB(:,1:n);                    %%%提取变换后的上三角矩阵;
b=AB(:,n+1);                    %%%提取方程右端的常数项(变换后)
X=(a_Back_subtitution(a,b));    %%%利用回代法将方程的解按顺序按行输出。
2.3代码调用

(三)总体主元素法

3.1算法思想

3.2 matlab代码实现
function X=Population(A,B)
%%%此函数用于通过总体主元素法,计算方程组的解;
%%%输入系数矩阵A和列向量B;
%%%输出方程组的解X。
[n,~]=size(A);
AB=[A,B];
for k=1:nLK=abs(AB(k:n,k:n));    %%%提取第k列到第n列中的第k行到第n行的元素并取绝对值;M=max(LK);if M==0disp('error!!!输入的矩阵可能为奇异矩阵,请仔细检查。');return end[p,q]=find(LK==M);     %%%找出最大元素在所提取的列向量中的位置;p=k+p(1)-1;q=k+q(1)-1;X_temp=1:n;temp0=X_temp(k);X_temp(k)=X_temp(q);X_temp(q)=temp0;for j=k:n+1           %%%此for循环用于互换第k行和第p行;注意:temp1=AB(k,j);    ...由于此两行的第1到第k-1列元素为零,所以互换此两行的第k列到第n+1列;AB(k,j)=AB(p,j);     AB(p,j)=temp1;endfor i=1:n          %%%此for循环用于互换第kL列和第q列;temp2=AB(i,k);AB(i,k)=AB(i,q);     AB(i,q)=temp2;endfor i=k+1:n        %%%此for循环用于将第k列中第k行及以下元素化为0;    L=-AB(i,k)/AB(k,k);A(i,k)=0;for j=k+1:n+1AB(i,j)=AB(i,j)+L*AB(k,j);endend
end
a=AB(:,1:n);                    %%%提取变换后的上三角矩阵;
b=AB(:,n+1);                    %%%提取方程右端的常数项(变换后)
XX=(a_Back_subtitution(a,b));    %%%将方程的解按顺序按行输出。
X=zeros(n,1);
for m=1:nk=X_temp==m;X(m)=XX(k);
end
3.3 代码调用

《矩阵分析》代码Ⅱ——gauss消元法,列主元素法,总体主元素法matlab实现相关推荐

  1. 基于四元素法的捷联惯导姿态更新算法

    摘要          本文主要介绍了机载捷联惯导系统常用的姿态更新算法--四元素法,并重点介绍了利用四元素法进行姿态更新的一般过程.        关键词:四元素法,连贯导,姿态 1 引言      ...

  2. 列主元Gauss消元法求解线性方程组的MATLAB实现

    目录 顺序高斯消去法求解线性方程组的MATLAB实现 列主元Gauss消元法求解线性方程组的MATLAB实现 一.简介 MATLAB实现列主元Gauss消去法求解线性方程组,并与不列主元的Gauss消 ...

  3. Python解线性方程组:列主元Gauss消元法

    目录 算法流程 代码 测试 列主元Gauss消元法各大教科书都有,是很基础的解方程组方法.其主要思想是把方程组化为上三角方程组,然后通过回代的方法求得方程组的解. Gauss的具体原理请参照数值分析的 ...

  4. 用列主元高斯(Gauss)消元法求n阶线性方程组的解(python)

    (一)目的 通过设计.编制.调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解. (二)要求 用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解.用列主 ...

  5. Gauss消元法求解线性方程组的Matlab实现(列主元、全主元)

    最近数值分析有作业要求用Matlab实现Gauss消元法,记录在此. 问题如下: 1.列主元消去法 function []=Gauss_L(A,b) %列主元求解线性方程组 ZG= [A b]; %增 ...

  6. 线性代数 --- Gauss消元的部分主元法和完全主元法

    Gauss消元的部分主元法和完全主元法 心怀二意的人,在他一切所行的路上都没有定见.----雅各书1章8节 笔者的一些话:刚开始写这篇文章的时候,我觉得高斯消元很简单.因为,这时的我已经完成了我一直想 ...

  7. 列主元素消去法的Matlab实现

    一.Gauss消去法与列主元素消去法的联系与区别 Gauss消去法有以下两个主要缺陷: 1)如果某个主元akk=0,则消元无法进行: 2)在akk=0,但相对很小,当其作为除数时,会导致其他元素数量级 ...

  8. 高斯主元素消去法c语言,列主元Gauss消去法(C++实现)

    列主元Gauss消去法(C++) 目的:编写解n阶线性方程组AX=b的列主元三角分解法的通用程序: 原理:列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响 ...

  9. 负基础也能搞懂之“Gauss消元法的MATLAB实现”

    目录 前言 问题描述 可能需要的知识 MATLAB代码.注释与分析 分析说明 消元过程 回代过程 MATLAB代码 输入命令 进阶程序 后记 前言 我这个人是比较懒的,不太愿意写blog.但是有一天看 ...

  10. Gauss 消元法求解线性方程组

    Gauss 消元法求解线性方程组 内容 消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其代入到另一方程中,这就消去了一未知数,得到一解:或将方程组中的一方程倍乘某个常数加到另外一 ...

最新文章

  1. 当前主要使用的python版本_如何获取当前使用的Python版本信息?(代码示例)
  2. 九丶青龙运行聚看点教程
  3. android内容显示不出来,android – listview不显示任何内容并隐藏数据
  4. [css] 为什么说css的选择器一般不要超过三级?
  5. 分享几个大数据相关岗位的职责和面试问题
  6. 【python】随机采样的两种方法
  7. Rational Rose及RequisitePro安装注意事项
  8. java中注释的嵌套,java – 使用mybatis注释获取嵌套对象
  9. 如何实现Outlook 2010 下载邮件后自动删除服务器上的邮件
  10. 传输信道加密Stunnel配置
  11. html5课件动画制作,ppt如何制作课件动画
  12. “腾讯再有本事,也要出海讨生活”
  13. matlab二项式,动态规划 – 计算二项式系统 —MATLAB代码 – 算法网
  14. 【PS】ps基础绘画球体
  15. 爱加密:终止手游之殇,全面解决手游安全问题
  16. css斜切角/内阴影
  17. [SV] ignore_bins 用法
  18. gradient设置上下渐变_CSS3 渐变
  19. Vanish/squid
  20. 电子阅览室使用云终端解决方案的重要性

热门文章

  1. 我想加入阿里,我该怎么做?
  2. Android应用内存泄露分析以及优化方案
  3. crypto 乱码_base64编码加密解密程序,输出有乱码,为什么?
  4. 让计算机工作起来教学反思,计算机教学反思
  5. php api 在线编辑导出,api在线管理,调试,文档生成工具之Apizza
  6. java cstring_Java CString類代碼示例
  7. go语言项目目录文件的管理样式
  8. delphi 2010 mysql_DELPHI 10.2 TOKYO搭建LINUX MYSQL开发环境
  9. 网络驱动器映射成功但无法更新文件_FTP映射网络驱动器-ExpanDrive for mac
  10. mobx中跟新了数据视图没变化_如何做一个好的大数据平台架构