尝试Tridiagonal高斯 - 约旦消除MATLAB



正如您可能从标题中猜到的那样,我正在尝试进行Tridiagonal Gaussjordan消除。我正在尝试没有默认求解器的情况。我的答案不正确,我需要一些帮助,以了解我的代码中错误的位置。

使用我拥有的代码,我的A/B和X值不同。

n = 4;
#Range for diagonals
ranged = [15 20];
rangesd = [1 5];
#Vectors for tridiagonal matrix
supd = randi(rangesd,[1,n-1]);
d = randi(ranged,[1,n]);
subd = randi(rangesd,[1,n-1]);
#Creates system Ax+b
A = diag(supd,1) + diag(d,0) + diag(subd,-1)
b = randi(10,[1,n])
#Uses default solver
y = A/b

function x = naive_gauss(A,b);
#Forward elimination
for k=1:n-1
      for i=k+1:n
           xmult = A(i,k)/A(k,k);
           for j=k+1:n
             A(i,j) = A(i,j)-xmult*A(k,j);
           end
           b(i) = b(i)-xmult*b(k);
      end
end
#Backwards elimination
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,i)
end
end
x

您的算法正确。您比较的y的值是错误的。

您有y=A/b,但是获得系统解决方案的正确语法应为 y=Ab

相关内容

  • 没有找到相关文章

最新更新