用列主元消去法分别解方程组Ax=b,用MATLAB程序实现(最有效版)
数值分析里面经常会涉及到用MATLAB程序实现用列主元消去法分别解方程组Ax=b
具体的方法和代码以如下方程(3x3矩阵)为例进行说明:
用列主元消去法分别解方程组Ax=b,用MATLAB程序实现:
(1)

1、 实现该方程的解的MATLAB代码可以分为两种,一种是入门级别的,只是简单地计算出这道题即可,第二种是一种通用的代码,可以实现很多3x3矩阵的方程解,写好以后只需要改不同矩阵里的元素即可算出相应的解,需要建立在对MATLAB比较熟悉的基础上,具体如下:
第一种代码实现—入门级:
A=[3.01,6.03,1.99,;1.27,4.16,-1.23,;0.987,-4.81,9.34]
A1=[3.01,6.03,1.99,1;1.27,4.16,-1.23,1;0.987,-4.81,9.34,1]
B1=A1(1,1:4)
C1=A1(2,1:4)
D1=A1(3,1:4)
E1=-1.27/3.01*B1+C1
F1=-0.987/3.01*B1+D1
p1=E1(1,2)
q1=F1(1,2)
if (abs(p1)>=abs(q1))
a1=p1
a2=q1
FF1=E1
EE1=F1
else
a1=q1
a2=p1
FF1=F1
EE1=E1
end
G1=-a2/a1*FF1+EE1
H1=[E11;FF1;G1]
J1=H1(1:3,1:3)
b1=H1(1:3,4)
x1=J1\b1
第二种代码实现如下—熟练通用级:
A=[3.01,6.03,1.99,;1.27,4.16,-1.23,;0.987,-4.81,9.34]
A1=[3.01,6.03,1.99,1;1.27,4.16,-1.23,1;0.987,-4.81,9.34,1]
B1=A1(1,1:4)
C1=A1(2,1:4)
D1=A1(3,1:4)
f1=A1(1,1)
f2=A1(2,1)
f3=A1(3,1)
if (abs(f1)>=abs(f2))
if(abs(f1)>=abs(f3))
f11=f1
E11=B1
f22=f2
E12=C1
f33=f3
E13=D1
else
f11=f3
E11=D1
f22=f1
E12=B1
f33=f2
E13=C1
end
end
if(abs(e2)>=abs(e3))
f11=f2
E11=C1
f22=f1
E12=B1
f33=f3
E13=D1
else
f11=f3
E11=D1
f22=f1
E12=B1
f33=f2
E13=C1
end
E1=-f22/f11*E11+E12
F1=-f33/f11*E11+E13
p1=E1(1,2)
q1=F1(1,2)
if (abs(p1)>=abs(q1))
a1=p1
a2=q1
FF1=E1
EE1=F1
else
a1=q1
a2=p1
FF1=F1
EE1=E1
end
G1=-a2/a1*FF1+EE1
H1=[E11;FF1;G1]
J1=H1(1:3,1:3)
b1=H1(1:3,4)
x1=J1\b1
输出结果如下:
A =
3.0100 6.0300 1.9900
1.2700 4.1600 -1.2300
0.9870 -4.8100 9.3400
A1 =
3.0100 6.0300 1.9900 1.0000
1.2700 4.1600 -1.2300 1.0000
0.9870 -4.8100 9.3400 1.0000
B1 =
3.0100 6.0300 1.9900 1.0000
C1 =
1.2700 4.1600 -1.2300 1.0000
D1 =
0.9870 -4.8100 9.3400 1.0000
f1 =
3.0100
f2 =
1.2700
f3 =
0.9870
f11 =
3.0100
E11 =
3.0100 6.0300 1.9900 1.0000
f22 =
1.2700
E12 =
1.2700 4.1600 -1.2300 1.0000
e33 =
0.9870
E13 =
0.9870 -4.8100 9.3400 1.0000
e11 =
1.2700
E11 =
1.2700 4.1600 -1.2300 1.0000
e22 =
3.0100
E12 =
3.0100 6.0300 1.9900 1.0000
e33 =
0.9870
E13 =
0.9870 -4.8100 9.3400 1.0000
E1 =
0 -3.8295 4.9052 -1.3701
F1 =
0 -8.0430 10.2959 0.2228
p1 =
-3.8295
q1 =
-8.0430
a1 =
-8.0430
a2 =
-3.8295
FF1 =
0 -8.0430 10.2959 0.2228
EE1 =
0 -3.8295 4.9052 -1.3701
G1 =
0 0 0.0030 -1.4762
H1 =
1.2700 4.1600 -1.2300 1.0000
0 -8.0430 10.2959 0.2228
0 0 0.0030 -1.4762
J1 =
1.2700 4.1600 -1.2300
0 -8.0430 10.2959
0 0 0.0030
b1 =
1.0000
0.2228
-1.4762
x1 =
1592.6
-631.9
-493.6
可以看出:两种代码的区别在于列主元方法中每一步对每一列最大主元的判断上面,第一种直接看出来,所以就用具体的数字代替了,而第二种对变量进行了一般性的定义和赋值,通过if语句进行大小判断,这样的方法会比较通用,建立在对于MATLAB熟练的基础上。
用列主元消去法分别解方程组Ax=b,用MATLAB程序实现(最有效版)的更多相关文章
- 【线性代数】2-1:解方程组(Ax=b)
title: [线性代数]2-1:解方程组(Ax=b) toc: true categories: Mathematic Linear Algebra date: 2017-08-31 15:08:3 ...
- 列主元消去法&全主元消去法——Java实现
Gauss.java package Gauss; /** * @description TODO 父类,包含高斯列主元消去法和全主元消去法的共有属性和方法 * @author PengHao * @ ...
- matlab 解方程组
1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=in ...
- 详解什么是平衡二叉树(AVL)(修订补充版)
详解什么是平衡二叉树(AVL)(修订补充版) 前言 Wiki:在计算机科学中,AVL树是最早被发明的自平衡二叉查找树.在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树.查 ...
- 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)
转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取 (Matlab 程序详解) ...
- 解同余式ax ≡ c(mod m)
将式子变形为 ax-c=my 可以看出原式有解当且仅当线性方程ax-my=c有解 设g = gcd(a, m) 则所有形如ax-my的数都是g的倍数 因此如果g不整除c则原方程无解. 下面假设g整除c ...
- exgcd 解同余方程ax=b(%n)
ax=n(%b) -> ax+by=n 方程有解当且仅当 gcd(a,b) | n ( n是gcd(a,b)的倍数 ) exgcd解得 a*x0+b*y0=gcd(a,b) 记k=n/gc ...
- 解不定方程ax+by=m的最小解
给出方程a*x+b*y=c,其中所有数均是整数,且a,b,c是已知数,求满足那个等式的x,y值?这个方程可能有解也可能没解也可能有无穷多个解(注意:这里说的解都是整数解)? 既然如此,那我们就得找出有 ...
- hdu4975 网络流解方程组(网络流+dfs判环或矩阵DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4975 A simple Gaussian elimination problem. Time Limit: 20 ...
随机推荐
- java之静态方法,静态变量
在自动化测试中,经常会用到静态方法和静态变量.那么什么是静态方法和静态变量呢?以及在什么情况下使用呢?下面来说一说 静态方法和静态变量是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象 ...
- hadoop-1.2.1分布式配置启动问题
关键配置(core-site.xml 和hdfs-site.xml)(这里只是针对与HDFS,没有启动MapReduce): core-site.xml <?xml version=" ...
- Nginx自定义模块编写:根据post参数路由到不同服务器
Nginx自定义模块编写:根据post参数路由到不同服务器 2014-05-05 15:27 blogread IT技术博客 字号:T | T Nginx可以轻松实现根据不同的url 或者 get参数 ...
- 使用js函数格式化xml字符串带缩进
遇到了一个做soap的API的操作,中途需要说明xml的组装模式等, 如上图,组装产生的mxl代码药格式化并展示.由于是在前端做的,所以需要将字符串将xml进行格式化并输出,找到别人写的算法稍加更改并 ...
- 通过遍历JSON键值对获取包含某字符串的键的值_电脑计算机编程入门教程自学
首发于:Aardio通过遍历JSON键值对获取包含某字符串的键的值_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=429 ...
- 卡常三连(快读快写+re)
快读: inline int in() { char ch; ; '))); a*=;a+=ch-'; ,a+=ch-'; return a; } 快写: inline void out(int a) ...
- php ecshop 二级域名切换跳转时session不同步,解决session无法共享同步导致无法登陆或者无法退出的问题
echshop基础上做了单点登录的 一级域名与二级域名 退出时 清空session 都是一级域名的session 因为二级域名的session是设置在二级域名上的 echshop基础上没有做单点登录的 ...
- hadoop生态搭建(3节点)-11.storm配置
# http://archive.apache.org/dist/storm/apache-storm-1.1.0/ # ======================================= ...
- 2.1 摄像头V4L2驱动框架分析
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤: 一.V4L ...
- centos7.3 vsftpd 多用户配置
1. 安装vsftpd及pam认证服务软件 yum install vsftpd* -y yum install pam* libdb-utils libdb* --skip-broken -y #设 ...