Реализации алгоритмов/Метод прогонки: различия между версиями

Содержимое удалено Содержимое добавлено
м <source> -> <syntaxhighlight> (phab:T237267)
Строка 35:
 
def TDMA(a,b,c,f):
a, b, c, f = tuple(map(lambda k_list: list(map(float, k_list)), (a, b, c, f)))
 
alpha = [-b[0] / c[0]]
beta = [f[0] / c[0]]
n = len(f)
x = [0]*n
 
for i in range(n-1, n):
alpha.append(-b[i]/(a[i]*alpha[i-1] + c[i]))
beta.append((f[i] - a[i]*beta[i-1])/(a[i]*alpha[i-1] + c[i]))
 
x[n-1] = (fbeta[n-1] - a[n-2]*beta[n-1])/(c[n-1] + a[n-2]*alpha[n-1])
 
for i in reversed(range(n-1), 0, -1):
x[i - 1] = alpha[i+ - 1]*x[i+1] + beta[i+ - 1]
 
return x