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

我在完成一个作业,要用matlab编一个小程序,使用高斯消去法求解线型方程组,我以前没学过matlab,所以比葫芦画瓢变了一个小文件,可是运行时总是出现这样的提示:War... 我在完成一个作业,要用matlab编一个小程序,使用高斯消去法求解线型方程组,我以前没学过matlab,所以比葫芦画瓢变了一个小文件,可是运行时总是出现这样的提示:
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
> In E:\matlab6.5\work\Gauss_.m at line 13
有哪位能人能帮我修改一下让它运行起来吗?很急,我愿意把我仅有的50分都奉送,我的小程序是:
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
for i=k+1:n
A(i,k)=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-A(i,k)/A(k,j);
b(i)=b(i)-A(i,k)*b(k);
end
end
x(n)=b(n)/A(n,n);%……回代过程……
for k=n-1:-1:1
S=b(k);
for j=k+1:n
S=S-A(k,j)*x(j);
end
x(k)=S/A(k,k);
end

end
展开
 我来答
化学工程
2006-11-17 · TA获得超过8899个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3322万
展开全部
【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
百度网友29afc6726
2006-11-17 · TA获得超过342个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:264万
展开全部
矩阵A第一行,第三列的数字为0,导致计算是13行被除数为0。
导致现象的原因是这个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式