Numpy的一些矩阵运算实例

题目如下


Pic1

代码实现


前三题的代码如下:

import numpy as np
from scipy.linalg import toeplitz
from scipy.sparse.linalg import svds

# Generate matrices A, with random Gaussian entries, B, a Toeplitz matrix, where A 2 Rn×m and B 2 Rm×m,
# for n = 200, m = 500
n = 200
m = 500

A = np.random.normal(0, 1, [n, m])
B = toeplitz(np.random.normal(0, 1, m))

"""Exercise 9.1: Matrix operations
Calculate A + A, AA>; A>A and AB. Write a function that computes A(B − λI) for any λ."""

A_A = np.add(A, A)
AAT = np.matmul(A, np.transpose(A))
ATA = np.matmul(np.transpose(A), A)
AB = np.matmul(A, B)


def fun(lda):
    return np.matmul(A, (B - lda * np.identity(m)))


print("Below are A+A, AAT, ATA, AB")
print(A_A)
print(AAT)
print(ATA)
print(AB)
print("For lda=2, result is")
print(fun(2.0))

print("\n####\n")

"""Exercise 9.2: Solving a linear system
Generate a vector b with m entries and solve Bx = b."""

b = np.random.normal(0, 1, m)
x = np.linalg.solve(B, b)

print("b is "+str(b))
print("And x is "+str(x))
print("\n####\n")

"""Exercise 9.3: Norms
Compute the Frobenius norm of A: kAkF and the infinity norm of B: kBk1. Also find the largest and
smallest singular values of B"""
AF = np.linalg.norm(A, ord='fro')
B_INF = np.linalg.norm(B, np.inf)
U, S, VT = svds(B)
B_singular_max, B_singular_min = max(S), min(S)

print("A is ")
print(A)
print("Max singular value is "+str(B_singular_max)+" and min singular value is "+str(B_singular_min))
print("\n####\n")


输出如下:

Below are A+A, AAT, ATA, AB
[[-2.66492207e+00 -1.49876012e+00  2.00194667e+00 ...  6.88724846e-01
  -3.40831098e+00 -6.91576946e-01]
 [ 1.63296008e+00  3.22684403e-01 -1.89144047e-03 ...  1.83076990e+00
  -3.31802590e+00  9.16201166e-01]
 [ 1.75877364e+00  3.05972751e-01  8.08349762e-01 ... -9.55688856e-01
   3.61101240e-01 -7.13090871e-01]
 ...
 [ 1.33997184e+00  2.27119849e+00  3.59792183e+00 ...  2.01778678e-01
  -6.29408881e-01  1.30165867e+00]
 [ 2.02176993e+00 -1.94151037e+00 -1.85951773e+00 ...  1.02234975e-01
   3.25138082e+00  3.03088772e-01]
 [-1.00821852e+00  1.90456708e+00  9.38143901e-01 ... -9.27595989e-01
  -7.76512818e-01  2.39483021e+00]]
[[ 4.49305978e+02 -2.29053771e+01 -1.59603117e+01 ... -5.91357295e+01
  -1.35699783e+00  8.24689583e+00]
 [-2.29053771e+01  5.18908889e+02  2.71560621e+01 ...  4.77307211e+01
   3.24210425e+01  5.63168675e+01]
 [-1.59603117e+01  2.71560621e+01  4.88911427e+02 ... -1.22549093e+01
   2.13182561e+01  2.19720608e+00]
 ...
 [-5.91357295e+01  4.77307211e+01 -1.22549093e+01 ...  4.42767039e+02
  -1.11891578e-01  1.47697302e+01]
 [-1.35699783e+00  3.24210425e+01  2.13182561e+01 ... -1.11891578e-01
   4.23681258e+02  1.38232669e+01]
 [ 8.24689583e+00  5.63168675e+01  2.19720608e+00 ...  1.47697302e+01
   1.38232669e+01  5.12051371e+02]]
[[219.20012256  -3.20612379   4.3246027  ...  -8.46571729 -21.58006919
  -13.05689245]
 [ -3.20612379 202.48266643  -2.67977549 ...   3.33105725 -34.53833566
   -3.90295443]
 [  4.3246027   -2.67977549 217.13114269 ...  16.38075194  -6.15373344
   -1.45957956]
 ...
 [ -8.46571729   3.33105725  16.38075194 ... 176.90377695  -2.96049225
  -19.8399056 ]
 [-21.58006919 -34.53833566  -6.15373344 ...  -2.96049225 193.1830672
   -8.16717231]
 [-13.05689245  -3.90295443  -1.45957956 ... -19.8399056   -8.16717231
  191.28936793]]
