Программирование -> Классическое ->
Python 3
Метод прогонки для решения трёхдиагональных СЛАУ
Трёхдиагональная СЛАУ:
Теория:
Источник
Код:
#библиотека для работы с матрицами
import numpy
def Metod_Progonki(A,B):
#известные константы
k1 = -A[0,1]
m1 = B[0]
k2 = -A[A.shape[0] - 1, A.shape[1] - 2]
m2 = B[B.shape[0] - 1]
alfa = k1
beta = m1
#поиск альф и бет
c = 2
a = 0
b = 1
alf = [alfa]
bet = [beta]
for i in range(1, A.shape[0] - 1):
beta = (B[i] - A[i,a] * beta) / (A[i,a] * alfa + A[i,b])
alfa = -A[i,c] / (A[i,a] * alfa + A[i,b])
a += 1
b += 1
c += 1
alf.append(alfa)
bet.append(beta)
#расчет игриков
y = (k2 * beta + m2) / (1 - k2 * alfa)
otv = [y]
for i in range(len(alf) - 1, -1, -1):
y = alf[i] * y + bet[i]
otv.append(y)
#переворачиваем значения в списке
otvet = []
for i in reversed(otv):
otvet.append(i)
return otvet
#задаем матрицы
A = numpy.array([[1,-6,0,0],[2,-2,4,0],[0,-1,-4,6],[0,0,8,1]])
B = numpy.array([45,-36,3,-79])
#вызов функции и вывод на экран
print(A)
print(B)
print(Metod_Progonki(A,B))