function solution =Gauss(A,b) %高斯消去法function solution =Gauss(A,b) % A为方程组的系数矩阵 b为方程组的右端项; n = length(b); for k=1:n-1 for i=k+1:n mik=A(i,k)/A(k,k);%消元因子 for j=k+1:n A(i,j)=A(i,j)-mik*A(k,j); end b(i)=b(i)-mik*b(k); end end solution(n)=b(n)/A(n,n); for i=n-1:-1:1 for j=i+1:n solution(i)=solution(i)+A(i,j)*solution(j); end solution(i)=(b(i)-solution(i))/A(i,i); end end
function solution=GaussFunmethod(gauss, Presion) % gauss为用户输入的增广矩阵 % Precision为用户所输入的精度要求 if nargin==2 try digits(Precision); cath disp('你输入的精度有误'); digits(10); end else digits(10); end Ab=vpa(gauss)%显示输入的增广矩阵 row=size(Ab,1); col=size(Ab,2); if ndims(Ab)~=2|(col-row)~=1 disp('矩阵的大小有误'); return end if det(gauss(:,1:row))==0 disp('该方程的系数矩阵行列式为零'); return end % 消元法 for i=1:row j=i; while Ab(j,i)==0 j=j+1; end temp=Ab(i,:); Ab(i,:)=Ab(j,:); Ab(j,:)=temp; for k=i+1:row Ab(k,:)=vpa(Ab(k,:)-Ab(i,:)*Ab(k,i)/Ab(i,i)); end end %% 回代过程 for i=row:-1:1 temp=Ab(i,col); for k=i+1:row temp=vpa(temp-solution(k)*Ab(i,k)); end solution(i)=vpa(temp/Ab(i,i)); end end
function X=Gauss_Mainmethod(A,b) %列主元方法 计算线性方程组 %A为方程组的系数矩阵 b为方程组的右端项; zengguang=[A b]; Ab = [A,b] n=length(b); ra=rank(A); rz=rank(zengguang); temp1=rz-ra; if temp1>0 disp('方程组无一般意义下的解,系数矩阵与增广矩阵秩不同.') return end if (ra==rz) if (ra==n) X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 [Y,j]=max(abs(zengguang(p:n,p))); C=zengguang(p,:); zengguang(p,:)= zengguang(j+p-1,:); zengguang(j+p-1,:)=C; for k=p+1:n m= zengguang(k,p)/ zengguang(p,p); zengguang(k,p:n+1)= zengguang(k,p:n+1)-m* zengguang(p,p:n+1); end end b=zengguang(1:n,n+1);A=zengguang(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 else disp('方程组为欠定方程组') end X = X'; end
function x=principal_element(A,b) %列主元方法 计算线性方程组 %A为方程组的系数矩阵 b为方程组的右端项; [rows,~]=size(A); aug_mat=[A,b];Ab= [A,b] for i=1:rows temp_list=aug_mat(:,i); temp_list(1:max(1,i-1))=0; [~,exchange_pos]=max(abs(temp_list)); aug_mat([i,exchange_pos],:)=aug_mat([exchange_pos,i],:); coefficient=aug_mat(:,i); coefficient=-coefficient./coefficient(i); coefficient(i)=0; aug_mat=coefficient*aug_mat(i,:)+aug_mat; end divisor=aug_mat((1:rows)+(0:rows:(rows*(rows-1))))'; aug_mat=aug_mat./divisor; x=aug_mat(:,rows+1:end); x =x'; end
function x = GaussJordan(A, b)%function x = GaussJordan(A, b)%GaussJordan消去法%A为方程组的系数矩阵 b为方程组的右端项;n = length(b);if size(A, 1) ~= n || size(A, 2) ~= nerror('Matrix-vector size mismatch.');end Ab = [A, b]% Perform Gauss-Jordan elimination% augmented matrix A = [A, b];for k = 1 : nA(k, :) = A(k, :) / A(k, k);for i = k + 1 : n m = A(i, k) / A(k, k);A(i, :) = A(i, :) - m * A(k, :);end endfor k = n : -1 : 1for i = k - 1 : -1 : 1m = A(i, k) / A(k, k);A(i, :) = A(i, :) - m * A(k, :);end end x = A(:, n + 1);x =x';end
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者