[[ -1.75100128  -4.51664359 -20.49610688 ...  15.6485837   13.55305409
    8.9376733 ]
 [  6.12003807  10.25952047 -17.9046945  ...  59.1307008   12.06137858
   -9.91080235]
 [ 25.73718843   3.09244542 -20.17783096 ... -13.29777408   0.112725
   27.53598967]
 ...
 [ 23.81562351 -18.49531225   5.44819341 ...   5.91362779 -35.13807488
    6.35920828]
 [-17.50724879 -38.05131258   1.15006618 ...  45.28058997  42.16252686
  -24.66810137]
 [-10.76791969   2.20370108 -13.99994459 ...  -0.48624489  18.46654184
    7.25983222]]
For lda=2, result is
[[  0.91392079  -3.01788347 -22.49805355 ...  14.95985886  16.96136507
    9.62925024]
 [  4.48707799   9.93683607 -17.90280306 ...  57.2999309   15.37940448
  -10.82700352]
 [ 23.97841479   2.78647267 -20.98618072 ... -12.34208522  -0.24837624
   28.24908054]
 ...
 [ 22.47565167 -20.76651073   1.85027158 ...   5.71184911 -34.508666
    5.05754961]
 [-19.52901872 -36.10980221   3.0095839  ...  45.178355    38.91114604
  -24.97119014]
 [ -9.75970117   0.299134   -14.93808849 ...   0.4413511   19.24305466
    4.86500201]]

####

