Помогите на python запутался в циклах

Лёха

Новичок
Пользователь
Окт 1, 2020
2
0
1
метод LU факторизации
Конечный результат Х должен выводится (2 ,3, 2)
после прохода цикла по j первый раз(первая итерация) --->1 строка меняется правильно ,за второй итерацией идет сбой, не правильно что то в цикле) :
массив А должен изменяться ,как я понял вот так:
первая строка (9 , - 0.222222222 , -0.666666666666) это правильно выходит за первой итерацией
вторая строка должна выйти (-2 ,140/9 ,-6/7) за второй итерацией что то идет не правильно
третья (-6 , -40/3 , - 18/7)
мой код:
Python:
A=[
    [9,-2,-6],
    [-2,16,-12],
    [-6,-12,18]
]
B= [0, 20, -12]
X= [0, 0, 0]
def LU(a, b, x):
    n = len(a)
    for j in range(n+1):
        for i in range(j, n):
            for k in range(j-1):
                a[i][j] -= a[i][k] * a[k][j]
        for i in range(j+1, n):
            for k in range(j):
                a[j][i] -= a[j][k] * a[k][i]
            a[j][i] /= a[j][j]
    for i in range(n):
        x[i] = b[i]
        for j in range(i-1):
            x[i] -= a[i][j] * x[j]
        x[i] /= a[i][i]
    for i in range(n-1, 0, -1):
        for j in range(i+1, n):
            x[i] -= a[i][j] * x[j]
LU(A, B, X)
for i in X:
    print(i)
 
Последнее редактирование:

Лёха

Новичок
Пользователь
Окт 1, 2020
2
0
1
я СДЕЛАЛ !
ВОТ ОТВЕТ:
Код:
A=[
    [9,-2,-6],
    [-2,16,-12],
    [-6,-12,18]
]

B= [0, 20, -12]
X= [0, 0, 0]
def LU(a, b, x):
    n = len(a)
    for j in range(n):
        for i in range(j, n):
            for k in range(j): # -1
                a[i][j] -= a[i][k] * a[k][j]
        for i in range(j + 1, n):
            for k in range(j): #  + ----> -
                a[j][i] -= a[j][k] * a[k][i]
            a[j][i] /= a[j][j]
    for i in range(n):
        x[i] = b[i]
        for j in range(0, i ):
            x[i] -= a[i][j] * x[j]
        x[i] /= a[i][i]
    for i in range(n - 1,-1, -1):
        for j in range(i + 1, n):
            x[i] -= a[i][j] * x[j]


LU(A, B, X)
for i in X:
    print(i)
 

Форум IT Специалистов