MATLAB列主元消去法function x = gauss(A,b) int AB=[A,b]; n=length(b);RA=rank(A);RB=rank(B);d=RB-RA;if d>0disp('此方程组无解')endif RA==RB&RA~=ndisp('此方程组有无穷解')endif RA==RB&RA==ndisp('此方程组有唯一解')[n,n]=size(A);
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/05 22:01:13
MATLAB列主元消去法function x = gauss(A,b) int AB=[A,b]; n=length(b);RA=rank(A);RB=rank(B);d=RB-RA;if d>0disp('此方程组无解')endif RA==RB&RA~=ndisp('此方程组有无穷解')endif RA==RB&RA==ndisp('此方程组有唯一解')[n,n]=size(A);
MATLAB列主元消去法
function x = gauss(A,b)
int A
B=[A,b];
n=length(b);
RA=rank(A);
RB=rank(B);
d=RB-RA;
if d>0
disp('此方程组无解')
end
if RA==RB&RA~=n
disp('此方程组有无穷解')
end
if RA==RB&RA==n
disp('此方程组有唯一解')
[n,n]=size(A);
x=zeros(n,1);
for k = 1:n-1
[piv,r] = max(abs(B(k:n,k))); %找列主元所在子矩阵的行r
r = r + k - 1; % 列主元所在大矩阵的行 ,
if r>k
temp=B(k,:);
B(k,:)=B(r,:);
B(r,:)=temp;
end
end
if B(k,k)==0,error('对角元出现0'),end
% 把增广矩阵消元成为上三角
for p = k+1:n
B(p,:)=B(p,:)-B(k,:)*B(p,k)/B(k,k);
end
end
% 解上三角方程组
A =B(:,1:n); b = B(:,n+1);
x(n) = b(n)/A(n,n);
for k = n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k) = x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
运行
A=[0.729,0.8100,0.9000;1.000,1.000,1.000;1.331,1.210,1.100];
b=[0.6867;0.8338;1.000];
guass(A,b)
它的答案应该是
x=
0.2246
0.2812
0.3280
MATLAB列主元消去法function x = gauss(A,b) int AB=[A,b]; n=length(b);RA=rank(A);RB=rank(B);d=RB-RA;if d>0disp('此方程组无解')endif RA==RB&RA~=ndisp('此方程组有无穷解')endif RA==RB&RA==ndisp('此方程组有唯一解')[n,n]=size(A);
问题出在点除上(3处),如
B(p,:)=B(p,:)-B(k,:)*B(p,k)/B(k,k); 应为 B(p,:)=B(p,:)-B(k,:)*B(p,k)./B(k,k)
x(n) = b(n)/A(n,n); 应为 x(n) = b(n)./A(n,n);
x(k)=x(k)/A(k,k); 应为 x(k)=x(k)./A(k,k);
>> A=[0.729,0.8100,0.9000;1.000,1.000,1.000;1.331,1.210,1.100];
>>b=[0.6867;0.8338;1.000];
>>gauss(A,b)
ans =
A^2/2
此方程组有唯一解
x =
0.2245
0.2814
0.3279