b is [ 1.22083052e+00 -1.65700579e+00  9.63059303e-02 -1.17430549e+00
  1.49951110e+00  7.26584678e-01 -4.17270003e-01  7.12865120e-01
 -7.83891392e-02 -6.39535285e-01  1.30622553e-01  3.63590454e-01
 -1.33990228e+00 -8.34523470e-01 -1.21964855e-01 -1.65009101e+00
 -3.46959995e-01  8.65272592e-01  1.18348362e+00 -1.90895548e+00
 -2.86590183e-01 -1.53595185e-01 -1.14898115e+00 -1.27306028e+00
 -7.67913925e-01 -1.34188844e+00 -1.36358747e-01  7.94255993e-01
  2.16212057e+00 -1.04995856e+00  1.45502980e+00  1.70369853e+00
 -2.09064969e-01  1.35607937e+00  7.74270679e-01 -1.52029884e+00
  7.84937947e-01 -6.76828000e-01  1.71962803e-01  8.33550493e-03
 -6.30517493e-01  3.08986877e-02 -1.23903993e+00  2.38859740e-01
 -8.16949510e-02  6.11653434e-01  8.66016775e-01 -7.61510181e-01
 -1.88575021e+00 -4.25029892e-02 -2.29107390e-01  8.91181590e-01
  6.81565497e-01 -5.14479737e-02 -1.80205071e-01  1.97680876e-01
  8.64809910e-02 -5.03409004e-01 -7.56136228e-01  9.93851611e-02
 -2.44956786e+00 -2.27354517e-01 -5.20741707e-01  2.63966781e-01
  3.12756722e-01  2.98740963e-01  6.65827807e-02 -8.88432052e-01
  8.40858116e-01 -1.07113833e+00  5.11631439e-01 -2.54074770e+00
  2.29574799e-01 -1.25345684e+00  4.89083246e-01  1.25143033e+00
 -1.33435927e+00  1.54461599e-01  1.40185607e+00  1.44780147e+00
  3.34002312e-01  6.96277640e-01 -1.21985927e+00  2.89645503e-01
 -1.39108362e-01  5.56389255e-01 -4.30809609e-01  1.13177275e+00
 -3.99258654e-01 -1.44854130e+00  3.48405234e-01  2.05809756e-01
 -8.76304140e-01  1.93994268e+00  5.11929015e-01 -1.76554099e-01
 -9.66811540e-02 -2.70758542e-01  3.75366234e-01  1.47489067e+00
 -3.51511581e-01  8.30042939e-01  2.71662694e-01  6.01867034e-01
 -4.37012890e-01 -2.98459299e-01  2.78374049e+00 -4.25417595e-01
  2.47960022e+00 -3.68180435e-01  8.03825097e-02 -1.40543218e+00
 -1.61452231e-01  1.86685765e+00 -5.58057290e-01  2.35555370e-01
  1.60752881e+00  1.11250121e+00 -5.00839225e-01  7.55611982e-01
  1.08694664e+00 -6.32092029e-01  1.10891407e+00 -1.76146993e-01
 -7.08387969e-01 -1.88647910e-01 -1.82464750e+00  1.51252882e+00
  9.84317743e-01 -7.29832049e-01  1.54524418e+00 -6.37527085e-01
 -7.13666537e-01 -5.56811718e-01 -6.59545623e-01 -7.73050009e-01
 -8.49832501e-01 -1.81453738e+00  8.29154728e-01 -1.17107353e+00
  4.54964645e-01 -1.91873544e-01  3.07404786e-02  1.57276724e+00
  3.32172631e-01 -1.16462774e+00 -3.09937361e-01 -8.50778702e-03
 -6.07059275e-01 -7.15277290e-01  5.13739500e-01 -5.01157315e-01
  2.22054888e-01  1.69260987e-01 -5.75477962e-01  1.73358519e+00
  7.65091925e-01  7.99511613e-01  6.14485967e-01 -1.20838186e+00
 -1.29934936e-01 -6.74979228e-01  1.32549135e+00  4.80502516e-01
 -1.40091048e-01  9.30929431e-01 -8.46744248e-03 -1.62697541e+00
 -9.37776857e-01 -6.45024855e-01 -1.06599741e-01 -8.77535832e-01
 -1.14497144e+00 -1.87746534e+00  2.40280331e+00  1.32747016e+00
 -1.62694493e+00  5.22903503e-01 -6.69411912e-01  1.40317729e+00
  4.26814722e-02 -2.08643450e+00  1.14248174e+00  8.33684581e-01
  5.71004053e-01  1.20216693e+00  1.41815822e+00  6.18582868e-01
  2.84448353e-01  1.97219583e-01 -1.21924832e+00 -7.88864606e-01
  1.54700326e+00  1.77690114e+00 -1.87567642e+00 -1.68040484e+00
  1.72693659e-01 -8.96658505e-01 -1.53919610e+00  7.91364636e-01
 -4.17597508e-01  8.86790774e-02 -1.01912330e+00  2.59048709e-01
  8.48603612e-01  1.90547607e+00  1.55866286e+00  9.96906822e-02
 -1.77328474e+00 -9.11552560e-02  5.07813796e-01  1.43140189e-01
 -8.17415553e-01  8.01849469e-01  4.89258723e-01 -2.64602814e-02
  1.82559887e+00  8.53386092e-01  8.66034185e-01  8.88499910e-01
  9.55386377e-01  2.21663757e+00 -3.80147626e-01  7.13490199e-01
 -5.30174377e-01  6.44025146e-01  7.42604825e-01 -2.31682987e-01
 -9.89001751e-01  2.46603481e+00 -2.24341273e-01 -1.04440190e+00
 -1.06669090e-01  1.37490820e+00 -1.13522859e+00 -7.67281652e-01
 -8.97731023e-01  2.33575498e+00 -5.27999028e-02  1.57401097e+00
 -2.51295947e-01 -1.34863483e+00  2.02397623e+00  2.50420307e-01
  9.71274371e-01 -3.31361377e-01  1.11251487e+00 -1.45327609e+00
  4.96420180e-02  1.48022651e+00  8.12280953e-01 -2.94507168e-01
 -4.30391003e-01  4.23265185e-01 -1.45451598e+00 -8.40626527e-01
  2.62107733e-01 -5.93654400e-01 -4.97031232e-01 -5.01388391e-02
 -6.91483862e-01  1.93045442e-01  1.07705140e+00  1.44155780e+00
 -1.14247860e+00  6.72453661e-01  1.59848426e+00 -7.78763538e-01
 -4.16473954e-01 -1.08999243e+00 -6.65183938e-01  3.32177661e-01
 -2.01135876e+00  9.29419032e-01  1.86688759e+00 -2.48181025e-01
 -5.91009035e-01  1.47040750e-01  1.11221020e+00  1.22154854e+00
 -1.03821061e-01  6.00958331e-01 -5.71203779e-01  1.87890890e+00
 -2.32905428e+00  6.26635148e-01 -8.87572864e-01 -1.22240542e+00
 -4.61387224e-01  1.29401335e+00  9.57568555e-01 -5.05249237e-01
 -2.95633018e-01  2.37564388e-01 -9.64839579e-01  1.83745618e-01
  2.63919714e-01  2.29596409e-01  5.11585110e-01 -8.49283496e-01
  6.76411063e-01 -1.77529475e+00 -3.51814213e-01 -1.85007602e-01
  4.17632194e-01 -2.39064060e+00  2.89057433e-01 -1.17671080e+00
  4.90194862e-01  3.84311871e-01 -2.99066418e-01  1.05056426e+00
 -6.08274179e-01 -7.45825494e-01  1.50512185e+00 -1.36022155e+00
  1.70342434e+00  9.38798105e-01 -6.37056736e-01  1.05270470e-01
 -1.13779807e+00 -6.30109814e-01  3.16026550e-01  4.19923032e-01
 -3.92932637e-01 -7.87367682e-01  2.02415783e+00  5.09481384e-01
  1.29829193e+00 -1.32656286e+00  1.09659156e+00 -8.21793095e-01
  1.69078597e+00  1.61161915e+00  2.23713504e-01 -1.07058501e+00
 -6.07294619e-02 -7.24527628e-01  2.78946517e-01  3.13740054e-01
 -1.41467482e+00  2.09980799e-01 -2.00313722e+00  5.43039292e-03
 -4.42195971e-01 -1.03398078e+00 -1.79314480e-01  1.41956924e+00
 -7.02922742e-01  3.80644507e-01 -6.10204202e-01 -5.57809881e-01
  5.78073359e-01  1.08068473e+00  1.45493738e+00 -5.82557557e-01
 -1.35529638e+00 -3.41661190e-01  1.31395922e+00 -1.58647064e+00
  1.69887956e-01  5.92896953e-02  3.06606099e-02  6.09422494e-01
  8.71926376e-01 -2.31309695e-01  1.50560781e-01  8.78518699e-01
  6.71533597e-02  9.94330585e-01 -1.48032841e+00 -1.14855348e+00
 -1.44726196e-01  1.03845982e+00 -1.63474971e+00  1.23358855e+00
  4.39442438e-01 -6.33121570e-01 -2.11366102e+00  5.90978788e-02
  3.53944410e-01  9.41693659e-01 -1.34001436e+00  4.47333595e-01
  1.98729527e+00 -4.37301413e-01 -8.48278120e-01  1.97435498e-01
 -7.39014805e-01  2.86153679e-02  5.98179164e-01  5.23101281e-01
 -6.92919351e-01 -7.60772849e-01 -9.61837561e-01  1.11391230e+00
  1.31773806e+00  4.16273521e-01 -1.33425922e+00  2.25796715e+00
 -1.51219270e+00  1.34270793e+00 -1.47010422e+00 -1.28160917e+00
  1.32655793e+00 -1.71780237e+00  1.66684415e+00  1.14800594e+00
  5.55001933e-01 -5.35078207e-01  7.82194550e-01  6.81445161e-01
  1.95599872e-01  3.10051992e-01 -4.44105802e-01  5.56504319e-01
  2.17688896e-01  1.76189559e+00  1.05064260e-01 -1.06024068e+00
 -9.86178820e-01  8.35076660e-01 -3.50997221e-01  9.22069092e-01
  1.31897069e+00  8.01993622e-01 -1.82465603e+00  1.59001602e+00
  8.68511153e-01  1.58762957e+00  3.93062370e-01 -3.72687822e-01
 -1.10197642e+00  3.45167853e-01 -6.73795665e-01 -1.91513250e+00
  5.27179610e-01  4.74489603e-01  1.51726172e-01 -1.07329431e-02
 -5.54889113e-01 -6.17797133e-01  2.62081383e-01  1.59639032e+00
  1.85638564e-03  7.84950336e-02  1.36238212e-01 -1.11423081e+00
 -2.41924959e+00  1.01767041e+00 -1.91917639e-01 -2.43109033e-01
  1.82987839e-01  6.57747421e-01  1.60012352e+00 -1.81610055e-01
 -6.85470022e-01 -4.13683398e-02  7.87718133e-01 -1.08314741e+00
 -1.16900058e-01  5.81766797e-01  2.44477087e+00  4.71460738e-01
 -2.82248557e-01 -2.15054241e+00  4.50708131e-01 -1.46103659e+00
  8.23483880e-01  2.25415494e+00 -5.40341850e-01 -1.28597633e+00
 -6.64024427e-01  2.11951835e-01 -1.03379508e+00  6.88824346e-04
 -3.23688088e-01  6.46250684e-01  2.80159352e-01 -1.51268071e+00
 -1.04489348e+00 -6.86325630e-01 -2.73312198e-01 -7.42726585e-01
  9.24762684e-01 -2.07956475e+00  5.75679764e-01 -1.08739299e+00
 -1.26104279e+00  4.45294167e-01  7.99437550e-01  7.37493450e-01
  8.77937445e-01 -1.83107848e-01  6.56138270e-02  2.40666319e+00
 -3.38292466e-01  6.54186160e-01  9.17148679e-01 -1.89492615e-01]
