正如你可能从标题中猜到的那样,我正试图做三角形的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
答案 0 :(得分:1)
您的算法是正确的。您比较的y
的值是错误的。
您拥有y=A/b
,但获取系统解决方案的正确语法应为 y=A\b
。