题目:
代码:
from scipy import linalg
import numpy as np
n=200
m=500
A = np.random.normal(0,1,n*m).reshape(n,m)
B = linalg.toeplitz(list(range(0,m)))
题目9.1:
代码:
# 9.1
def fun1(x): # A(B - λ*I)
return A.dot(B - x * np.eye(m))
print(A) # A
print(A+A) # A + A
print(A.dot(A.T)) # A * A.T
print((A.T).dot(A)) # A.T * A
print(A.dot(B)) # A * B
print(fun1(100)) # A(B - λ*I)
输出:
[[ 0.68847923 1.63312114 -1.93960162 ... 0.67031345 0.59504172
0.88432458]
[-0.32318122 -0.03028246 1.38490725 ... 0.31844524 0.31643666
-0.38662978]
[-0.02474301 1.96491606 -0.2363918 ... -1.33390037 -0.504195
-0.46569825]
...
[ 1.13667509 1.39618595 0.15819695 ... 1.01890038 0.63758988
0.92949653]
[ 0.14313636 -0.38264473 1.17496287 ... 0.57603402 -0.49460566
0.45760324]
[ 0.34461222 1.28067661 0.46797381 ... -0.28565737 0.74617274
-1.56528379]]
[[ 1.37695845 3.26624229 -3.87920323 ... 1.34062691 1.19008343
1.76864917]
[-0.64636243 -0.06056492 2.7698145 ... 0.63689048 0.63287332
-0.77325956]
[-0.04948601 3.92983212 -0.47278359 ... -2.66780074 -1.00839
-0.93139649]
...
[ 2.27335017 2.7923719 0.31639391 ... 2.03780075 1.27517976
1.85899306]
[ 0.28627272 -0.76528946 2.34992573 ... 1.15206804 -0.98921132
0.91520648]
[ 0.68922445 2.56135322 0.93594762 ... -0.57131475 1.49234548
-3.13056757]]
[[537.68819929 -21.45244068 -10.54601043 ... 6.26960734 -18.65896958
-35.47257155]
[-21.45244068 468.30128624 -25.43515312 ... -1.0461549 11.48857291
4.77006777]
[-10.54601043 -25.43515312 418.01333878 ... -18.23469532 -7.4090526
31.4846937 ]
...
[ 6.26960734 -1.0461549 -18.23469532 ... 495.55370687 -14.38905389
11.18704649]
[-18.65896958 11.48857291 -7.4090526 ... -14.38905389 553.20773932
0.97217488]
[-35.47257155 4.77006777 31.4846937 ... 11.18704649 0.97217488
474.22927081]]
[[200.7250452 4.85859468 22.12725132 ... 12.86470766 24.72859146
-5.63441306]
[ 4.85859468 205.7485706 -30.53592031 ... -11.26546868 16.9468731
-20.23511433]
[ 22.12725132 -30.53592031 218.67423693 ... 6.82341367 -21.13240558
-30.58136112]
...
[ 12.86470766 -11.26546868 6.82341367 ... 207.12585209 -9.87454205
-7.54964936]
[ 24.72859146 16.9468731 -21.13240558 ... -9.87454205 189.46505303
-4.62273318]
[ -5.63441306 -20.23511433 -30.58136112 ... -7.54964936 -4.62273318
202.84339494]]
[[ 9924.21045755 9884.25541495 9847.56661465 ... 10622.52144435
10660.8947128 10700.45806468]
[-2152.6702086 -2145.29842352 -2137.98720335 ... -1833.26275265
-1841.14051393 -1848.38540189]
[ -115.02983374 -101.72660503 -84.4935442 ... -6524.14056513
-6535.55349336 -6547.97481158]
...
[ 3590.7336347 3588.57241776 3589.20357273 ... -1381.76061668
-1380.4602224 -1377.88464835]
[ 4483.28306434 4468.267257 4452.48616021 ... 3122.6919274
3138.0680123 3152.45488588]
[ 2065.51536801 2056.82115046 2050.68828614 ... 2593.28651211
2604.30817619 2616.82218576]]
[[ 9855.36253493 9720.94330062 10041.52677616 ... 10555.49009903
10601.39054129 10612.02560639]
[-2120.35208699 -2142.27017774 -2276.47792834 ... -1865.10727673
-1872.7841799 -1809.72242407]
[ -112.55553315 -298.2182109 -60.85436446 ... -6390.75052819
-6485.13399352 -6501.40498687]
...
[ 3477.06612595 3448.9538228 3573.38387737 ... -1483.65065439
-1444.21921027 -1470.83430158]
[ 4468.96942813 4506.53172988 4334.98987358 ... 3065.08852562
3187.52857808 3106.69456181]
[ 2031.05414576 1928.75348941 2003.89090507 ... 2621.85224941
2529.69090221 2773.35056432]]
题目9.2:
代码:
# 9.2
print(np.linalg.solve(B, np.linspace(1, m, m)))
输出:
[ 1.00200401e+00 4.46981574e-16 2.16259876e-16 -1.11022302e-16
1.22591761e-16 -1.73541876e-17 2.89236459e-18 -9.65604795e-17
4.44089210e-16 -8.99747878e-16 7.74263753e-16 -3.33066907e-16
2.89236459e-18 3.30174543e-16 -1.08419174e-15 1.08419174e-15
-6.19855981e-16 1.37676555e-15 -1.28598980e-15 -3.11707907e-16
1.74921311e-15 -2.10653138e-15 4.46981574e-16 1.77635684e-15
-1.86602014e-15 1.92008511e-16 -3.27282178e-16 1.77924920e-15
-1.48667540e-15 -1.78659136e-16 1.72429428e-15 -1.61037961e-15
-2.79891897e-16 2.82784261e-16 1.69982042e-16 2.74262910e-15
-2.73973674e-15 -5.82255242e-16 8.31443576e-16 -8.34335940e-16
1.22703006e-15 1.70516017e-15 -2.03533472e-15 -9.80734087e-16
3.38851637e-16 -3.87131876e-17 5.88039971e-16 2.89236459e-15
-3.92160141e-15 8.10084576e-16 -7.22283100e-27 -1.11600775e-15
1.67690400e-15 -1.03791391e-15 4.02973135e-15 -4.03262371e-15
3.68887730e-16 -2.22044605e-16 -1.41058396e-16 1.38166032e-16
3.89156532e-15 -3.44747611e-15 -4.71232939e-16 3.93139095e-16
-1.65309761e-15 2.10297155e-15 -8.43013034e-16 3.33066907e-16
-4.97931689e-16 5.00824054e-16 6.57167485e-15 -6.76368336e-15
4.05376022e-16 -7.38442930e-16 2.19152240e-16 2.16259876e-16
1.67757147e-16 -8.30998597e-16 6.69026179e-16 -3.33066907e-16
1.13914667e-16 -5.78472919e-18 3.81124658e-16 7.12901125e-15
-7.72639579e-15 1.05237573e-16 -6.87492814e-17 1.30156407e-15
-1.45485939e-15 4.22730211e-17 3.68220262e-16 -1.88448678e-16
7.11299200e-16 -1.03858138e-15 6.60349086e-16 6.47578183e-15
-5.83745922e-15 -1.04013881e-15 1.79771584e-16 7.85833211e-16
-7.82940846e-16 -1.33515999e-15 2.04067447e-15 -1.81106522e-16
1.44618230e-16 -1.07662710e-15 5.18623220e-16 -2.24936970e-16
6.67001524e-15 -6.88627512e-15 1.24905653e-15 -1.41725865e-16
-9.90523628e-16 -2.30721699e-16 6.66133815e-16 -1.08129938e-16
2.22044605e-16 -7.77156117e-16 1.22413769e-15 -9.80066618e-16
2.00018136e-16 6.55031585e-15 -6.43350881e-15 2.13367511e-16
-7.52237284e-16 1.08819656e-15 -4.66115679e-16 -2.80336876e-16
-5.91599804e-16 1.57923107e-15 -6.98617294e-16 -6.61461533e-16
6.99729742e-16 7.58022013e-16 -1.78503393e-15 7.80048482e-16
-1.16807032e-16 7.91617940e-16 -8.91070784e-16 4.57438585e-16
1.35198021e-14 -1.35302591e-14 4.67228131e-18 -1.14270650e-15
2.46740949e-15 -2.32390371e-15 8.80613774e-16 -3.41744001e-16
5.66680971e-16 -3.50421095e-16 1.22591761e-16 -5.38869773e-16
9.80066618e-16 1.19699396e-16 -1.68847345e-15 1.91919515e-15
-1.57455879e-15 1.34672945e-15 -1.13336194e-15 1.02701192e-15
-2.32501615e-16 2.89236461e-18 -7.94510305e-16 9.15989618e-16
-6.89940200e-16 2.26716886e-16 1.42184194e-14 -1.41073971e-14
1.15694584e-17 -1.28376490e-16 -2.07582782e-16 7.68479023e-16
-5.52219148e-16 4.54546220e-16 -9.06200076e-16 -2.09807678e-16
1.66066226e-15 -1.10733066e-15 -2.89236459e-18 7.68479023e-16
-8.63259586e-16 -4.66115679e-16 1.23570715e-15 -4.61443397e-16
-3.25502261e-16 6.78815721e-16 2.10475147e-16 -8.93963149e-16
1.04570105e-17 -6.45219807e-18 -1.09242386e-16 1.46549439e-14
-1.37638731e-14 -1.08129938e-16 -1.11712020e-15 1.11133547e-15
5.55111512e-16 -2.55173304e-15 1.77457692e-15 -5.78472920e-18
6.83488002e-16 -1.56588169e-15 2.19152240e-16 6.66133815e-16
6.70806096e-16 -7.76043669e-16 2.19152240e-16 -1.32247809e-15
2.31478163e-15 -1.88048196e-15 5.59783794e-16 -1.22369272e-17
1.30156407e-16 -9.06645055e-16 2.11921329e-15 -1.44039757e-15
9.90523628e-16 1.17799335e-14 -1.24471798e-14 1.11244787e-18
1.16807032e-16 -4.49873939e-16 7.85833211e-16 -8.88178420e-16
-4.58551033e-16 1.79660339e-15 -1.67401163e-15 6.50559544e-16
-8.81281243e-16 2.01575563e-15 -3.41744001e-16 -1.00899026e-15
-8.65706972e-16 1.86201533e-15 -1.43060803e-15 8.88178420e-16
-4.49873939e-16 2.20932157e-16 -4.24510127e-16 -1.26819062e-17
8.66819420e-16 -1.97793240e-16 -1.08129938e-16 1.46491592e-14
-1.63957024e-14 1.36920090e-15 9.32453847e-16 -4.17167970e-16
-4.16945481e-16 -5.59450059e-16 1.33515999e-15 -7.23091148e-16
-2.79001938e-16 7.77156117e-16 -7.97068935e-16 9.32342602e-16
-1.01355130e-15 4.55547423e-16 2.07916516e-16 -3.37405454e-16
-3.64549183e-16 9.79510394e-16 -2.86232850e-16 -3.87131876e-16
4.22730210e-16 -5.62119934e-16 8.67709378e-17 5.84925117e-16
-7.01732148e-16 5.60896242e-16 -1.66533454e-16 -8.41010628e-17
8.55472450e-17 -1.72318183e-16 1.16807032e-16 6.61795268e-16
-1.49590872e-15 1.61271575e-15 -1.14749003e-15 7.34883096e-16
-5.66903460e-16 2.76219706e-14 -2.75349772e-14 3.35959272e-16
1.06683756e-16 -5.50772965e-16 -5.84035158e-17 6.93055054e-16
-1.02467578e-15 9.42243389e-16 2.24936970e-16 -9.26891607e-16
7.42114008e-16 -8.17315487e-16 5.22183054e-16 2.57865428e-16
-1.11022302e-16 -7.81494664e-16 7.39889112e-16 -2.87122808e-16
6.06284117e-16 -1.16718036e-15 9.43689571e-16 -4.96707996e-16
4.38304481e-16 7.52014795e-17 -7.38442930e-16 3.88578059e-16
1.12468485e-16 5.84035158e-17 -2.89236459e-18 3.88578059e-16
-7.23091148e-16 1.81885235e-16 -7.23091149e-17 -2.20598423e-16
6.14961210e-16 1.11022302e-16 -7.23091148e-16 4.49317715e-16
-4.52210080e-16 6.69026179e-16 -3.88578059e-16 -3.34513090e-16
8.34113451e-16 -4.94371856e-16 1.58968808e-16 6.67023773e-16
-1.60314870e-15 3.81903371e-16 1.33894232e-15 -1.34272464e-15
2.81517183e-14 -2.71984617e-14 -1.00643163e-15 6.69026179e-16
-2.79001938e-16 3.92916606e-16 -1.11578526e-16 -6.30757972e-17
-6.05394158e-16 4.45535392e-16 4.43532986e-16 -7.18196377e-16
6.60349086e-16 -6.13515028e-16 7.30322060e-16 -6.14961210e-16
-2.00240623e-18 5.05941314e-16 -9.49474300e-16 1.89171769e-15
-1.89082773e-15 2.76665798e-16 3.90024241e-16 2.24936970e-16
-1.00353927e-15 1.00209309e-15 2.42481051e-27 1.06127532e-16
-6.07174075e-16 2.80448121e-16 -4.40640621e-16 7.64474211e-16
-7.69368982e-16 5.47324377e-16 -1.50959183e-16 2.72660985e-16
-3.45192590e-16 -2.65430074e-16 7.72817570e-16 -4.71121694e-16
-5.35866163e-16 1.02456453e-16 1.46398146e-15 -9.01750284e-16
-5.05273846e-16 3.10261725e-16 6.96058664e-16 -8.68265602e-16
4.24899483e-16 -2.14257470e-16 3.99578600e-28 2.78139791e-14
-2.76744782e-14 -2.07137803e-16 2.23602032e-16 -5.77916694e-17
-3.59265056e-16 5.26521601e-16 -1.81440256e-16 2.07026558e-16
-2.73105965e-16 -8.69934273e-17 1.26763441e-16 -5.55111512e-17
1.94289029e-16 -1.94289029e-16 -7.48677450e-17 1.49735490e-16
7.15860237e-17 2.29720495e-17 -5.84035158e-17 -3.32343816e-16
4.15610543e-16 -2.48353998e-16 2.83062373e-16 1.52961589e-17
-2.66542522e-16 1.33994352e-16 7.23091148e-19 -2.77555756e-17
-3.60822483e-16 5.86927523e-16 -3.65606009e-16 2.21321514e-16
-1.12190373e-16 6.00165653e-17 -3.06479402e-16 3.05311332e-16
1.65810363e-16 -3.04588241e-16 2.78723826e-16 -4.61165285e-16
5.14507163e-16 -2.91739467e-16 5.59561304e-17 -1.22591761e-16
1.76656730e-16 -1.34884310e-16 -3.09260522e-17 2.91572600e-16
-5.52942239e-16 5.27355937e-16 2.04412305e-16 2.75098915e-14
-2.82427444e-14 3.17242336e-16 1.41447753e-16 -8.29051813e-17
-2.66987500e-18 -2.95633035e-17 6.30201747e-17 -1.87197174e-16
2.40399996e-16 -4.27180001e-17 -7.31434508e-17 -1.01232761e-17
1.67618090e-16 -3.25474450e-16 2.01297451e-16 8.07359078e-17
-3.98256356e-17 -9.67829691e-17 1.04736972e-16 -1.60971214e-16
7.80660328e-17 7.38665419e-17 -2.70324845e-17 2.21933360e-17
-2.44237941e-16 3.74700271e-16 -8.91905120e-17 -1.87642153e-16
2.77555756e-17 5.76804247e-17 1.09214575e-16 -9.87340984e-17
-3.75868341e-17 9.00248480e-17 -1.19476907e-16 1.68410710e-16
-1.31658211e-16 1.60470613e-17 7.63278329e-17 -1.06614228e-16
1.41851015e-16 -1.39862515e-16 -2.02743634e-17 1.41920543e-16
-1.21103862e-16 7.59662874e-17 3.32482872e-17 -9.56079460e-17
3.37906056e-18 4.09102723e-17 2.77521966e-14 -2.77562083e-14
-4.39277873e-17 8.28147949e-17 -6.92985526e-17 2.76199960e-17
1.38777878e-17 -3.62936134e-17 2.93999127e-17 -1.55899147e-17
6.89370071e-18 3.05836268e-18 -2.77633819e-14 2.00400802e-03]
题目9.3:
代码:
#9.3
print(linalg.norm(A, 'fro'))
print(linalg.norm(B, np.inf))
temp3 = linalg.svdvals(B).tolist()
print(max(temp3))
print(min(temp3))
输出:
316.6298950425481
124750.0
86851.6689846716
0.5000049348346859
题目9.4:
代码:
#9.4
def fun4(n):
Z = np.random.normal(0, 1, n*n).reshape(n, n)
v = np.array(list(range(1, n+1))[::-1])
a = linalg.norm(v, np.inf)
tempa = 0
count = 0
t = time.clock()
while True:
tempa = a
y = np.dot(Z, v)
a = linalg.norm(y, np.inf)
v = y / a
count += 1
if(time.clock() - t > 0.1):
break
t = time.clock()
return count, t, v, a
ans = fun4(20)
print("count:",ans[0])
print("time:",ans[1])
print("corresponding eigenvector:",ans[2])
print("eigenvalue:",ans[3])
输出:
count: 3084
time: 0.10000956050138114
corresponding eigenvector: [-0.16861049 -0.2669244 0.14606545 0.90307745 1. -0.07336917
-0.27901434 0.5302166 -0.0061553 -0.02835079 0.07885574 -0.08280181
0.42621937 0.81197747 0.03662094 0.10433548 -0.1984425 0.11408026
0.30073397 -0.00114137]
eigenvalue: 4.380879101362931
题目9.5:
代码:
#9.5
def fun5(n, p):
M = np.random.binomial(1, p, [n, n])
return max(linalg.svdvals(M))
print(fun5(10, 0.5))
print(fun5(100, 0.5))
print(fun5(600, 0.5))
print(fun5(800, 0.5))
print(fun5(1000, 0.5))
输出:
5.796878971488905
50.74211705951083
300.40158543193365
400.452345835997
500.82632597086706
由此可知,当n足够大时,结果趋近于np
题目9.6:
代码:
#9.6
temp6 = np.random.normal(0, 1, 400).reshape(20, 20)
def fun6(A, val):
a = min(A[A>val])
b = max(A[A<=val])
if abs(a-val) > abs(b-val):
return b
else:
return a
print(fun6(temp6, 0.5))
输出:
0.502466220093656