And x is [ 1.40464116e+00  1.03804892e+00 -1.20566036e+00 -8.68844364e-01
  3.39976790e+00  1.94347886e+00 -2.87342416e+00  4.91760913e-01
  3.77929839e+00 -1.59109227e+00 -1.61373727e+00  2.39840088e+00
  1.59038599e-01 -2.91140545e+00  6.62460489e-01  1.74038985e+00
 -2.32178940e+00 -1.75463776e+00  1.59586731e+00 -1.81151513e-01
 -2.28964736e+00 -2.87024603e-02  2.15177626e+00 -1.67694516e+00
 -8.15638745e-01  2.18239896e+00  2.74001460e-01 -2.04152528e+00
  7.37587128e-01  2.11582349e+00 -5.18641059e-01 -9.14253403e-01
  1.33046435e+00  6.34898848e-01  4.79361226e-02  7.52123590e-01
 -2.99498230e-01  4.19109132e-02  1.65984268e-01 -6.80997779e-01
  4.25680457e-01  8.66983133e-01 -8.64153965e-01 -9.52921781e-01
  1.09672453e+00  1.98494871e-01 -1.24224276e+00 -3.14893572e-02
  4.90082335e-01  2.93962154e-01 -3.76770810e-01 -7.32979248e-01
  3.20287523e-02  5.18199987e-01 -2.37041562e-01 -1.04548962e+00
  6.60656696e-01  1.61004306e+00 -6.98836128e-01 -4.24237846e-01
  5.04617980e-01  1.01501944e+00  3.33302989e-01 -7.91035643e-01
  5.72359143e-01  2.38751829e+00  2.16491219e-01 -1.55303043e+00
  1.46872746e+00  1.41303650e+00 -1.27159803e+00  3.78487386e-01
  1.29663853e+00 -4.83616905e-01  6.44535341e-01 -1.25528143e-01
 -7.29462856e-01  5.41630002e-02 -5.50938349e-02 -2.74019373e-01
 -5.63408589e-01 -3.07408151e-01  4.45558134e-01  9.94171332e-02
  2.51313665e-02  3.31324675e-02  7.12588757e-01  1.01283060e+00
 -2.36861905e-01 -5.03142535e-01  1.42169264e+00  2.46807022e+00
 -7.71776794e-01 -9.23305039e-02  2.64078195e+00  4.44070056e-01
 -6.51390706e-01  4.02218638e-01  1.61410509e+00 -7.33528647e-02
 -6.11125460e-01  1.30772160e+00 -5.44568336e-01 -2.02070812e+00
  8.03146243e-01 -3.61768229e-01 -3.43684962e+00 -1.30533449e+00
  2.16100745e+00 -2.33816318e+00 -3.60390478e+00  1.34021798e+00
  7.35803482e-01 -3.32472557e+00 -7.17680151e-01  2.25188684e+00
 -1.32442586e+00 -1.38548025e+00  2.61686108e+00 -9.00242709e-02
 -1.75270851e+00  2.10949210e+00  2.03505420e+00 -1.31448461e+00
 -1.61158126e+00  2.18604284e+00  1.23468014e+00 -2.20869922e+00
 -4.87846893e-01  2.15913382e+00 -3.93444912e-01 -1.47508556e+00
  2.76094253e-01 -1.96122690e-02 -1.09470023e+00 -6.46666316e-01
 -5.85670625e-01 -3.38174832e-02 -9.55744590e-01 -7.56882893e-01
  5.90524294e-01 -2.17481893e-01 -1.38494111e+00  1.26383861e+00
  3.08417364e-01 -1.49332150e+00 -1.22971626e-02  1.86532882e+00
 -3.74799289e-01 -1.09358620e+00  1.18998062e+00  1.48613180e+00
 -4.74912263e-03  5.80705642e-01  5.38529931e-01  1.22148035e+00
  1.45727321e+00 -3.33385138e-02  5.36150706e-01  1.75299094e+00
  1.41814157e+00  5.32178916e-01 -7.68212799e-03 -8.91631659e-01
  7.10576990e-01  8.19570072e-01 -2.13210414e+00 -1.41427299e+00
  1.83070761e+00 -1.05783188e+00 -2.75955752e+00 -2.49292069e-01
  7.11584770e-02 -1.70926415e+00 -1.10392395e+00 -5.88619043e-01
 -6.86233780e-01  2.54565541e-01  9.82419186e-02 -1.83361751e+00
  3.58617306e-01  1.75433700e+00 -3.76617158e-01 -3.18230459e-01
  1.50008290e+00  8.94557701e-01  6.81842167e-01  4.51499354e-01
 -3.06130447e-01  1.03159362e+00  5.86484828e-01 -2.51876502e-01
 -2.98765869e-01 -1.52081531e+00 -3.69987774e-01  1.53537290e+00
 -1.77472363e+00 -2.90926014e+00  9.28018926e-01  1.01334682e+00
 -3.11048382e+00 -1.52670152e+00  1.37879061e+00 -8.88705810e-01
 -1.55598769e+00 -1.71139000e-01 -8.85163000e-01 -3.26341722e-01
  1.34767155e+00 -5.88669006e-01 -1.95861291e+00  2.35270167e+00
  1.77004775e+00 -1.21670273e+00  4.51629062e-01  1.61851981e+00
  1.10154062e+00  2.38019732e-01  7.70317177e-02  7.72440592e-01
  9.90517826e-01  6.98781631e-01  2.69833017e-01 -5.65676342e-01
  8.76398325e-01  1.33817063e+00 -6.61318932e-01 -1.43370887e+00
  8.01480410e-01  1.20709604e+00 -1.55742323e+00 -2.20176667e+00
 -1.01012016e+00  3.23451000e-01 -3.18673686e-01 -2.76970613e+00
 -2.04904111e+00  1.11696736e+00  5.49922360e-01 -3.02546015e+00
 -1.12878149e+00  2.83817348e+00  4.75032945e-01 -1.63548898e+00
  1.22703530e+00  2.06189030e+00  6.19840455e-01  2.35321163e-01
  1.33595334e+00  1.09673456e+00  1.03542027e+00  1.35810940e+00
  9.48697564e-01  4.36223994e-01 -2.38529265e-01  8.93026087e-01
 -1.42901539e-01 -2.15205591e+00  1.54459014e-01  1.33382014e+00
 -2.04773645e+00 -3.55488356e+00  9.76774609e-02  1.31752337e+00
 -2.16874626e+00 -2.32382122e+00 -8.93219337e-02  9.38858387e-01
 -1.01932097e-01 -1.23414039e+00 -2.62612147e-01  1.70485695e+00
  1.44751910e+00 -8.09297798e-01 -3.03798970e-01  2.39445477e+00
  1.16854091e+00 -3.48461675e-01  3.25054624e-01  1.22911222e+00
  1.56594154e+00  3.35895873e-01 -2.98905624e-01  3.28457309e-01
  4.89730115e-01  8.60508604e-01 -7.68163561e-01 -1.46741429e+00
  1.22709617e+00  9.17959607e-01 -2.03764103e+00 -1.54938809e+00
  1.19911287e+00 -1.15381771e+00 -1.45612790e+00 -1.25791950e-02
 -1.76010476e+00 -1.23806380e+00  1.15624222e+00 -1.90018428e+00
 -2.73630664e+00  1.22812803e+00  1.26383512e+00 -2.24283885e+00
 -1.19308634e+00  1.97314702e+00  2.89057896e-01 -7.66060293e-01
  7.45122488e-01  5.58281517e-01  7.58359823e-01  1.05034287e+00
 -1.25735899e-01 -7.66414542e-02  9.02449606e-01  7.78873176e-01
  6.15227112e-01 -5.30727398e-01 -8.73157315e-01  1.45411205e+00
 -3.82446625e-01 -1.94718432e+00 -3.83940115e-01  2.51152874e-01
 -1.47480134e+00 -3.40542756e-01 -1.00633964e+00 -1.72510170e+00
 -2.64319093e-02  3.30308466e-02 -2.46282479e+00  6.09904302e-01
  2.51429963e+00  1.10765435e-02 -1.20114416e+00  2.16271747e+00
  1.73486733e+00  1.85944893e-02  6.49039651e-01  1.04357564e+00
  6.03996661e-01  1.65305893e+00  2.77988145e-02 -1.30549653e-01
  1.68685628e+00  6.97372521e-01 -1.03571297e-01 -3.50095595e-01
 -3.34934174e-01  1.18294799e+00  7.29304099e-01 -1.37346884e+00
 -4.65614106e-01  1.22616212e+00 -7.72340893e-01 -2.50000523e+00
  5.13806253e-01  1.53022637e-01 -1.81516976e+00 -7.73444178e-01
  7.20485037e-01 -2.74543472e-01 -7.82687377e-01  2.47357701e-01
 -1.90434627e-01 -8.94463064e-01 -3.14764530e-01  2.08412727e-01
 -1.19728333e-05 -1.56409701e+00 -2.39950394e-01  2.22734525e+00
 -6.02240333e-01 -2.29052372e+00  1.68079441e+00  2.59427990e+00
 -1.58689889e+00 -1.37938364e+00  2.44096288e+00  1.07861066e+00
 -1.82288098e+00 -2.98611271e-01  1.32994196e+00 -1.21703209e+00
 -1.76764168e+00  1.27733178e+00 -1.25587414e+00 -3.65461266e+00
  9.44888535e-01  8.58608653e-01 -3.71824094e+00 -1.20105009e+00
  2.34891827e+00 -6.15491522e-01 -2.44896568e+00  1.47874593e+00
  1.36359324e+00 -1.52140330e+00  2.61127873e-01  1.67334820e+00
 -1.19467290e-01  6.78732792e-02  2.59484720e+00  8.36266067e-01
 -1.28532998e+00  1.56109848e+00  2.32971401e+00 -2.38570910e-01
 -9.52924706e-01  1.99207017e+00  1.76866587e+00 -1.19281873e+00
 -1.55275495e-02  1.03784860e+00 -3.84576124e-01 -4.39144386e-01
 -8.25542342e-01 -3.11238231e-01  5.60426522e-01 -5.04934218e-02
 -6.19902801e-01  1.59594600e-02  4.06717423e-01 -5.07243575e-02
 -4.61221220e-01  4.73286178e-01  5.44710191e-01  3.31618170e-01
  7.74065570e-01  6.55976175e-01 -2.84367333e-01  1.31133607e+00
  1.33052544e+00 -1.66118773e+00 -9.77213369e-02  2.35185428e+00
 -2.99078692e-01 -1.02636627e+00  9.31870035e-01  1.60750296e-01
 -2.23416459e-01 -9.67528003e-01 -7.19607953e-01  3.95900438e-01
  3.62698025e-01 -1.24634155e+00 -3.97020531e-01  7.59103298e-01
 -9.23420671e-02 -9.41727781e-01 -3.39416240e-01 -1.74895769e-01
  9.73957965e-01 -4.57913299e-01 -1.05943674e+00  5.46261687e-01
  1.11627834e+00 -5.52053626e-01 -9.08397199e-01  1.36531635e+00
  5.48680414e-01 -6.88205428e-01  9.92385175e-01  3.91828962e-01
  3.46682697e-01  1.76804444e-02 -1.53973668e-01  1.11786667e+00
  1.02942669e+00 -8.37962704e-01 -3.55267461e-01  2.20713407e+00
  3.58855075e-01 -2.38241053e+00  8.58953944e-01  1.88976860e+00
 -1.80953902e+00 -1.38310865e+00  1.45316809e+00  2.60884780e-01
 -2.95018436e+00  2.27596062e-01  1.95410948e+00 -2.22601625e+00
 -1.77132677e+00  1.75413132e+00  1.19934110e+00 -1.64258488e+00
  6.79978849e-01  2.24981799e+00 -1.78342790e+00 -7.97070894e-01
  3.99816858e+00  2.81193723e-01 -3.11332287e+00  1.05439088e+00
  3.13785760e+00 -1.46298304e+00 -1.14653944e+00  1.49946851e+00]

