Итак, я пытаюсь создать скрипт, который возьмет массив, преобразует его в упакованную форму, затем запустит факторизацию Cholesky и, наконец, воспользуемся форвардной и обратной подстановкой для ее решения (Ax=b
).Прямая замена в упакованном массиве
Проблема im im создает алгоритм прямой подстановки (столбца) для упакованных массивов. Я правильно выполнил обратную замену, но я не могу правильно преобразовать алгоритм.
Это текущий назад алгоритм замещения у меня есть (который идеально подходит)
x = b;
p = n*(n+1)/2;
for j = n:-1:1
x(j) = x(j)/u(p);
p = p - 1;
for i = j-1:-1:1
x(i) = x(i) - u(p) * x(j);
p = p - 1;
end
end
Где n
является размер исходного A
матрицы (которая является квадратным и СПД). Отображение из A
матрицы к u
выглядит следующим образом:
A(i,j) = u(i+j*(j-1)/2)
Моя текущая итерация алгоритма прямого замещения заключается в следующем:
x = b;
p = 1;
for j = 1:n
x(j) = x(j)/u(p);
p = p + 1;
for i = j+1:n
x(i) = x(i) - u(p) * x(j);
p = p + 1;
end
end
Я не могу показаться, чтобы выяснить, что я делаю неправильно , Что бы я ни пытался, я просто давал мне NaN
или Inf
в качестве ответов для x
. Может ли кто-нибудь умнее меня понять, как должен выглядеть алгоритм?