关于matlab的一个小程序,谁能给一点指点,愿意将我尽有的一点分都奉送

2025-02-25 12:08:46
推荐回答(2个)
回答1:

【1】修改了一下,变动不大。

function x=Gauss_(A,b)
A=[10,-7,0;5,-1,5;-3,2,6];
b=[7;6;4]; %%%%%应该是列矩阵啊
n=length(b);
for k=1:n-1 %……消去过程……
if A(k,k)==0
disp('错误信息')
break;
end
index = [k+1:n];%用向量比用循环好
m = -A(index,k)/A(k,k); %提前定义一个较短的变量,相当于你的A(i,k)=A(i,k)/A(k,k);
A(index,index) = A(index,index) + m*A(k,index);%矩阵A消元
b(index) = b(index) + m*b(k);%矩阵b消元
end

x = zeros(n,1);%提前预置一个变量的位置,以提高运算速度
x(n) = b(n)/A(n,n);%……回代过程……
for i = n-1:-1:1
x(i) = ( b(i) - A(i,[i+1:n])*x([i+1:n]) )/A(i,i);%还是写在一起吧,比较简捷
end
x
%%%%%%%%%结束啦

运行结果:
x =

0.0000
-1.0000
1.0000

【2】验证
>> A=[10,-7,0;5,-1,5;-3,2,6];
>> b=[7;6;4];
>> X=A\b

X =

0
-1
1

【3】验证
>> Gauss_(A,b)

x =

0.0000
-1.0000
1.0000

回答2:

矩阵A第一行,第三列的数字为0,导致计算是13行被除数为0。
导致现象的原因是这个。