Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fractions
- m = [[0 for _ in xrange(21)] for _ in xrange(20)]
- # f(0) = 0
- m[0][0] = 1
- m[0][20] = 0
- # f(19) = 1
- m[19][19] = 1
- m[19][20] = 1
- for i in xrange(1, 19):
- m[i][i] = 1
- m[i][i-1] = fractions.Fraction(-1, 2)
- m[i][i+1] = fractions.Fraction(-1, 2)
- def rref(mat):
- R, C = len(mat), len(mat[0])
- r, c = 0, 0
- while r < R and c < C:
- # Find row below pivot with largest absolute value.
- i = max(range(r, R), key=lambda x: abs(mat[x][c]))
- if mat[i][c] == 0:
- # No pivot in this column, continue.
- c += 1
- else:
- # Swap rows.
- mat[r], mat[i] = mat[i], mat[r]
- # Subtract from rows below.
- for y in xrange(r+1, R):
- f = mat[y][c] / mat[r][c]
- mat[y][c] = 0
- for x in xrange(c+1, C):
- mat[y][x] -= f * mat[r][x]
- r += 1
- c += 1
- rref(m)
- res = [0.0 for _ in xrange(20)]
- for i in xrange(19, -1, -1):
- s = m[i][-1]
- for x in xrange(i+1, 20):
- s -= m[i][x] * res[x]
- s /= m[i][i]
- res[i] = s
- print res[3]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement