Implementacja algorytmów "podstawiania w przód" i "podstawiania w tył"

0

Hej,
od paru godzin próbuję napisać program w C++ rozwiązujący układ równań z wykorzystaniem dekompozycji LU oraz metod podstawiania w przód i wstecz. O ile pierwsza część nie sprawiła problemu i zakodowałem dekompozycję LU, to utknąłem na drugiej części. W Internecie znalazłem parę implementacji, w tym również C++, ale nie do końca je rozumiem a adaptacja ich do mojego kodu na głupiego nie działa poprawnie. Przyklejam mój kod: https://pastebin.com/squpVkzN

Funkcja forward_subsitution to moja próba implementacji podstawiania w przód, oczywiście nieudana

edit: chętnie przyjmę również review mojego kodu, na codzień nie koduje w C++

0

Zrób dokładnie tak jak jest tutaj: http://mathworld.wolfram.com/LUDecomposition.html . Tu Masz pseudokod pierwszego (forward) podstawienia:

fun find_y(lm, b, y):
    y[0] = b[0] / lm[0][0]
    for i = 1 to length(b) - 1:
        tmp_sum = 0
        for j  = 0 to i - 1:
            tmp_sum += lm[i][j] * y[j]
        y[i] = 1 / lm[i][i] * (b[i] - tmp_sum)

Funkcja tylko mutuje wekor y (rozwiązanie), bierze macierz L, tutaj lm i wektor wyrazów wolnych b. Przepisz sobie backward, pamietając, tak jak Widzisz w moim pseudokodzie, o indeksach (w C++ tablice od zera).

1 użytkowników online, w tym zalogowanych: 0, gości: 1