1
제목에서 추측했듯이, 나는 tridiagonal Gaussjordan 제거를 시도하고 있습니다. 나는 기본 솔버없이 그것을하려고 노력하고있다. 내 대답이 정확하지 않고 오류가 내 코드에있는 경우 도움이 필요합니다.Tridiagonal Gauss-Jordan 제거 시도 Matlab
내가 가진 코드를 사용하여 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
https://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm – duffymo