####

A is 
[[-1.33246104e+00 -7.49380060e-01  1.00097333e+00 ...  3.44362423e-01
  -1.70415549e+00 -3.45788473e-01]
 [ 8.16480041e-01  1.61342201e-01 -9.45720236e-04 ...  9.15384948e-01
  -1.65901295e+00  4.58100583e-01]
 [ 8.79386820e-01  1.52986375e-01  4.04174881e-01 ... -4.77844428e-01
   1.80550620e-01 -3.56545435e-01]
 ...
 [ 6.69985921e-01  1.13559924e+00  1.79896092e+00 ...  1.00889339e-01
  -3.14704441e-01  6.50829335e-01]
 [ 1.01088496e+00 -9.70755184e-01 -9.29758865e-01 ...  5.11174873e-02
   1.62569041e+00  1.51544386e-01]
 [-5.04109259e-01  9.52283542e-01  4.69071950e-01 ... -4.63797994e-01
  -3.88256409e-01  1.19741510e+00]]
Max singular value is 60.65385458082814 and min singular value is 53.42357472745473

####


Process finished with exit code 0
Exercise 9.4
import numpy as np
import time


def foo(n):
    Z = np.random.normal(0, 1, [n, n])
    epsilon = 0.00001
    b_k = np.random.normal(0, 1, n)
    t0 = time.clock()
    times = 0
    while True:
        # calculate the matrix-by-vector product Ab
        b_k1 = np.dot(Z, b_k)
        # calculate the norm
        b_k1_norm = np.linalg.norm(b_k1)
        # re normalize the vector
        b_k_new = b_k1 / b_k1_norm
        ei=np.linalg.norm(b_k, np.inf)
        ei_new=np.linalg.norm(b_k_new, np.inf)
        if abs(ei-ei_new) < epsilon:
            print("Eigenvalue is "+str(ei_new))
            break
        b_k=b_k_new
        times = times + 1


    t1 = time.clock()
    print("While n="+str(n))
    print("Time used :" + str(t1 - t0))
    print("Iteration times:" + str(times))


