function [x] = LMain_elimination(A,b,prec,n)
%%
% 列主消元法求解线性代数方程组 Ax = b的MATLAB实现
% A为待求解方程组的系数矩阵(要求A为非奇异系数矩阵)
% b为方程组右端常数项(列向量)
% prec为计算过程中的控制常数,当某个选主元或完成消元后的系数小于prec时就停止计算
% n为计算过程中的有效数字长度(用vpa函数保留)
%%
% x为求解的结果
%%
fprintf('列主消元法求解线性方程组 Ax = b');
[col,rol] = size(A); % 求方程组系数矩阵的行数和列数,这里col == rol
M = zeros(col,rol); % 用0初始化M矩阵
x = zeros(col,1); % 用0初始化x向量
%%
% 消元计算:对k = 1,2,…,n-1依次计算
for k = 1:col-1
[maxv,r] = max(abs(A(k:n,k))); % 求第k列的最大值,用maxv保存,r记录的是从第k行起的第r行(最大值所在的行号),也就是第r + k - 1行
if (maxv < prec)
disp('主元过小,停止计算');
return;
end
r = r + k - 1; % 最大值所在的行号
A([r k],:) = A([k r],:); % 交换系数矩阵的第k行和第r行
b([r k]) = b([k r]); % 交换常数项的第k个数和第r个数(列向量)
if (vpa(A(k,k),n) == 0) % 如果出现除数为0的情况就不必再计算,跳出此函数
return;
else
M(k+1:col,k) = vpa(vpa(A(k+1:col,k),n)/vpa(A(k,k),n),n);
A(k+1:col,k+1:col) = vpa(vpa(A(k+1:col,k+1:col),n) - vpa(M(k+1:col,k),n)*vpa(A(k,k+1:col),n),n);
b(k+1:col) = vpa(vpa(b(k+1:col),n)-vpa(M(k+1:col,k),n)*vpa(b(k),n),n);
end
end
%%
% 回代求解
if (vpa(A(col,rol),n)~=0) % 如果除数不为0,就计算最后一个未知数的根
x(col) = vpa(vpa(b(col),n)/vpa(A(col,rol),n),n);
end
for k = col-1:-1:1
if (vpa(A(k,k),n) == 0) % 除数为0就跳出函数
return;
else
% 依次回代求解其余的根
x(k) = vpa(vpa(vpa(b(k),n) - vpa(A(k,k+1:col),n)*vpa(x(k+1:col),n),n)/vpa(A(k,k),n),n);
end
end
end
%%

转载于:https://blog.51cto.com/592669550/930854

列主消元法解非奇异线性方程组的MATLAB程序相关推荐

  1. 龙格库塔法解微分方程组的matlab程序,MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc...

    MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc MATLAB实例源码教程龙格库塔法求解微分方程组源代码实例题目用经典 Runge-Kutta方法求下列一阶微分方程组的近似解y1 ...

  2. 高斯消元:列主消元法

    什么是列主消元 (注: akk代表第k行第k列的权值, 以下摘自百度百科:列主消元法) 列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在 ...

  3. 高斯消元法列主消元法

    高斯消元法&&列主消元法 写在前面 高斯消元法 列主消元法 写在前面 最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析> ...

  4. python牛顿法解非线性方程组_牛顿迭代法解非线性方程组(MATLAB版)

    牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值.下面以求解最简 ...

  5. 用matlab解非线性方程组,用matlab求解非线性方程组,

    共回答了17个问题采纳率:76.5% matlab源程序为: S=solve('x1-(7+x2^2+4*x3)/12=0','x2-(11-x1^2+x3)/10=0','x3-(8-x2^3)/1 ...

  6. 利用牛顿法接非线性方程组的Matlab程序实例

    首先将线性方程组写成f(x)=0的形式,编写第一个Matlab函数 function f = fun() % 求解: % 3*x1-cos(x2*x3)-1/2 = 0 % x1^2-81*(x2+0 ...

  7. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码

    牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...

  8. matlab求解不等式方程组解集,matlab求不等式方程组的可行解

    求高手用matlab解一个三元的方程组 我算的你这个解都是无穷大.具体过程如下:第一步:建立M文件函数myf.mfunctionf=myf(x)f(1)=600+x(1)*cos(10)+x(2)*s ...

  9. fama matlab源码_用matlab程序做Fama-MacBeth回归的代码

    求[100,200]之间第二个能被15整除的整数.(用Matlab程序做) x=100:200;>>n=find(rem(x,15)==0);>>X=x(n(2))很简单的两句 ...

最新文章

  1. MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍
  2. python有什么用途和价值-Python是什么 Python的用处
  3. 谁来谈谈Google Earth的核心技术和架构?(转)
  4. Maven配置JDK编译版本
  5. python 虚拟环境 django.db 报错_jumpserver一体化安装
  6. sh脚本学习之: sh脚本 、sed、awk
  7. 手把手教你用nodejs+SQL Server2012做增删改查
  8. 电脑出货量_Q3季度全球笔记本电脑出货量增长34%,惠普出货量首次超过联想
  9. python编程基础知识体系_【汇总】Python 编程核心知识体系
  10. javascript图片轮换
  11. 华为vrrp默认优先级_华为vrrp配置
  12. cxgrid 行合并单元格_Excel合并单元格无法筛选和排序,你必须掌握这3个小技巧...
  13. 最新nodejs的开发学习实战(1)从一个博客开始
  14. 高通Thermal debug
  15. 示波器两个重要参数 - 带宽、采样率
  16. hdu 3954 Level up(成段更新)
  17. 东北师范大学计算机信息技术学院,东北师范大学计算机科学与信息技术学院2015年硕士研究生招生专业目录...
  18. Jmeter循环获取JDBC查询结果及断言数据库查询结果
  19. 手把手教萌新2:认识python交互式窗口
  20. Kali 安装 Nessus 详细过程

热门文章

  1. 阿里云盘小白羊版 v2.9.19 绿色版
  2. typecho插件库 TeStore 方便监控插件版本
  3. 仿iphone触屏手机界面
  4. Vue系列vue-router的动态路由使用(二)
  5. WordPress 主题教程 #5c:日志元数据
  6. Magento: 判断是否为手机浏览 Optimise Web's Mobile Detect Class for Magento
  7. Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南
  8. -moz火狐 (firefox)CSS
  9. php:修改目录下文档权限(777,644 )
  10. Typora如何插入公式