首页 分享 MATLAB之高斯消元法

MATLAB之高斯消元法

来源:花匠小妙招 时间:2024-12-15 07:42

第一种方法:文件名gauss1.m

function x=gauss1(A,b)

%参量说明:A,系数矩阵;B,常数列向量;zg,增广矩阵

%将增广矩阵化为上三角,再回带求解x

%此方法较为常规,将zg(k,k)元素乘以-zg(i,k)/zg(k,k)加到第i行

%从1:n-1列,主对角元素的以下行,通过两层循环来遍历

zg=[A,b];

zj=rref(zg);

n=length(b);

ra=rank(A);

rz=rank(zg);

temp=rz-ra;

if temp>0

disp('无解');

return;

end

if ra==rz

if ra==n

x=zeros(n,1);

for p=1:n-1

for k=p+1:n

m=zg(k,p)/zg(p,p);

zg(k,p:n+1)=zg(k,p:n+1)-m*zg(p,p:n+1);

end

end

b=zg(1:n,n+1);

A=zg(1:n,1:n);

x(n)=b(n)/A(n,n);

for q=n-1:-1:1

x(q)=(b(q)-sum(A(q,q+1:n)*x(q+1:n)))/A(q,q);

end

end

end

第二种方法:文件名gauss2.m

function x=gauss2(A,b)

%参量说明:A,系数矩阵;B,常数列向量;zg,增广矩阵

%将增广矩阵化为上三角,再回带求解x

%该方法为:zg(k,k)右下角的n-1阶方阵为第k列除zg(k,k)元素外的列向量除以zg(k,k)

%乘以第K行除了zg(k,k)元素外的行向量的值

n=length(b);

zg=[A,b];

for k=1:(n-1)

zg((k+1):n,(k+1):(n+1))= zg((k+1):n,(k+1):(n+1))-zg((k+1):n,k)/zg(k,k)*zg(k,(k+1):(n+1));

zg((k+1):n,k)=zeros(n-k,1);

end

x=zeros(n,1);

x(n)=zg(n,n+1)/zg(n,n);

for k=n-1:-1:1

x(k,:)=(zg(k,n+1)-zg(k,(k+1):n)*x((k+1):n))/zg(k,k);

end

脚本文件:gaussscript.m

clc;

%test1

A=[2,4,-6;1,5,3;1,3,2];

b=[-4;10;5];

x=gauss1(A,b)

x=gauss2(A,b)

%test2

A=[2,3,4;3,5,2;4,3,30];

b=[6,5,32]';

x=gauss1(A,b)

x=gauss2(A,b)

运行结果:

gaussscript

x =

-3

2

1

x =

-3

2

1

x =

-13

8

2

x =

-13

8

2

相关知识

django用户注册、登录、注销和用户扩展的示例资源
【图像分割】基于阈值法实现大脑图像分割附Matlab代码
基于MATLAB的农业病虫害识别系统
MATLAB植物虫害识别
【优化覆盖】基于matlab入侵杂草和花授粉混合算法无线传感器覆盖优化问题【含Matlab源码 1328期】
【病虫害识别】SVM病虫害识别系统【含GUI Matlab源码 2429期】
模态分析子空间识别方法实践指南:高效掌握系统辨识技术
【疾病识别】SVM农作物叶子虫害识别与分类【含GUI Matlab源码 1322期】
matlab 玫瑰花
【疾病分类】SVM农作物叶子虫害识别与分类【含Matlab源码 624期】

网址: MATLAB之高斯消元法 https://www.huajiangbk.com/newsview1106328.html

所属分类:花卉
上一篇: 辛苦=快乐作文400字
下一篇: 勇敢的玫瑰花公主想象作文

推荐分享