foo(10)
foo(500)
foo(1000)

输出如下:

Eigenvalue is 0.7655965239191432
While n=10
Time used :0.0025378735353597604
Iteration times:33
Eigenvalue is 0.14577036587313794
While n=500
Time used :1.9784952353636718
Iteration times:5026
Eigenvalue is 0.10487284652777905
While n=1000
Time used :2.12012114158482
Iteration times:2525

Process finished with exit code 0
Exercise 9.5
import numpy as np
from scipy.sparse.linalg import svds
import scipy.linalg as linalg


def foo(n, p):
    C = np.random.binomial(1, p, [n, n])
    S = linalg.svdvals(C)
    print("For n=" + str(n) + " ,p=" + str(p))
    print("Max singular value is " + str(max(S)) + "\n")


N = [100, 200, 1000]
P = [0.2, 0.4, 0.5]

for i in range(3):
    foo(N[i], P[i])

输出如下:

For n=100 ,p=0.2
Max singular value is 21.519885563687353

For n=200 ,p=0.4
Max singular value is 80.86541981799127

For n=1000 ,p=0.5
Max singular value is 500.8913439778914


Process finished with exit code 0

可以看到最大特征值收敛于 n p

Exercise 9.6

代码如下:

import numpy as np


def fun(z, A):
    return A[np.argmin(np.abs(A - z))]


