Advertisement
SenyaSych

Untitled

Mar 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.96 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Mon Mar 19 20:18:35 2018
  4.  
  5. @author: Arseny Mannerheim
  6. """
  7.  
  8. import numpy as np
  9.  
  10. print ("Метод прогонки\n")
  11.  
  12. A = np.array([[2.1, 0.5, 0, 0, 0], [0.5, 6.1, 0.5, 0, 0], [0, 0.5, 2.5, 0.5, 0], [0, 0, 0.5, 3.4, 0.5], [0, 0, 0, 0.5, 7.15]],dtype=float)
  13.  
  14. a = np.array([0.5, 0.5, 0.5, 0.5])
  15. b = np.array([2.1, 6.1, 2.5, 3.4, 7.15])
  16. c = np.array([0, 0.5, 0.5, 0.5])
  17. d = np.array([2.6, 7.0, 4.1, 4.5, 6.9])
  18.  
  19. def TDMAsolver(a, b, c, d):
  20.     nf = len(d) # number of equations
  21.     ac, bc, cc, dc = map(np.array, (a, b, c, d)) # copy arrays
  22.     for it in range(1, nf):
  23.         mc = ac[it-1]/bc[it-1]
  24.         bc[it] = bc[it] - mc*cc[it-1]
  25.         dc[it] = dc[it] - mc*dc[it-1]
  26.                
  27.     xc = bc
  28.     xc[-1] = dc[-1]/bc[-1]
  29.  
  30.     for il in range(nf-2, -1, -1):
  31.         xc[il] = (dc[il]-cc[il]*xc[il+1])/bc[il]
  32.  
  33.     return xc
  34.  
  35. print ("A:\n", A)
  36. print ("\nB:\n", d)
  37. print ("\nX:\n", TDMAsolver (a, b, c, d))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement