行列式求解,列主元高斯消元法

高斯消元法的弊端就是针对系数矩阵A,当遇到A(n,n)=0的情况时边无法处理(出现除0错误),以及有效减少计算机在处理浮点运算时出现舍入误差。

列主消元法代码:

function  [x]=ext_gauss(A,b)
  n=size(A,1);
  for k=1:n-1
    [value,index]=min(abs(A(k:n,k)));
    index+=k-1;
    if value==0
      break
    endif
    A([k,index],:)=A([index,k],:);
    b([k,index])=b([index,k]);
    %%gause
    m=A(k+1:n,k)/A(k,k);
    A(k+1:n,k+1:n)-=m*A(k,k+1:n);
    A(k+1:n,k)=zeros(n-k,1);
    b(k+1:n)-=m*b(k);
    %%end gauss
  endfor

  x=zeros(n,1);
  x(n)=b(n)/A(n,n);
  for k=n-1:-1:1
    x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
  endfor
endfunction

解决了高斯消元法中存在不能消元的现象。 本程序只能处理满秩系数矩阵。

时间: 2024-10-18 09:34:24

行列式求解,列主元高斯消元法的相关文章

行列式求解,高斯消元法

程序部分 gauss.m function [x]=gauss(A,b) n=size(A,1); for k=1:n-1 m=A(k+1:n,k)/A(k,k); A(k+1:n,k+1:n)-=m*A(k,k+1:n); A(k+1:n,k)=zeros(n-k,1); b(k+1:n)-=m*b(k); endfor x=zeros(n,1); x(n)=b(n)/A(n,n); for k=n-1:-1:1 x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);

最小二乘法+列主元高斯消元法

声明: 现在发现每写一篇随笔,就要在前面添加些牢骚话,各位看客如果嫌烦,直接绕道吧. 近期重新拾起C语言,因为工作的需要. 图像这个行当,matlab可以作为测试,但是真正应用的话还得转成C,所以这就是我这段时间苦逼的开始. 因为需要用到多项式变换,其中的系数求解又牵涉到线性方程组和最小二乘法的求解,所以在此,单开小灶来讲解最小二乘法和列主元高斯消元法. 一.最小二乘法 有关最小二乘法的详细介绍可以参考维基百科: 最小二乘法 相信有点数学功底的人都能看懂,这里不加详解. 在此贴上C函数代码 1

矩阵算法 高斯消元 行列式 矩阵的秩

今天学习一下矩阵的基本算法 高斯消元是解线性方程组的有力工具. 基本思想是通过将增广矩阵经过行初等变化变成简化阶梯形矩阵. 下面采用的是列主元高斯消元法,复杂度为O(n^3). 很容易根据高斯消元法的过程得出行列式和秩的算法. 代码: /********************************************************* * ------------------ * * author AbyssalFish * ***************************

行列式 矩阵 重难点

把行列式与矩阵的基础给拾起来. 未完待续. 1. 行列式的递归定义与逆序对定义是等价的. 2. 行列式的性质 3. 三角行列式, 行列式求值, 高斯消元法 4. 奇阶反对称行列式 5. 例6. 6. 范徳蒙行列式 习题30. 习题44. 7. 一个分块技巧 文艺计算姬. 8. 递推思想 轮状病毒. 习题42. 习题39. 习题43. 9. 克拉默法则 10. 三角形面积 11. 习题28. 12. 矩阵乘法的性质 13. 坐标变换 旋转 14. 矩阵乘积的行列式 15. 伴随矩阵 16. 逆矩阵

机器学习--线性代数基础

关闭 yunqishequ1的博客 目录视图 摘要视图 订阅 管理博客 写新文章 评论送书 | 7月书讯:众多畅销书升级!      CSDN日报20170727--<想提高团队技术,来试试这个套路!>      评论送书 | 机器学习.Java虚拟机.微信开发 机器学习--线性代数基础 2017-07-28 14:05 6人阅读 评论(0) 收藏 编辑 删除  分类: 机器x 目录(?)[+] 原文地址 数学是计算机技术的基础,线性代数是机器学习和深度学习的基础,了解数据知识最好的方法我觉得

机器学习教程 一-不懂这些线性代数知识 别说你是搞机器学习的

原文:http://www.shareditor.com/blogshow/?blogId=1 数学是计算机技术的基础,线性代数是机器学习和深度学习的基础,了解数据知识最好的方法我觉得是理解概念,数学不只是上学时用来考试的,也是工作中必不可少的基础知识,实际上有很多有趣的数学门类在学校里学不到,有很多拓展类的数据能让我们发散思维,但掌握最基本的数学知识是前提,本文就以线性代数的各种词条来做一下预热,不懂的记得百度一下. 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链

[opencv]常用阵列操作函数总结

/*=========================================================================*/ // 阵列操作 /*=========================================================================*/ 基本矩阵和图像运算符 ———————————————————————————————————————————————————————————————————————————

bzoj1002 生成树计数 找规律

这道题第一眼是生成树计数,n是100,是可以用O(n^3)的求基尔霍夫矩阵的n-1阶的子矩阵的行列式求解的,但是题目中并没有说取模之类的话,就不好办了. 用高精度?有分数出现. 用辗转相除的思想,让它不出现分数.但过程中会出现负数,高精度处理负数太麻烦. 用Python打表?好吧,Python还不熟,写不出来..... 所以,如果这道题我考场上遇到,最多用double骗到n<=20的情况的部分分. 最终只能求助于题解了... 好像是通过观察行列式的特点,推导出关于答案f(n)的递推式(f(n)=

HDU4998 Rotate (2014年鞍山赛区网络赛B题)

1.题目描述:点击打开链接 2.解题思路:本题属于几何变换专题,一开始想着随便枚举两个点,然后都进行一下旋转变换,最后利用原始点和旋转后的点所在直线的中垂线的交点求解.然而发现精度损失很大,而且可能有特殊情况没有考虑到.学习了一下几何变换的方法. 由于旋转操作相当于对一个点构成的矩阵和一个旋转矩阵做乘法运算.最基本的旋转变换就是任意一个点围绕原点进行逆时针旋转.如果改成围绕某个定点(x0,y0)进行旋转可以分解为三步:将被旋转点平移(-x0,-y0),进行基本旋转变换,再平移(x0,y0).在矩