codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
TOL = 1e-6 K = 1.5 def solve(n): assert n >= 4 v = [[0.5 for y in range(n)] for x in range(n)] delta = 2 * TOL FIXED_VALUES = { (0, 0): 1, (2, 1): 0 } while delta > TOL: delta = 0 for x in range(n): for y in range(n): if (x, y) in FIXED_VALUES: v[x][y] = FIXED_VALUES[(x, y)] continue vo = v[x][y] vn = (v[x - 1][y] + v[(x + 1) % n][y] + v[x][y - 1] + v[x][(y + 1) % n]) / 4.0 v[x][y] = vn * K + vo * (1 - K) delta = max(abs(vn - vo), delta) return 1.0 / (4 * v[0][0] - v[-1][0] - v[1][0] - v[0][-1] - v[0][1]) if __name__ == '__main__': from time import time for n in (8, 16, 32): start = time() print 'N = %d - R = %f - Time: %f s' % (n, solve(n), time() - start)
Private
[
?
]
Run code
Submit