cannor 发表于 2006-11-17 21:28

刚开始编程望各位大侠帮忙指正

function x=naivgauss(A,b);
n=length(b); x=zeros(n,1);
for k=1:n-1
    for i=k+1:n
      for j=k+1:n
            xmult=A(i,k)/A(k,k)
            A(i,j)=A(i,j)-xmult*A(i,j);
      end
      b(i)=b(i)-xmult*b(k);
    end
end
% back substitution
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
    sum=b(i);
    for j=i+1:n
      sum=sum-A(i,j)*x(j);
    end
    x(i)=sum/A(i,j);
end


A=;
b=;
naivgauss(A,b)

xmult =

       -1000


xmult =

       -1000


xmult =

       -2000


xmult =

       -2000


xmult =

    0.5773


ans =

    0.0895
   -0.0819
    0.2985
事实上   用高斯消去法答案应该为-0.400    -0.09980    0.4000      且xmult 应该为三个值才对啊怎么冒出5个    不知道哪里不行   刚开始编程望各位大侠帮忙指正!!!谢了先。

[ 本帖最后由 xinyuxf 于 2007-7-22 16:13 编辑 ]

happy 发表于 2006-11-18 16:40

xmult出来的值是由于你的程序中
xmult=A(i,k)/A(k,k)

后边没有加分号造成的
改成
xmult=A(i,k)/A(k,k);
就好了

你的结果应该是ans给出来的三个值

至于和高斯消去法对不上,可能原因很多,说说你用的是什么算法吧
检查一下程序是否有什么地方搞错了

cannor 发表于 2006-11-18 17:15

麻烦看下 是不是循环语句出错了? 谢谢 (在线等!)

哦 谢谢   我的是用高斯顺序消去法(非选主元),为了看出哪里出问题,我特意将xmult,A都打出来。但是,程序出来后,在for j=k+1:n
            xmult=A(i,k)/A(k,k)
            A(i,j)=A(i,j)-xmult*A(i,j);   k列一直无法消去。将j=k+1:n改成j=k:n还是没办法消去k列(k列下三角应为零)。程序运行如下:
formatlong;
A=;
b=;
naivgauss(A,b)

A =

1.0e+003 *

   0.00000100000000   0.00200000000000   0.00300000000000
-0.00100000000000   2.00371200000000   0.00462300000000
-0.00200000000000   0.00107200000000   0.00564300000000


A =

1.0e+003 *

   0.00000100000000   0.00200000000000   0.00300000000000
-0.00100000000000   2.00371200000000   3.00462300000000
-0.00200000000000   0.00107200000000   0.00564300000000


A =

1.0e+003 *

   0.00000100000000   0.00200000000000   0.00300000000000
-0.00100000000000   2.00371200000000   3.00462300000000
-0.00200000000000   4.00107200000000   0.00564300000000


A =

1.0e+003 *

   0.00000100000000   0.00200000000000   0.00300000000000
-0.00100000000000   2.00371200000000   3.00462300000000
-0.00200000000000   4.00107200000000   6.00564300000000


A =

1.0e+003 *

   0.00000100000000   0.00200000000000   0.00300000000000
-0.00100000000000   2.00371200000000   3.00462300000000
-0.00200000000000   4.00107200000000   0.00592200424013


ans =

-0.01149748295673
-0.03403415510089
   0.36752025302399
页: [1]
查看完整版本: 刚开始编程望各位大侠帮忙指正