两种消去法在matlab中的实现

两种消去法的实现主要是,通过函数的实现,传入参数来实现的。如有其他需要,请另行修改代码

高斯消去法函数实现

算法设计

  • 传入参数为矩阵A,向量b,以及维度n
  • 传出参数是运行的时间
  • 通过两个循环实现,一个是消元,一个是回代
  • 第一个循环,从第一行到第n-1行,对之后的每一行做消元处理。当出现了第k行的第k个元素为0时,说明该矩阵有无数个解,弹出错误并结束函数运行
  • 第二个循环是从最后一行开始,通过回代,从最后一行得出x的值
  • 时间的计算问题,通过tic跟toc,得到了两个循环所需要的时间并返回

代码如下:

function time = Gauss(n, A, b)%B = [A b];tic;for k = 1:n-1if A(k,k) == 0disp('the matrix has too many answers, please change the matrix');returnend    for i = k+1:nm = A(i, k) / A(k , k);A(i, k) = 0;A(i, k+1:n) = A(i, k+1:n) - m*A(k, k+1:n);b(i) = b(i) - m*b(k);endend%回代取得结果x = zeros(n,1);if A(n, n) == 0disp('the matrix has too many answers, please change the matrix');returnendx(n) = b(n) / A(n,n);for i = n-1:1x(i) = (b(i) - sum(A(i,i+1:n) * x(i+1:n)))/A(i,i);endtoc;time = toc;
end

列主元消去法

算法设计

  • 主要的操作与高斯消去法想类似
  • 区别在于:每次在第k行消元的时候,将第k行的元素与拥有第k列最大元素的行进行交换,再进行消元

代码如下:

function time = ColumnPivot(n, A, b)%B = [A b];tic;for k = 1:n-1max = -1;m = k;for j = k+1:nif A(j, k) > maxmax = A(j, k);m = j;endendA([k m], :) = A([m k], :);temp = b(m);b(m) = b(k);b(k) = temp;%判断是否是0if A(k,k) == 0disp('the matrix has too many answers, please change the matrix');returnend    for i = k+1:nm = A(i, k) / A(k , k);A(i, k) = 0;A(i, k+1:n) = A(i, k+1:n) - m*A(k, k+1:n);b(i) = b(i) - m*b(k);endend%回代取得结果x = zeros(n,1);if A(n, n) == 0disp('the matrix has too many answers, please change the matrix');returnendx(n) = b(n) / A(n,n);for i = n-1:1x(i) = (b(i) - sum(A(i,i+1:n) * x(i+1:n)))/A(i,i);endtoc;time = toc;
end

特殊说明

  • 具体算法的内容,其实在教科书或者在其他博客上已经有很详细的说明了,在这里就不再重复了。
  • 尽管实现的函数都是返回时间,但是只需要将返回的参数改成x,即可返回最后的解。当然在计算机中,如果是随机生成的矩阵的话,可能会出现误差,此时得到的不是精确解,而是近似解

高斯消去法与列主元消去法相关推荐

  1. 数值分析3-解线性方程组的高斯消去法、LU分解法及列主元消去法的matlab程序和调试方法

    对于形如Ax=b的线性方程组,在线性代数中是通过求逆的方式求解的,即x=A-1b,而在数值分析中,解线性方程组的方法是通过直接法或者迭代法来实现的,今天写的三个程序都属于直接法,分别为高斯消去法.LU ...

  2. 高斯列主元消去法解线性方程组

    最近在看惯导的东西,然后想要用C++解惯导控制方程,然后就重头把C++解方程组这方面的知识回顾了一下,首先就是高斯列主元消去法,这个方法还算实用,这里以3*3的矩阵为例,里面注释很详细,各位小白可以参 ...

  3. 数值分析-列主元消去法

    列主元消去法 列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在进行第 k(k=1,2,-,n-1)步消元时,从第k列的 akk及其以下的 ...

  4. 高斯列主元消去法——C实现

    1. 高斯消去法算法原理 消去法是求解线性方程组的一种方法,它对增广矩阵进行初等行变换得到一个可回代求解的矩阵,然后再进行回代求得一组解向量. 高斯列主元法在使用初等行变换消元之前增加了选主元的过程. ...

  5. 【计算方法】#01 高斯消去法和列主元高斯消去法的原理简介及C++实现

    [计算方法]#01 高斯消去法和列主元高斯消去法的原理简介及C++实现 1. 高斯消去法 1.1 算法的适用条件 1.2 算法步骤和公式 1.3 算法复杂度分析 1.4 算法的C++实现 2 列主元高 ...

  6. 列主元消去法例题详解_列主元消去法

    列主元消去法 ________ 实验类型: ________________ 同组学生姓名: __________ 一.实验目的和要求(必填) 二.实验内容和原理(必填) 三.主要仪器设备(必填) 四 ...

  7. 计算方法实验(五):高斯列主元消去法

    Gauss列主元消去法数学原理 高斯(Gauss)列主元消去法:对给定的nnn阶线性方程组Ax=bAx = bAx=b,首先进行列主元消元过程,然后进行回代过程,最后得到解或确定该线性方程组是奇异的. ...

  8. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  9. 数值分析原理课程实验——(高斯)Gauss列主元消去法

    高斯(Gauss)列主元消去法 方法概要 待求问题 程序流程 程序代码 /*Matlab函数 function Result = Gauss(n, A, b)for k = 1:n-1max = ab ...

最新文章

  1. SEL | 植物通过根系分泌物招募假单孢菌协助抵抗地上部病原菌侵染
  2. 博客作业02---线性表
  3. mysql 5.5.35 单机多实例配置详解_MySQL 5.5.35 单机多实例配置详解
  4. MySQL Incorrect string value: 有可能是字符串长度不够了
  5. 【HihoCoder - 1502】最大子矩阵(二维前缀和,尺取)
  6. TCP/IP协议--ARP协议(有了IP地址为什么还需要ARP协议)
  7. iOS12.3正式版发布 iOS13亮相进入倒计时
  8. 突然!格力电器向全体股东分红36.1亿元 董明珠得2600万
  9. 这个功能是怎么实现的
  10. 第五章 基于引用计数的内存管理
  11. AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
  12. ekho--TTS语音引擎
  13. HTML5基础网页设计(加代码CSS)
  14. 前端项目部署到服务器
  15. 夏令营/保研/考研复试被问到优缺点怎么回答?
  16. ios ping服务器
  17. Windows10安装报错 由于存在受损的安装文件
  18. vue动态绑定背景图片
  19. python微信抢红包神器_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...
  20. 字节跳动「突袭」美团,抖音竟然要做外卖

热门文章

  1. qsort 函数的使用
  2. 查看java web日志_java web 日志详细
  3. OpenGL---GLUT教程(三) GLUT窗口设置
  4. 微信二维码转换成链接
  5. [:, None]的作用是什么?
  6. [Java] Comparator接口/compare方法的介绍与使用
  7. NetworkX画图:nx.draw_networkx(函数详解)
  8. 计算两个日期之间所间隔天数的快速算法
  9. flowable中强制结束流程
  10. 【slowfast中ava数据集处理】ava数据集,将原视频裁剪为15分钟每段