import numpy as np
import scipy.linalg as sl;
# 9.1
print("matrix operations\n");
def addMat(A):
return A+A
def multAAT(A):
return A*A.T
def multATA(A):
return A.T*A
def multAB(A,B):
return A*B
def multAB(A,B):
return A*B
def compute(num,A,B,m):
return A*(B-num*np.eye(m))
print("generate A B matrix")
n = 200
m = 500
A = np.asmatrix(np.random.normal(0, 1, (n, m)))
B = sl.toeplitz(range(m))
print(A)
print(B)
print("A+A=",addMat(A))
print("A*At=",multAAT(A))
print("At*A=",multATA(A))
print("A*B=",multAB(A,B))
print(" compute A(B-num*I):\n", compute(3,A, B,m))
#9.2
print("sloving linear system\n");
def solve(B,b):
return np.linalg.inv(B)*b
b = np.array(np.random.rand(m, 1))
print("\nsolve Bx = b: x = inv(B)*b:\n", solve(B, b))
#9.3
print("\nNorms")
print("The Frobenius norm of A: ||A||F:", np.linalg.norm(A))
print("The infinity norm of B: ||B||∞ ", np.linalg.norm(B, np.inf))
print("The largest singular values of B:", np.linalg.norm(B, 2))
print("The smallest singular values of B:", np.linalg.norm(B, -2))
#9.4
print("power interation\n");
Z = np.mat(np.random.rand(n, n))
print("Z:\n", Z)
w, v = np.linalg.eig(Z)
print("w:\n", w)
print("v:\n", v)
#9.5 singular values
for i in range(10):
n = np.random.randint(200, 600)
p = np.random.random()
C = np.asmatrix(np.random.binomial(1, p, (n, n)))
print("n: ", n, "p: ", p, "largest: ", n * p, sl.svd(C)[1].max())
#9.6 nearest neighbor
A = np.asmatrix(np.random.normal(0, 1, (5, 5)))
def neighbor(A, z):
Z = z * np.ones([A.shape[0], A.shape[0]])
A -= Z
print(A)
print(A.flat[abs(A).argmin()] + z)
neighbor(A, 0.5)
程序运行结果:
matrix operations
generate A B matrix
[[ 1.46426306 -0.81618189 -0.98876031 ... 0.31874893 -1.22657195
0.17629372]
[ 0.57107045 -0.31130927 0.374815 ... 1.06043566 -0.08870093
1.23423705]
[-0.98571481 0.41991493 -1.12696514 ... 0.45477993 1.11200079
0.61646155]
...
[-1.99215076 -0.41624256 -0.87013017 ... 0.62184374 -0.63195422
-1.4909774 ]
[ 1.3242188 1.26026724 -0.11174479 ... -1.07572189 0.64981957
1.21384059]
[ 0.3399073 -0.27644711 1.65545218 ... -1.04531467 -0.20573989
-1.27810368]]
[[ 0 1 2 ... 497 498 499]
[ 1 0 1 ... 496 497 498]
[ 2 1 0 ... 495 496 497]
...
[497 496 495 ... 0 1 2]
[498 497 496 ... 1 0 1]
[499 498 497 ... 2 1 0]]
A+A= [[ 2.92852613 -1.63236378 -1.97752063 ... 0.63749785 -2.4531439
0.35258744]
[ 1.1421409 -0.62261853 0.74963 ... 2.12087132 -0.17740186
2.4684741 ]
[-1.97142962 0.83982985 -2.25393029 ... 0.90955985 2.22400159
1.23292309]
...
[-3.98430153 -0.83248512 -1.74026033 ... 1.24368747 -1.26390845
-2.9819548 ]
[ 2.64843759 2.52053449 -0.22348959 ... -2.15144377 1.29963915
2.42768118]
[ 0.67981459 -0.55289423 3.31090436 ... -2.09062934 -0.41147978
-2.55620736]]
A*At= [[ 4.75620558e+02 -7.98431660e-01 1.17423186e+01 ... 1.81149076e+01
-5.11679535e+00 1.43863690e+01]
[-7.98431660e-01 5.16859059e+02 -6.29044752e+01 ... 1.19574394e+01
-2.79947919e+01 1.55441836e+01]
[ 1.17423186e+01 -6.29044752e+01 5.08200549e+02 ... -2.84703708e+01
4.27587561e+00 -1.76613038e+01]
...
[ 1.81149076e+01 1.19574394e+01 -2.84703708e+01 ... 5.48945469e+02
-4.18346978e-01 -1.59516240e+01]
[-5.11679535e+00 -2.79947919e+01 4.27587561e+00 ... -4.18346978e-01
5.14835999e+02 -1.63285209e+01]
[ 1.43863690e+01 1.55441836e+01 -1.76613038e+01 ... -1.59516240e+01
-1.63285209e+01 4.44757164e+02]]
At*A= [[190.34488908 -3.81031284 -15.16376169 ... -9.1913775 2.97361226
14.5471 ]
[ -3.81031284 199.59397061 -25.40900252 ... -20.77589491 -9.39749952
-23.71433816]
[-15.16376169 -25.40900252 218.24049353 ... 28.89014898 -14.03852479
1.66312075]
...
[ -9.1913775 -20.77589491 28.89014898 ... 194.65958007 -14.00269992
-6.5902647 ]
[ 2.97361226 -9.39749952 -14.03852479 ... -14.00269992 195.93093201
13.75899398]
[ 14.5471 -23.71433816 1.66312075 ... -6.5902647 13.75899398
204.59388227]]
A*B= [[-5719.3618112 -5687.32449876 -5656.9195501 ... -8749.45295518
-8776.46118504 -8805.92255879]
[-2659.23698445 -2653.80015863 -2648.98595134 ... 529.53812432
522.95236715 516.18920813]
[-6219.61000715 -6204.97764087 -6189.50544474 ... -2027.78670539
-2047.84742597 -2065.68414496]
...
[ 2520.1769202 2515.96503701 2510.9206687 ... -2414.29665209
-2409.82320718 -2406.61367072]
[-8301.61315658 -8279.62246857 -8255.11124607 ... -1305.33030135
-1328.39987211 -1350.16980371]
[ 1562.83678933 1544.24622108 1525.1027586 ... 8009.01958997
8031.25765995 8053.08425015]]
compute A(B-num*I):
[[-5723.75460039 -5684.87595308 -5653.95326916 ... -8750.40920196
-8772.78146919 -8806.45143996]
[-2660.95019581 -2652.86623083 -2650.11039633 ... 526.35681734
523.21846994 512.48649698]
[-6216.65286272 -6206.23738564 -6186.1245493 ... -2029.15104517
-2051.18342835 -2067.5335296 ]
...
[ 2526.15337249 2517.2137647 2513.5310592 ... -2416.1621833
-2407.92734451 -2402.14073853]
[-8305.58581297 -8283.4032703 -8254.77601169 ... -1302.10313569
-1330.34933083 -1353.81132549]
[ 1561.81706744 1545.07556242 1520.13640206 ... 8012.15553398
8031.87487963 8056.91856118]]
sloving linear system
solve Bx = b: x = inv(B)*b:
[[-1.67844827e-01 1.68181865e-01 0.00000000e+00 ... -1.11732278e-15
2.65298677e-16 3.37037806e-04]
[ 2.27747671e-01 -4.55495341e-01 2.27747671e-01 ... 2.28126648e-26
2.07889607e-26 6.62303172e-27]
[ 1.51433196e-28 4.28491924e-01 -8.56983847e-01 ... -1.34991878e-25
-5.60735492e-26 -1.85828681e-19]
...
[ 2.73197902e-15 -5.46445832e-15 5.46445832e-15 ... -1.92263535e-01
9.61317675e-02 6.40366210e-17]
[ 0.00000000e+00 1.97221316e-15 -3.94442632e-15 ... 6.93910816e-02
-1.38782163e-01 6.93910816e-02]
[ 3.89388571e-04 -2.39116077e-29 5.52247732e-15 ... -8.02707690e-26
1.94304897e-01 -1.93915508e-01]]
Norms
The Frobenius norm of A: ||A||F: 315.8821212638305
The infinity norm of B: ||B||∞ 124750.0
The largest singular values of B: 86851.6689846716
The smallest singular values of B: 0.5000049348345923
power interation
Z:
[[0.78304401 0.64878728 0.76824269 ... 0.1793105 0.52024947 0.81213248]
[0.85488306 0.43254213 0.30529846 ... 0.22844889 0.66425567 0.33537521]
[0.90747857 0.75607221 0.31521182 ... 0.36521503 0.85429947 0.40047674]
...
[0.78393234 0.26364528 0.39254761 ... 0.78129777 0.00880283 0.20694316]
[0.1122305 0.70880716 0.9922037 ... 0.32723309 0.37330037 0.78846063]
[0.50868475 0.80587521 0.10393355 ... 0.93240596 0.22642978 0.58401211]]
w:
[ 1.00012882e+02+0.j -3.52126950e+00+2.18330607j
-3.52126950e+00-2.18330607j -3.71001817e+00+1.87734066j
-3.71001817e+00-1.87734066j -1.85533234e+00+3.67585396j
-1.85533234e+00-3.67585396j 3.33573242e+00+2.37744488j
3.33573242e+00-2.37744488j 1.46236653e-01+4.04880114j
1.46236653e-01-4.04880114j -3.90023285e+00+0.j
-7.13377171e-01+3.91733506j -7.13377171e-01-3.91733506j
3.88432120e+00+0.97242022j 3.88432120e+00-0.97242022j
2.58007774e+00+3.0023393j 2.58007774e+00-3.0023393j
1.84000728e+00+3.4941787j 1.84000728e+00-3.4941787j
5.23398352e-01+3.83251037j 5.23398352e-01-3.83251037j
-3.82944575e+00+0.39782017j -3.82944575e+00-0.39782017j
2.13175708e+00+3.19862335j 2.13175708e+00-3.19862335j
3.83960922e+00+0.j 3.62599717e+00+1.24877237j
3.62599717e+00-1.24877237j 2.75577077e+00+2.4726719j
2.75577077e+00-2.4726719j -2.34677215e+00+2.86490485j
-2.34677215e+00-2.86490485j -9.71475057e-01+3.54776726j
-9.71475057e-01-3.54776726j -3.63213503e+00+0.80622036j
-3.63213503e+00-0.80622036j 1.72299435e+00+3.25238984j
1.72299435e+00-3.25238984j 2.92304581e+00+2.18140784j
2.92304581e+00-2.18140784j -3.53330138e+00+0.j
6.64211402e-01+3.53733418j 6.64211402e-01-3.53733418j
-3.38121697e-01+3.58953621j -3.38121697e-01-3.58953621j
-2.58515764e+00+2.44070759j -2.58515764e+00-2.44070759j
-3.26550746e+00+1.55135767j -3.26550746e+00-1.55135767j
3.08705662e+00+1.91008716j 3.08705662e+00-1.91008716j
-3.02123829e+00+1.82575206j -3.02123829e+00-1.82575206j
-1.45609742e+00+3.17468525j -1.45609742e+00-3.17468525j
3.47729375e+00+0.90477295j 3.47729375e+00-0.90477295j
-3.29687415e+00+1.08779239j -3.29687415e+00-1.08779239j
-3.41229875e+00+0.6068916j -3.41229875e+00-0.6068916j
-1.19505021e+00+3.11150027j -1.19505021e+00-3.11150027j
-5.31945232e-01+3.26594145j -5.31945232e-01-3.26594145j
-1.42239978e+00+2.9601158j -1.42239978e+00-2.9601158j
1.08036135e+00+3.06493937j 1.08036135e+00-3.06493937j
1.97429241e-01+3.17989742j 1.97429241e-01-3.17989742j
-6.10549302e-01+3.09788205j -6.10549302e-01-3.09788205j
3.28000172e+00+0.11647854j 3.28000172e+00-0.11647854j
1.53528869e+00+2.84124303j 1.53528869e+00-2.84124303j
1.72970682e+00+2.6625085j 1.72970682e+00-2.6625085j
2.72318748e+00+1.67474696j 2.72318748e+00-1.67474696j
-1.85119977e+00+2.44453792j -1.85119977e+00-2.44453792j
-3.08346167e+00+0.j -2.40546907e+00+1.83312475j
-2.40546907e+00-1.83312475j -2.75694117e+00+1.06569835j
-2.75694117e+00-1.06569835j 1.82380751e+00+2.33080829j
1.82380751e+00-2.33080829j 2.96227090e+00+0.77144457j
2.96227090e+00-0.77144457j -2.82752320e+00+0.70245767j
-2.82752320e+00-0.70245767j -2.08241671e+00+1.97016551j
-2.08241671e+00-1.97016551j 2.95770128e+00+0.17077543j
2.95770128e+00-0.17077543j 2.73804848e+00+1.08273167j
2.73804848e+00-1.08273167j 2.02138632e+00+2.07845336j
2.02138632e+00-2.07845336j 2.24179718e+00+1.75289231j
2.24179718e+00-1.75289231j -1.51895657e+00+2.27594891j
-1.51895657e+00-2.27594891j 1.00630238e+00+2.64403527j
1.00630238e+00-2.64403527j 3.13719589e-01+2.74520777j
3.13719589e-01-2.74520777j 2.74569520e+00+0.62811962j
2.74569520e+00-0.62811962j -1.60936132e+00+2.03107077j
-1.60936132e+00-2.03107077j 8.28388354e-01+2.47049229j
8.28388354e-01-2.47049229j -2.17412348e+00+1.32861691j
-2.17412348e+00-1.32861691j -2.44207782e+00+0.78638436j
-2.44207782e+00-0.78638436j 2.49075200e+00+0.j
-3.67383810e-01+2.44928344j -3.67383810e-01-2.44928344j
-2.44197694e+00+0.j -8.10444192e-01+2.21490546j
-8.10444192e-01-2.21490546j -1.15707743e+00+1.96669336j
-1.15707743e+00-1.96669336j 1.96940809e+00+1.20962904j
1.96940809e+00-1.20962904j 9.18687883e-01+2.15365758j
9.18687883e-01-2.15365758j 2.38068066e-01+2.2807522j
2.38068066e-01-2.2807522j 2.20065446e+00+0.1142152j
2.20065446e+00-0.1142152j 1.63952768e+00+1.42688887j
1.63952768e+00-1.42688887j -3.81618161e-01+2.18519686j
-3.81618161e-01-2.18519686j -2.24972919e+00+0.51311623j
-2.24972919e+00-0.51311623j -2.26978107e+00+0.j
7.85011614e-01+2.03776738j 7.85011614e-01-2.03776738j
1.82188037e+00+1.10311226j 1.82188037e+00-1.10311226j
1.91168517e+00+0.78106048j 1.91168517e+00-0.78106048j
-1.60882452e+00+1.30431942j -1.60882452e+00-1.30431942j
-1.09851682e-01+1.9475021j -1.09851682e-01-1.9475021j
1.05753103e+00+1.66011232j 1.05753103e+00-1.66011232j
-1.25549113e+00+1.52694411j -1.25549113e+00-1.52694411j
-1.97838532e+00+0.j -1.88542774e+00+0.59872839j
-1.88542774e+00-0.59872839j -1.33263241e+00+1.37157868j
-1.33263241e+00-1.37157868j -7.36967334e-01+1.60125376j
-7.36967334e-01-1.60125376j 6.39048729e-01+1.41177228j
6.39048729e-01-1.41177228j 9.10425745e-01+1.25525695j
9.10425745e-01-1.25525695j -1.35778758e+00+0.7929235j
-1.35778758e+00-0.7929235j 6.77416091e-04+1.44598365j
6.77416091e-04-1.44598365j 4.92219908e-01+1.27440865j
4.92219908e-01-1.27440865j 1.42014736e+00+0.22864019j
1.42014736e+00-0.22864019j -7.28334493e-01+1.39320948j
-7.28334493e-01-1.39320948j 9.23836241e-01+0.75447069j
9.23836241e-01-0.75447069j 1.24220929e+00+0.3706218j
1.24220929e+00-0.3706218j 1.01069577e+00+0.j
-1.21136259e+00+0.79980455j -1.21136259e+00-0.79980455j
-1.20524066e+00+0.26625581j -1.20524066e+00-0.26625581j
-6.72563837e-01+0.55390881j -6.72563837e-01-0.55390881j
5.37305248e-01+0.54768552j 5.37305248e-01-0.54768552j
-8.32766151e-02+0.72284583j -8.32766151e-02-0.72284583j
7.19668130e-01+0.j -5.52877211e-01+0.j
-2.55014021e-01+0.11555604j -2.55014021e-01-0.11555604j
4.88654227e-02+0.j 4.26674802e-01+0.j ]
v:
[[-0.07096767+0.j -0.04389969-0.04140018j -0.04389969+0.04140018j
... 0.03492436+0.01435462j -0.04411245+0.j
-0.03392385+0.j ]
[-0.06972177+0.j -0.00126628+0.08321265j -0.00126628-0.08321265j
... 0.07258116+0.01517006j -0.06111217+0.j
0.0476217 +0.j ]
[-0.07377892+0.j 0.08453892+0.00017358j 0.08453892-0.00017358j
... 0.06239748+0.04125062j -0.06051142+0.j
-0.03343693+0.j ]
...
[-0.06513561+0.j -0.01477797-0.04624721j -0.01477797+0.04624721j
... -0.02565731+0.00520387j 0.01046171+0.j
0.00791768+0.j ]
[-0.07458309+0.j 0.00066013-0.09091077j 0.00066013+0.09091077j
... 0.06094749+0.021501j -0.16036246+0.j
0.01406385+0.j ]
[-0.07271759+0.j -0.09772287-0.04701814j -0.09772287+0.04701814j
... 0.04478089-0.00391117j -0.09898911+0.j
0.02863318+0.j ]]
n: 476 p: 0.4199509866605583 largest: 199.89666965042576 199.97480704979378
n: 512 p: 0.6294257894132946 largest: 322.26600417960685 323.18761921882435
n: 313 p: 0.6676168967659004 largest: 208.96408868772684 209.16666814939023
n: 229 p: 0.21735998834337267 largest: 49.77543733063234 50.96875441907598
n: 356 p: 0.0814492390624707 largest: 28.99592910623957 29.873689878470337
n: 316 p: 0.38583821013948105 largest: 121.92487440407601 122.87046409333433
n: 549 p: 0.7360906459827864 largest: 404.11376464454975 404.2183051057804
n: 260 p: 0.8102961984562087 largest: 210.67701159861426 211.09395706605434
n: 570 p: 0.5521359753613532 largest: 314.7175059559713 315.138251741639
n: 592 p: 0.8246712550241941 largest: 488.2053829743229 487.75664685491245
[[-0.3169858 1.31508159 1.03055188 -1.53512253 0.30338934]
[-0.32090681 0.62760445 -0.51129639 0.82698868 -0.14111862]
[-0.42255256 -0.34763146 0.65547679 -1.18134221 -1.37472535]
[ 0.06985629 -1.53297786 -1.31236654 0.45726494 -0.23624176]
[-0.80582088 -0.73231382 -0.70437792 0.01142209 0.3181078 ]]
[[-0.8169858 0.81508159 0.53055188 -2.03512253 -0.19661066]
[-0.82090681 0.12760445 -1.01129639 0.32698868 -0.64111862]
[-0.92255256 -0.84763146 0.15547679 -1.68134221 -1.87472535]
[-0.43014371 -2.03297786 -1.81236654 -0.04273506 -0.73624176]
[-1.30582088 -1.23231382 -1.20437792 -0.48857791 -0.1818922 ]]
0.45726494372827353