📄 gaosi.txt
字号:
%高斯列主消元法接方程组
a=input('请输入方程组系数矩阵a:') %输入方程组的系数矩阵(a)为方阵
disp(a)
[m,n]=size(a) %输入系数矩阵的行(m)和列(n)的大小
if m~=n %若a不是方阵显示false错误
disp('false')
end
de=det(a);
if de==0
disp('a矩阵奇异请检查!')
end
b=input('请输入b矩阵:') %输入方程组右边的矩阵b
disp(b)
xrt=b; %备注,xrt为x的结果返回值
temp=zeros(m,1);
dmax=zeros(1,1);
for k=1:n %循环次数用k控制
dmax=zeros(1,1);
row1=ones(1,1);
for row=k:n %选主元
for col=k:n
if abs(a(row,col))>dmax
dmax=abs(a(row,col));
row1=row;
end
end
if dmax==0 %若选主元素为0则显示高斯求解出错:矩阵奇异
disp('高斯求解出错:矩阵奇异')
end
if row1~=k %若选出的行位置与k不相等则换行
temp=a(k,:)
a(k,:)=a(row1,:)
a(row1,:)=temp;
temp=zeros(n,1);
temp=xrt(k)
xrt(k)=xrt(row1) %对b矩阵即x的结果矩阵换行
xrt(row1)=temp;
disp(a)
disp(xrt)
end
end
for row=k+1:m %消元计算
temp = a(row,k)/a(k,k)
xrt(row)=xrt(row)-temp*xrt(k);
for col=k:n
a(row,col)= a(row,col)-temp* a(k,col);
end
end
end
disp(a)
disp(xrt)
if a(end,end)==0 %若a矩阵最后一行一列的元素为0,则显示false错误
disp('false')
end
xrt(end)=xrt(end)/a(end,end); %回代计算x的解xrt
row=m-1;
temp=zeros(m,1);
while row>0
for col=row+1:n
temp(row)=temp(row)+a(row,col)*xrt(col)
end
xrt(row)=(xrt(row)-temp(row))/a(row,row)
row=row-1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -