Wie Sie wahrscheinlich aus dem Titel erraten, versuche ich Tridiagonal Gauss Jordan Beseitigung zu tun. Ich versuche es ohne den Standardlöser zu machen. Meine Antworten kommen nicht richtig heraus und ich brauche Hilfe, wo der Fehler in meinem Code ist.Versuch Tridiagonal Gauss-Jordan Eliminierung Matlab
Ich bekomme verschiedene Werte für A/b und x, mit dem Code, den ich habe.
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