for _ in range(10):
    A = np.random.normal(0, 1, 10)
    print("A is " + str(A))
    z = np.random.normal(0, 1, 1)
    print("z is " + str(z))
    print("Result is " + str(fun(z, A)))

输出如下:

A is [ 0.73390563 -0.73585313 -2.5098151  -0.35509459  0.8330107   0.30096315
 -0.40494035 -2.1881496  -0.68863103  0.62229052]
z is [-0.11963785]
Result is -0.3550945883622094
A is [-0.80093897  0.68515174 -0.04626964 -0.26117038 -0.78344863  0.50260994
  0.83917766  0.35072135  3.29341067 -1.53727916]
z is [-0.26792738]
Result is -0.2611703832235001
A is [ 1.84319764 -0.56855173 -0.15086427 -0.5809674   0.31994807 -0.85230422
 -2.16952816  1.12286011  0.08552049  0.88710099]
z is [-0.28149594]
Result is -0.15086427191905707
A is [-0.33865872 -0.60588902 -0.35920237  0.79827813 -0.23759762  0.17356719
 -1.218413   -0.58077275 -0.67510884  0.42264313]
z is [0.007145]
Result is 0.17356718789912803
A is [-0.58571585  0.16969404 -2.22818415  0.79275314 -2.26781237 -0.33649004
 -0.271224    0.37098678 -1.48380289 -1.72379353]
