Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.03 KB | None | 0 0
  1. import fractions
  2.  
  3. m = [[0 for _ in xrange(21)] for _ in xrange(20)]
  4. # f(0) = 0
  5. m[0][0] = 1
  6. m[0][20] = 0
  7.  
  8. # f(19) = 1
  9. m[19][19] = 1
  10. m[19][20] = 1
  11.  
  12. for i in xrange(1, 19):
  13.   m[i][i] = 1
  14.   m[i][i-1] = fractions.Fraction(-1, 2)
  15.   m[i][i+1] = fractions.Fraction(-1, 2)
  16.  
  17. def rref(mat):
  18.   R, C = len(mat), len(mat[0])
  19.   r, c = 0, 0
  20.   while r < R and c < C:
  21.     # Find row below pivot with largest absolute value.
  22.     i = max(range(r, R), key=lambda x: abs(mat[x][c]))
  23.     if mat[i][c] == 0:
  24.       # No pivot in this column, continue.
  25.       c += 1
  26.     else:
  27.       # Swap rows.
  28.       mat[r], mat[i] = mat[i], mat[r]
  29.  
  30.       # Subtract from rows below.
  31.       for y in xrange(r+1, R):
  32.         f = mat[y][c] / mat[r][c]
  33.         mat[y][c] = 0
  34.         for x in xrange(c+1, C):
  35.           mat[y][x] -= f * mat[r][x]
  36.  
  37.       r += 1
  38.       c += 1
  39.  
  40. rref(m)
  41.  
  42. res = [0.0 for _ in xrange(20)]
  43. for i in xrange(19, -1, -1):
  44.   s = m[i][-1]
  45.   for x in xrange(i+1, 20):
  46.     s -= m[i][x] * res[x]
  47.   s /= m[i][i]
  48.   res[i] = s
  49.  
  50. print res[3]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement