行列式求解,高斯消元法

程序部分

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);
  endfor
endfunction

参数: A 输入系数矩阵

b 右端项

程序原理就是利用基础行列式变换构造一个三角形矩阵,然后三角形矩阵按照逆序分别求出x4 x3 x2 x1得到原始解。

示例

输入
A =

   1   1   1   1
  -1   2  -3   1
   3  -3   6  -2
  -4   5   2  -3

b =

   10
   -2
    7
    0

输出
ans =

   1
   2
   3
   4

局限性是 :高斯消去法无法处理输入矩阵A(i,i)=0的情况,而且使用过程中不稳定因素也比较大,属于基本的求值法。

时间: 2025-01-12 17:08:32

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

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

高斯消元法的弊端就是针对系数矩阵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(

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

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

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

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

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).在矩

@算法 - [email&#160;protected] matrix - tree 定理(矩阵树定理)

目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 定理主体@ @证明 part - [email protected] @证明 part - [email protected] @证明 part - [email protected] @证明 part - 4@ @2 - 一些简单的推广@ @3 - 例题与应用@ @0 - 参考资料@ MoebiusMeow 的讲解(超喜欢这个博主的!) 网上找的另外一篇讲解 @0.5 - 你所需要了解的线性代数知识@ 什么是矩阵

[算法课][分治]寻找凸包 (Convex Hull)

凸包问题是算法中经典的题目了,最近算法课讲分治问题时提到了Convex Hull,算法导论的书上也花了篇幅讨论了Convex Hull的求解,主要是Graham方法. 为了能更好地理解分治和Graham这两种解法,我决定自己动手把代码写一遍. 然而,在写之前,我发现我大一学的用行列式求解由三个点围城的三角形面积已经忘得差不多了,现在补充一下: 利用这个计算结果来判断点p3在p1p2直线的左侧还是右侧 下面是分治算法求解: #include <iostream> #include <alg

利用“三角化”计算行列式快速求解程序(验证过很多题目的,绝对准确)

#include<iostream>#include<cmath>using namespace std;void main(){ //输入行列式开始 int n,i,j,a[10][10],T[10],max[10],b[10],k,q,p; float t[10][10],c,sum=-1; cout<<"阶数:"; cin>>n; cout<<"行列式:"<<endl; for(i=1;i

行列式 &amp; 高斯消元求解行列式

行列式 \[D = \left| \begin{array}{c} a_{11} & a_{12} & a_{13} \a_{21} & a_{22} & a_{23} \a_{31} & a_{32} & a_{33} \\end{array} \right|\] 上图是一个三阶行列式,行列式是形如上图的一个东西,简记为: \(det(a_{ij})\), 其中\(a_{ij}\)是行列式的第\(ij\)元. 一个n阶行列式的值为: \[\sum (-1)