z is [0.11361307]
Result is 0.16969404243267708
A is [-0.83948212 -1.01819914  1.13303191  0.3043191   0.59689304 -0.01964297
 -0.76262739  0.45650167  0.74466873 -1.70780183]
z is [0.40290082]
Result is 0.4565016678165629
A is [ 0.82596538 -1.4629943  -2.00398274 -0.23569466 -2.50863289  0.76593974
  0.52158516 -0.38550083 -0.19049751  0.09978216]
z is [0.9235855]
Result is 0.825965381008604
A is [-1.13469271e+00  1.49757952e-03 -2.98291216e-02 -1.65084199e+00
  1.14577151e+00 -1.47241838e+00 -1.03192458e+00  1.50118144e+00
 -7.31931147e-01 -4.59158394e-01]
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['F:\\Acadamic_17_4_22\\Python\\HW_numpy', 'F:/Acadamic_17_4_22/Python/HW_numpy'])
z is [-0.21790923]
Result is -0.029829121644671452
A is [ 1.00937722  1.67193368  1.77163855  1.52797915  1.00410169 -0.15337683
  0.00439507  0.5958237   0.75671811  0.54606594]
z is [-0.58890639]
Result is -0.15337682958161183
A is [-0.78148815  0.15413545 -0.0415477   0.57832506  0.59987814  0.84374048
 -1.16808526 -0.41319689  0.23251396  0.18610539]
z is [1.28905773]
Result is 0.8437404845888975

猜你喜欢

转载自blog.csdn.net/wayne_mai/article/details/80413625
今日推荐