#matlab #numerical-methods
#matlab
Вопрос:
function x = Gauss_Elimination(A,b)
n = length(b);
x = zeros(n,1);
% Forward Elimination
for i = 1:n-1
for j = i 1:n
mul = A(j,i)/A(i,i); % Multiplier
for k = i 1:n
A(j,k) = A(j,k) - mul*A(i,k);
end
b(j) = b(j) - mul*b(i);
end
end
x(n) = b(n)/A(n,n); % Obtain solution for the last variable
% Back Substitution
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
Когда=[0 1 1 1;3 0 3 -4;1 1 1 2;2 3 1 3]; b=[0;7;6;6]; x=[4;-3;1;2]
Однако, x = [NAN;NAN;NAN;NAN], когда я использую эту функцию.
Кто-нибудь скажет мне причину???
Ответ №1:
Попробуйте использовать точки останова, чтобы увидеть значение переменных на каждой итерации. Проблема в переменной «mul», вы что-то делите / 0-> бесконечно. Вот почему вы получаете эти результаты. Если вы установите
A=[2 1 1 1;3 4 3 -4;1 1 1 2;2 3 1 3]; b=[0;7;6;6]
в качестве ответа вы получаете: ответ =
-4.7273
1.7273
6.4545
1.2727
Надеюсь, это поможет.
Комментарии:
1. Спасибо, сэр. Вы мне очень помогли.
Ответ №2:
Вы можете скачать этот код здесь
https://github.com/pavdpr/matlab-latex/blob/master/RRE.m
Она выполняет исключение по Гауссу, а затем записывает его в LaTeX. вы можете перенести запись в Latex и просто взглянуть на код, который выполняет предварительное исключение.
И версия того же кода на python, если вы этого хотите