Commit 763affb711eafc214b3237d84e81b9500a6381a0
1 parent
7d0297f3
Exists in
master
staged.
Showing
9 changed files
with
113 additions
and
96 deletions
Show diff stats
chap1/1_3_infinite.py
@@ -2,6 +2,7 @@ __author__ = 'chunk' | @@ -2,6 +2,7 @@ __author__ = 'chunk' | ||
2 | 2 | ||
3 | import struct | 3 | import struct |
4 | import numpy as np | 4 | import numpy as np |
5 | +import math | ||
5 | 6 | ||
6 | from common import * | 7 | from common import * |
7 | 8 | ||
@@ -30,7 +31,7 @@ def double2bin(num): | @@ -30,7 +31,7 @@ def double2bin(num): | ||
30 | return ''.join(bits) | 31 | return ''.join(bits) |
31 | 32 | ||
32 | 33 | ||
33 | -def infinite_float(): | 34 | +def infinite_limit(): |
34 | s = np.float32(0) | 35 | s = np.float32(0) |
35 | tmp = np.float32(-1) | 36 | tmp = np.float32(-1) |
36 | i = 0 | 37 | i = 0 |
@@ -41,6 +42,11 @@ def infinite_float(): | @@ -41,6 +42,11 @@ def infinite_float(): | ||
41 | 42 | ||
42 | print i, s, tmp, float2bin(s) | 43 | print i, s, tmp, float2bin(s) |
43 | 44 | ||
45 | +def infinite_float(n): | ||
46 | + s = np.float32(0) | ||
47 | + for i in range(1, n + 1): | ||
48 | + s += np.float32(1.0 / i) | ||
49 | + return s | ||
44 | 50 | ||
45 | def infinite_double(n): | 51 | def infinite_double(n): |
46 | s = np.float64(0) | 52 | s = np.float64(0) |
@@ -58,14 +64,23 @@ def testn0(): | @@ -58,14 +64,23 @@ def testn0(): | ||
58 | 64 | ||
59 | if __name__ == '__main__': | 65 | if __name__ == '__main__': |
60 | # testn0() | 66 | # testn0() |
61 | - # infinite_float() | 67 | + infinite_limit() |
68 | + | ||
69 | + for i in range(1,11): | ||
70 | + print infinite_float(i) | ||
71 | + for i in range(1,11): | ||
72 | + print infinite_double(i) | ||
62 | 73 | ||
63 | # i = 1 | 74 | # i = 1 |
64 | # while infinite_double(i) < 16: | 75 | # while infinite_double(i) < 16: |
65 | # i += 1 | 76 | # i += 1 |
66 | # print i, infinite_double(i) | 77 | # print i, infinite_double(i) |
78 | + | ||
67 | timer = Timer() | 79 | timer = Timer() |
68 | - timer.mark() | ||
69 | - infinite_double(10000000) # 1125899906842624 | ||
70 | - timer.report() | 80 | + |
81 | + for i in range(1,8): | ||
82 | + n = math.pow(10,i) | ||
83 | + timer.mark() | ||
84 | + infinite_double(int(n)) # 1125899906842624 | ||
85 | + timer.report() | ||
71 | pass | 86 | pass |
@@ -0,0 +1,76 @@ | @@ -0,0 +1,76 @@ | ||
1 | +""" | ||
2 | +Common utils. | ||
3 | + | ||
4 | +@author: chunk | ||
5 | +chunkplus@gmail.com | ||
6 | +2014 Dec | ||
7 | +""" | ||
8 | +__author__ = 'hadoop' | ||
9 | + | ||
10 | +import os, sys | ||
11 | +import time | ||
12 | +import StringIO | ||
13 | +import ConfigParser | ||
14 | + | ||
15 | +import numpy as np | ||
16 | + | ||
17 | +package_dir_imager = os.path.dirname(os.path.abspath(__file__)) | ||
18 | + | ||
19 | + | ||
20 | +class Timer(): | ||
21 | + def __init__(self): | ||
22 | + self.__newtime = time.time() | ||
23 | + self.__oldtime = self.__newtime | ||
24 | + | ||
25 | + def mark(self): | ||
26 | + self.__oldtime = self.__newtime | ||
27 | + self.__newtime = time.time() | ||
28 | + return self.__newtime - self.__oldtime | ||
29 | + | ||
30 | + def report(self): | ||
31 | + print "%-24s%fs" % ("time elapsed:", self.mark()) | ||
32 | + | ||
33 | + | ||
34 | +def ttimer(): | ||
35 | + newtime = time.time() | ||
36 | + while True: | ||
37 | + oldtime = newtime | ||
38 | + newtime = time.time() | ||
39 | + yield newtime - oldtime | ||
40 | + | ||
41 | + | ||
42 | +def ctimer(): | ||
43 | + newtime = time.clock() | ||
44 | + while True: | ||
45 | + oldtime = newtime | ||
46 | + newtime = time.clock() | ||
47 | + yield newtime - oldtime | ||
48 | + | ||
49 | + | ||
50 | +def bytes2bits(arry_bytes): | ||
51 | + """ | ||
52 | + :param arry_bytes: 1-D np.unit8 array | ||
53 | + :return: 1-D 0/1 array | ||
54 | + """ | ||
55 | + hid_data_bits = [map(int, '{0:08b}'.format(byte)) for byte in arry_bytes] | ||
56 | + return np.array(hid_data_bits).ravel() | ||
57 | + | ||
58 | + | ||
59 | +def bits2bytes(arry_bits): | ||
60 | + """ | ||
61 | + :param arry_bits: 1-D 0/1 array | ||
62 | + :return: 1-D np.unit8 array | ||
63 | + """ | ||
64 | + str_bits = ''.join(map(str, arry_bits)) | ||
65 | + arry_bytes = [int(str_bits[i:i + 8], 2) for i in range(0, len(str_bits), 8)] | ||
66 | + return np.array(arry_bytes, dtype=np.uint8).ravel() | ||
67 | + | ||
68 | + | ||
69 | +def test_grammer(): | ||
70 | + a = 'fsaf' | ||
71 | + b = ['dasf', 'dff'] | ||
72 | + c = 'dgfsfdg' | ||
73 | + # print a + b | ||
74 | + print [a] + b # ['fsaf', 'dasf', 'dff'] | ||
75 | + print [a] + [b] # ['fsaf', ['dasf', 'dff']] | ||
76 | + print [a] + [c] # ['fsaf', 'dgfsfdg'] |
No preview for this file type
chap3/cholesky.py
@@ -108,23 +108,23 @@ def test(): | @@ -108,23 +108,23 @@ def test(): | ||
108 | def test1(): | 108 | def test1(): |
109 | print "[origin(n=10)]" | 109 | print "[origin(n=10)]" |
110 | x, r, delta = calculate0(10) | 110 | x, r, delta = calculate0(10) |
111 | - print "x:%s\nr:%s\ndelta:%s\n" % (x, r, delta) | ||
112 | - print "norm(r):%s\nnorm(delta):%s\n" % (norm(r), norm(delta)) | 111 | + print "x:%s\nr:%s\ndelta:%s" % (x, r, delta) |
112 | + print "norm(r):%s\nnorm(delta):%s" % (norm(r), norm(delta)) | ||
113 | 113 | ||
114 | print "[disturbed(n=10)]" | 114 | print "[disturbed(n=10)]" |
115 | x, r, delta = calculate1(10) | 115 | x, r, delta = calculate1(10) |
116 | - print "x:%s\nr:%s\ndelta:%s\n" % (x, r, delta) | ||
117 | - print "norm(r):%s\nnorm(delta):%s\n" % (norm(r), norm(delta)) | 116 | + print "x:%s\nr:%s\ndelta:%s" % (x, r, delta) |
117 | + print "norm(r):%s\nnorm(delta):%s" % (norm(r), norm(delta)) | ||
118 | 118 | ||
119 | print "[n=8]" | 119 | print "[n=8]" |
120 | x, r, delta = calculate0(8) | 120 | x, r, delta = calculate0(8) |
121 | - print "x:%s\nr:%s\ndelta:%s\n" % (x, r, delta) | ||
122 | - print "norm(r):%s\nnorm(delta):%s\n" % (norm(r), norm(delta)) | 121 | + print "x:%s\nr:%s\ndelta:%s" % (x, r, delta) |
122 | + print "norm(r):%s\nnorm(delta):%s" % (norm(r), norm(delta)) | ||
123 | 123 | ||
124 | print "[n=12]" | 124 | print "[n=12]" |
125 | x, r, delta = calculate0(12) | 125 | x, r, delta = calculate0(12) |
126 | - print "x:%s\nr:%s\ndelta:%s\n" % (x, r, delta) | ||
127 | - print "norm(r):%s\nnorm(delta):%s\n" % (norm(r), norm(delta)) | 126 | + print "x:%s\nr:%s\ndelta:%s" % (x, r, delta) |
127 | + print "norm(r):%s\nnorm(delta):%s" % (norm(r), norm(delta)) | ||
128 | 128 | ||
129 | 129 | ||
130 | if __name__ == '__main__': | 130 | if __name__ == '__main__': |
chap3/cholesky.pyc
No preview for this file type
chap4/iterative.py
@@ -73,7 +73,8 @@ def test(): | @@ -73,7 +73,8 @@ def test(): | ||
73 | A = gen_hilbert(n) | 73 | A = gen_hilbert(n) |
74 | b = gen_b(n) | 74 | b = gen_b(n) |
75 | # print jacobi(A, b) | 75 | # print jacobi(A, b) |
76 | - print SOR(A, b, 1) | 76 | + # return |
77 | + print SOR(A, b, 1.25) | ||
77 | 78 | ||
78 | for w in np.linspace(0.5, 1.5, num=11): | 79 | for w in np.linspace(0.5, 1.5, num=11): |
79 | iter, x = SOR(A, b, w) | 80 | iter, x = SOR(A, b, w) |
chap5/power.py
@@ -44,17 +44,18 @@ def power_method(A, epsilon=0.00001, v=None): | @@ -44,17 +44,18 @@ def power_method(A, epsilon=0.00001, v=None): | ||
44 | 44 | ||
45 | 45 | ||
46 | def test(): | 46 | def test(): |
47 | - ll = [0, 2, 0.5, 1, -3, 0.2] | ||
48 | - ll2 = [i * 2 for i in ll] | ||
49 | - print norm_vec(ll) | ||
50 | - print norm_vec(ll2) | 47 | + # ll = [0, 2, 0.5, 1, -3, 0.2] |
48 | + # ll2 = [i * 2 for i in ll] | ||
49 | + # print norm_vec(ll) | ||
50 | + # print norm_vec(ll2) | ||
51 | 51 | ||
52 | - A = [[3, 1], [1, 3]] | ||
53 | - print power_method(A) | 52 | + # A = [[3, 1], [1, 3]] |
53 | + # print power_method(A) | ||
54 | 54 | ||
55 | A = [[5, -4, 1], [-4, 6, -4], [1, -4, 7]] | 55 | A = [[5, -4, 1], [-4, 6, -4], [1, -4, 7]] |
56 | B = [[25, -41, 10, -6], [-41, 68, -17, 10], [10, -17, 5, -3], [-6, 10, -3, 2]] | 56 | B = [[25, -41, 10, -6], [-41, 68, -17, 10], [10, -17, 5, -3], [-6, 10, -3, 2]] |
57 | print power_method(A) | 57 | print power_method(A) |
58 | + print "" | ||
58 | print power_method(B) | 59 | print power_method(B) |
59 | 60 | ||
60 | 61 |
common.py
@@ -1,76 +0,0 @@ | @@ -1,76 +0,0 @@ | ||
1 | -""" | ||
2 | -Common utils. | ||
3 | - | ||
4 | -@author: chunk | ||
5 | -chunkplus@gmail.com | ||
6 | -2014 Dec | ||
7 | -""" | ||
8 | -__author__ = 'hadoop' | ||
9 | - | ||
10 | -import os, sys | ||
11 | -import time | ||
12 | -import StringIO | ||
13 | -import ConfigParser | ||
14 | - | ||
15 | -import numpy as np | ||
16 | - | ||
17 | -package_dir_imager = os.path.dirname(os.path.abspath(__file__)) | ||
18 | - | ||
19 | - | ||
20 | -class Timer(): | ||
21 | - def __init__(self): | ||
22 | - self.__newtime = time.time() | ||
23 | - self.__oldtime = self.__newtime | ||
24 | - | ||
25 | - def mark(self): | ||
26 | - self.__oldtime = self.__newtime | ||
27 | - self.__newtime = time.time() | ||
28 | - return self.__newtime - self.__oldtime | ||
29 | - | ||
30 | - def report(self): | ||
31 | - print "%-24s%fs" % ("time elapsed:", self.mark()) | ||
32 | - | ||
33 | - | ||
34 | -def ttimer(): | ||
35 | - newtime = time.time() | ||
36 | - while True: | ||
37 | - oldtime = newtime | ||
38 | - newtime = time.time() | ||
39 | - yield newtime - oldtime | ||
40 | - | ||
41 | - | ||
42 | -def ctimer(): | ||
43 | - newtime = time.clock() | ||
44 | - while True: | ||
45 | - oldtime = newtime | ||
46 | - newtime = time.clock() | ||
47 | - yield newtime - oldtime | ||
48 | - | ||
49 | - | ||
50 | -def bytes2bits(arry_bytes): | ||
51 | - """ | ||
52 | - :param arry_bytes: 1-D np.unit8 array | ||
53 | - :return: 1-D 0/1 array | ||
54 | - """ | ||
55 | - hid_data_bits = [map(int, '{0:08b}'.format(byte)) for byte in arry_bytes] | ||
56 | - return np.array(hid_data_bits).ravel() | ||
57 | - | ||
58 | - | ||
59 | -def bits2bytes(arry_bits): | ||
60 | - """ | ||
61 | - :param arry_bits: 1-D 0/1 array | ||
62 | - :return: 1-D np.unit8 array | ||
63 | - """ | ||
64 | - str_bits = ''.join(map(str, arry_bits)) | ||
65 | - arry_bytes = [int(str_bits[i:i + 8], 2) for i in range(0, len(str_bits), 8)] | ||
66 | - return np.array(arry_bytes, dtype=np.uint8).ravel() | ||
67 | - | ||
68 | - | ||
69 | -def test_grammer(): | ||
70 | - a = 'fsaf' | ||
71 | - b = ['dasf', 'dff'] | ||
72 | - c = 'dgfsfdg' | ||
73 | - # print a + b | ||
74 | - print [a] + b # ['fsaf', 'dasf', 'dff'] | ||
75 | - print [a] + [b] # ['fsaf', ['dasf', 'dff']] | ||
76 | - print [a] + [c] # ['fsaf', 'dgfsfdg'] |
common.pyc
No preview for this file type