Skip to content

Commit 0a62f8e

Browse files
Add files via upload
1 parent c36d75f commit 0a62f8e

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

monteCarloMatrixSparse2.py

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import matplotlib.pyplot as plt
2+
import numpy as np
3+
from random import randint
4+
from scipy import optimize
5+
from time import time
6+
def monteCarloMatrixMultiply2(A,B):
7+
n = len(A)
8+
C = [[{} for j in range(n)] for i in range(n)]
9+
D = [[{} for j in range(n)] for i in range(n)]
10+
AB = [[0 for j in range(n)] for i in range(n)]
11+
for i in range(n):
12+
for j in range(n):
13+
C[i][j]['size'] = 0
14+
D[i][j]['size'] = 0
15+
while True:
16+
for i in range(n):
17+
for j in range(n):
18+
k = randint(0,n-1)
19+
if j in C[i][k] and i in D[k][j]:
20+
pass
21+
else:
22+
if A[i][k] != 0 or B[k][j] != 0:
23+
AB[i][j] = AB[i][j] + A[i][k]*B[k][j]
24+
C[i][k][j] = True
25+
C[i][k]['size'] = C[i][k]['size'] + 1
26+
D[k][j][i] = True
27+
D[k][j]['size'] = D[k][j]['size'] + 1
28+
flag = True
29+
for i in range(n):
30+
for j in range(n):
31+
flag = flag and C[i][j]['size'] == n and D[i][j]['size'] == n
32+
if flag: break
33+
return AB
34+
def testPoly(x,a,b,c):
35+
return a*x**2 + b*x + c
36+
setparams = [5,105,5]
37+
experi2Time = [k for k in range(setparams[0],setparams[1],setparams[2])]
38+
xaxis = [k for k in range(setparams[0],setparams[1],setparams[2])]
39+
for k in range(len(xaxis)):
40+
n1 = xaxis[k]
41+
A = [[randint(5,10) for i in range(n1)] for j in range(n1)]
42+
B = [[randint(5,10) for i in range(n1)] for j in range(n1)]
43+
start = time()
44+
monteCarloMatrixMultiply2(A,B)
45+
end = time()
46+
experi2Time[k] = end - start
47+
print('size = ',xaxis[k],' --> done ...')
48+
np.random.seed(0)
49+
params, params_covariance = optimize.curve_fit(
50+
testPoly,xaxis,experi2Time,
51+
p0=[1, 1, 1])
52+
print(
53+
'(',params[0],')x^2 + (',params[1],')x +',params[2]
54+
)

0 commit comments

Comments
 (0)