基于第一节中对问题和基本知识的介绍,下面为解答所有6个题目的代码,思路很清晰,在此只对于部分重要步骤进行解释
# -*- coding: utf-8 -*-
import numpy as np
from scipy.linalg import toeplitz
import time
#生成A,B
def generate_A_B(n,m):
A = np.random.normal(size = (n, m))
c = [num for num in range(1, m+1)]
B = toeplitz(c)
print("A:")
print(A)
print("B:")
print(B)
return A, B
#answer 9.1
def answer_9_1(A, B):
AplusA = A + A
AAt = np.dot(A, A.T) #matrix multipilication
AtA = np.dot(A.T, A)
AB = np.dot(A, B)
lamda = np.random.normal() #random generate
f(A, B, lamda)
print("AplusA:")
print(AplusA)
print("AAt:")
print(AAt)
print("AtA:")
print(AtA)
print("AB:")
print(AB)
def f(A, B, lamda):
result = np.dot(A, (B - lamda * np.eye(B.shape[1])))
print("A(B − lamda*I) for lamda=%s:" % lamda)
print(result)
#answer 9.2
def answer_9_2(B):
b = np.ones(B.shape[1])
result = np.linalg.solve(B, b) #solve Bx = b
print('Solution of Bx = b where b is a vector filled whit ones:')
print(result)
#answer 9.3
def answer_9_3(A, B):
_A = np.linalg.norm(A, 'fro')
_B = np.linalg.norm(B, np.inf)
largest_sin = np.linalg.norm(B, 2) #largest singular equals to norm(2)
smallest_sin = np.linalg.norm(B, -2)
print('Frobenius norm of A:')
print(_A)
print('Infinity norm of B:')
print(_B)
print('Largest singular value of B:')
print(largest_sin)
print('Smallest singular value of B:')
print(smallest_sin)
#answer 9.4
def answer_9_4(n):
Z = np.random.normal(size = (n,n))
num = 0
u_k = np.ones(n)
v_k_norm = 0
v_k = np.zeros(n)
begin = time.clock()
while(True): #iteration
v_k = np.dot(Z, u_k)
v_k_norm_temp = v_k_norm
v_k_norm = np.linalg.norm(v_k)
u_k = v_k / v_k_norm
num += 1
if abs(v_k_norm_temp - v_k_norm) < 0.0005:
break;
end = time.clock()
print("the largest eigenvalue:", v_k_norm)
print("the corresponding eigenvector:", u_k)
#How many iterations are needed till convergence
print("The number of iterations:", num)
#Optional: use the time.clock() method to compare computation time when varying n.
print("computation time when varying n:", end-begin)
#answer 9.5
def answer_9_5(n):
p = 0.2
C = np.random.binomial(1, p, (n,n))
largest_sin = np.linalg.norm(C, 2)
smallest_sin = np.linalg.norm(C, -2)
print("The largest sigular of C for p=0.2:")
print(largest_sin)
print("The smallest sigular of C for p=0.2:")
print(smallest_sin)
print("n * p:")
print(n*p)
print("n*p is approximate to the largest singular, they are equal theoretically.")
#answer 9.6
def answer_9_6(A, z):
r = np.extract(A==z,A)
if r.size:
print("The closest value to z in A:")
print(z)
_A = np.reshape(A, A.size)
C = [abs(_A[i] - z) for i in range(0, _A.size-1)]
print("The closest value to z in A:")
print(min(C))
n, m = 200, 500
A, B = generate_A_B(n, m)
answer_9_1(A, B)
answer_9_2(B)
answer_9_3(A, B)
answer_9_4(n)
answer_9_5(n)
z = np.random.normal()
answer_9_6(A, z)
输出为:
0. 生成A,B如下
A:
[[ 0.95278166 -1.18293703 0.57143846 ... 0.50420287 -0.32992624
0.38573025]
[-1.40260651 -0.81713552 0.87100929 ... 0.20779558 0.10232635
0.6627302 ]
[ 0.77374907 -1.73962531 -0.38887812 ... -0.66030443 0.27338129
2.32983829]
...
[-0.3510198 -0.34050134 0.33814053 ... 0.21026862 -0.64102818
0.74995865]
[-0.27153398 0.87329607 -0.416119 ... -0.29887947 -0.04698418
-0.43096432]
[-1.02630983 0.6277871 2.1789007 ... 1.34756906 0.2202234
-1.31916096]]
B:
[[ 1 2 3 ... 498 499 500]
[ 2 1 2 ... 497 498 499]
[ 3 2 1 ... 496 497 498]
...
[498 497 496 ... 1 2 3]
[499 498 497 ... 2 1 2]
[500 499 498 ... 3 2 1]]
1. 计算A(B-lamda*I),A+A,AAt,AtA和AB的结果如下
A(B − lamda*I) for lamda=0.37093826175522243:
[[ -4416.85219654 -4398.01240447 -4382.98147122 ... -3637.66766321
-3653.61186979 -3670.79080363]
[ 9462.24053864 9442.39831652 9420.51279944 ... -1065.84384566
-1050.51500066 -1035.22850077]
[ -9450.21682037 -9404.5594082 -9363.81459719 ... -12085.5851867
-12134.31557291 -12182.91567537]
...
[-10271.37998364 -10224.41862075 -10178.38609306 ... -13512.8348185
-13560.40420506 -13610.08739679]
[ 3619.38716182 3588.72601043 3560.71440584 ... 11196.02425996
11226.58014153 11257.27792526]
[ -9938.9087946 -9905.31299488 -9870.42342049 ... -8160.77819176
-8194.42412822 -8227.47677696]]
AplusA:
[[ 1.90556332 -2.36587406 1.14287692 ... 1.00840575 -0.65985248
0.77146049]
[-2.80521303 -1.63427104 1.74201858 ... 0.41559116 0.20465269
1.32546039]
[ 1.54749815 -3.47925062 -0.77775623 ... -1.32060886 0.54676258
4.65967658]
...
[-0.7020396 -0.68100267 0.67628106 ... 0.42053723 -1.28205637
1.4999173 ]
[-0.54306796 1.74659215 -0.83223799 ... -0.59775893 -0.09396836
-0.86192864]
[-2.05261965 1.2555742 4.3578014 ... 2.69513812 0.4404468
-2.63832192]]
AAt:
[[474.96513497 -25.16769492 24.52276177 ... -2.20489292 25.26831487
23.93722546]
[-25.16769492 490.29508362 -18.22400123 ... -2.73010253 -5.39655963
74.71276627]
[ 24.52276177 -18.22400123 516.32074555 ... 3.1280141 -35.79197801
34.05905386]
...
[ -2.20489292 -2.73010253 3.1280141 ... 454.8099383 -68.87073241
-4.54514735]
[ 25.26831487 -5.39655963 -35.79197801 ... -68.87073241 507.77215332
-31.79923431]
[ 23.93722546 74.71276627 34.05905386 ... -4.54514735 -31.79923431
486.60273961]]
AtA:
[[196.6395596 -11.65223971 17.53679282 ... 18.67360702 6.31399801
-8.60169625]
[-11.65223971 172.78276572 3.07933114 ... 11.72896245 1.08837617
-16.99044062]
[ 17.53679282 3.07933114 214.94532223 ... 9.20660451 4.18348
6.96008326]
...
[ 18.67360702 11.72896245 9.20660451 ... 192.80256262 19.24749079
-24.66251227]
[ 6.31399801 1.08837617 4.18348 ... 19.24749079 187.86636644
12.87827568]
[ -8.60169625 -16.99044062 6.96008326 ... -24.66251227 12.87827568
235.05192904]]
AB:
[[ -4416.49877337 -4398.45120107 -4382.76950283 ... -3637.48063507
-3653.73425206 -3670.64772152]
[ 9461.72025822 9442.09520969 9420.83589011 ... -1065.76676633
-1050.4770439 -1034.98266879]
[ -9449.92980723 -9405.20470179 -9363.95884696 ... -12085.83011887
-12134.21416533 -12182.05144921]
...
[-10271.51019031 -10224.54492572 -10178.2606638 ... -13512.75682182
-13560.64198694 -13609.80920843]
[ 3619.28643948 3589.04994936 3560.56005138 ... 11195.91339413
11226.5627133 11257.1180641 ]
[ -9939.28949219 -9905.08012462 -9869.61518286 ... -8160.27832683
-8194.34243893 -8227.96610423]]
2. 计算方程Bx = b的解
Solution of Bx = b where b is a vector filled whit ones:
[ 1.99600798e-03 1.04861783e-15 -1.11022302e-15 8.88178420e-16
-3.33066907e-16 -2.22044605e-16 9.52155113e-28 -3.02330942e-28
3.33066907e-16 1.11022302e-16 -4.44089210e-16 3.33066907e-16
-4.44089210e-16 4.44089210e-16 -2.22044605e-16 1.11022302e-16
-3.33066907e-16 3.33066907e-16 -2.22044605e-16 6.66133815e-16
-5.55111512e-16 -1.14720097e-27 -3.33066907e-16 4.44089210e-16
3.33066907e-16 -3.33066907e-16 -5.55111512e-16 1.22124533e-15
-1.66533454e-15 1.22124533e-15 -2.22044605e-16 -2.79256760e-28
-2.22044605e-16 2.22044605e-16 -1.11022302e-16 8.88178420e-16
-1.11022302e-15 -2.39655943e-27 7.77156117e-16 -1.33226763e-15
1.22124533e-15 -4.44089210e-16 -1.11022302e-16 3.33066907e-16
-5.55111512e-16 8.88178420e-16 -4.44089210e-16 -1.11022302e-16
-6.66133815e-16 5.55111512e-16 5.55111512e-16 -6.66133815e-16
1.33226763e-15 -1.88737914e-15 9.99200722e-16 2.22044605e-16
-2.22044605e-16 -6.66133815e-16 7.77156117e-16 -6.66133815e-16
3.33066907e-16 3.33066907e-16 -3.33066907e-16 2.22044605e-16
-4.44089210e-16 7.77156117e-16 -1.22124533e-15 1.44328993e-15
-6.66133815e-16 -5.55111512e-16 8.88178420e-16 -7.77156117e-16
1.41758305e-27 6.66133815e-16 -4.44089210e-16 1.11022302e-15
-2.10942375e-15 2.33146835e-15 -1.44328993e-15 5.61668965e-28
-2.22044605e-16 9.99200722e-16 -3.33066907e-16 -4.44089210e-16
6.66133815e-16 -8.88178420e-16 4.44089210e-16 2.22044605e-16
3.33066907e-16 -9.99200722e-16 7.77156117e-16 -3.33066907e-16
-1.11022302e-16 2.22044605e-16 -1.11022302e-16 -2.65846125e-28
-2.22044605e-16 5.55111512e-16 -2.22044605e-16 1.11022302e-16
1.11022302e-16 -8.88178420e-16 6.66133815e-16 -5.55111512e-16
9.99200722e-16 -7.16285702e-28 -8.88178420e-16 5.55111512e-16
-5.55111512e-16 1.11022302e-16 9.99200722e-16 -8.88178420e-16
-4.44089210e-16 1.44328993e-15 -1.44328993e-15 1.11022302e-15
-5.55111512e-16 -4.44089210e-16 7.77156117e-16 -3.33066907e-16
4.44089210e-16 -3.33066907e-16 -5.55111512e-16 6.66133815e-16
-2.22044605e-16 2.22044605e-16 -7.77156117e-16 1.22124533e-15
-7.77156117e-16 6.66133815e-16 -1.11022302e-15 9.99200722e-16
-2.22044605e-16 -1.11022302e-16 -1.11022302e-16 -7.77156117e-16
1.66533454e-15 -8.88178420e-16 -8.88178420e-16 1.77635684e-15
-1.66533454e-15 1.99840144e-15 -1.66533454e-15 6.66133815e-16
-5.55111512e-16 4.44089210e-16 -5.55111512e-16 8.88178420e-16
6.66133815e-16 -2.22044605e-15 1.33226763e-15 4.01727416e-28
6.66133815e-16 -1.88737914e-15 6.66133815e-16 -1.11022302e-16
1.22124533e-15 -1.11022302e-16 -1.66533454e-15 2.22044605e-15
-1.33226763e-15 -1.11022302e-16 1.11022302e-16 1.11022302e-15
-1.11022302e-15 -5.55111512e-16 1.44328993e-15 -1.66533454e-15
1.33226763e-15 -7.77156117e-16 8.88178420e-16 7.81761157e-28
-1.33226763e-15 6.66133815e-16 3.33066907e-16 -8.88178420e-16
8.88178420e-16 4.44089210e-16 -8.88178420e-16 1.11022302e-15
-8.88178420e-16 8.88178420e-16 -1.88737914e-15 1.77635684e-15
-6.66133815e-16 -1.11022302e-15 1.55431223e-15 -1.55431223e-15
1.33226763e-15 -7.20230006e-28 -9.99200722e-16 1.33226763e-15
-1.11022302e-15 1.11022302e-15 -7.77156117e-16 7.77156117e-16
-3.33066907e-16 -7.77156117e-16 6.66133815e-16 -1.11022302e-16
-7.77156117e-16 1.11022302e-15 -5.55111512e-16 8.88178420e-16
-1.33226763e-15 9.99200722e-16 -3.33066907e-16 -2.22044605e-16
-5.55111512e-16 7.77156117e-16 1.11022302e-16 -1.11022302e-16
3.33066907e-16 -1.44328993e-15 1.22124533e-15 -1.11022302e-16
6.66133815e-16 -7.77156117e-16 -1.11022302e-16 -1.33226763e-15
3.10862447e-15 -1.22124533e-15 -1.33226763e-15 1.11022302e-15
1.11022302e-16 -4.44089210e-16 1.11022302e-16 -2.22044605e-16
1.11022302e-15 -1.88737914e-15 1.66533454e-15 -7.77156117e-16
9.99200722e-16 -1.66533454e-15 1.77635684e-15 -1.33226763e-15
1.11022302e-16 1.11022302e-16 3.77075513e-28 7.77156117e-16
-1.55431223e-15 1.88737914e-15 -1.66533454e-15 1.44328993e-15
-6.66133815e-16 1.11022302e-16 -8.88178420e-16 8.88178420e-16
-1.66533454e-16 2.22044605e-16 -2.77555756e-16 -1.66533454e-16
1.66533454e-16 1.66533454e-16 -1.26217745e-29 -4.99600361e-16
6.10622664e-16 -3.88578059e-16 6.10622664e-16 -6.66133815e-16
2.77555756e-16 1.66533454e-16 -6.10622664e-16 4.99600361e-16
-1.66533454e-16 2.77555756e-16 -3.88578059e-16 -2.76101317e-28
3.88578059e-16 -3.88578059e-16 3.33066907e-16 -3.33066907e-16
5.55111512e-17 3.33066907e-16 -5.55111512e-17 -3.33066907e-16
5.55111512e-17 5.55111512e-17 2.77555756e-16 -4.44089210e-16
6.66133815e-16 -2.77555756e-16 -9.99200722e-16 9.43689571e-16
-5.55111512e-17 2.22044605e-16 -7.21644966e-16 7.21644966e-16
-1.11022302e-16 -1.11022302e-16 -6.50810247e-29 -7.77156117e-16
1.38777878e-15 -7.21644966e-16 5.55111512e-17 1.66533454e-16
-6.10622664e-16 1.11022302e-15 -1.22124533e-15 8.88178420e-16
-9.43689571e-16 9.99200722e-16 -4.99600361e-16 2.22044605e-16
-1.66533454e-16 1.11022302e-16 5.55111512e-17 -3.88578059e-16
5.55111512e-16 -6.66133815e-16 2.77555756e-16 7.77156117e-16
1.86960035e-28 -1.77635684e-15 1.16573418e-15 -5.55111512e-17
1.11022302e-16 -1.11022302e-16 -3.88578059e-16 8.32667268e-16
-4.44089210e-16 -2.77555756e-16 1.66533454e-16 2.77555756e-16
-3.33066907e-16 5.55111512e-16 -7.21644966e-16 3.88578059e-16
1.11022302e-16 -3.88578059e-16 7.21644966e-16 -5.55111512e-16
-3.33066907e-16 4.99600361e-16 -4.99600361e-16 5.55111512e-16
3.88578059e-16 -7.21644966e-16 -5.55111512e-17 3.88578059e-16
-7.21644966e-16 3.88578059e-16 1.66533454e-16 7.77156117e-16
-3.88578059e-16 -1.11022302e-15 6.10622664e-16 3.33066907e-16
-2.77555756e-16 5.55111512e-17 -2.22044605e-16 1.11022302e-16
6.10622664e-16 -6.10622664e-16 1.11022302e-16 5.55111512e-17
-3.88578059e-16 5.55111512e-16 2.77555756e-16 -7.21644966e-16
-3.33066907e-16 6.66133815e-16 1.14779262e-28 -4.75288695e-29
-4.44089210e-16 5.55111512e-16 1.66533454e-16 -7.77156117e-16
4.99600361e-16 -3.88578059e-16 6.66133815e-16 -8.88178420e-16
6.66133815e-16 -1.38777878e-16 1.66533454e-16 -4.44089210e-16
4.44089210e-16 -3.05311332e-16 2.77555756e-17 1.94289029e-16
-8.32667268e-17 -1.11022302e-16 -3.40196265e-29 3.33066907e-16
-3.33066907e-16 -1.11022302e-16 2.49800181e-16 5.55111512e-17
-1.66533454e-16 1.38777878e-16 -3.88578059e-16 4.44089210e-16
1.11022302e-16 -4.99600361e-16 2.49800181e-16 1.11022302e-16
8.32667268e-17 -4.99600361e-16 3.60822483e-16 -1.38777878e-16
2.22044605e-16 -2.77555756e-16 1.38777878e-16 8.32667268e-17
-1.38777878e-16 1.38777878e-16 -3.33066907e-16 5.82867088e-16
-3.60822483e-16 -8.32667268e-17 1.11022302e-16 -7.78507106e-29
9.73750180e-29 5.55111512e-17 -2.49800181e-16 4.71844785e-16
-3.33066907e-16 -8.32667268e-17 1.11022302e-16 3.05311332e-16
-3.88578059e-16 1.94289029e-16 -3.60822483e-16 3.05311332e-16
1.11022302e-16 -3.15544362e-29 -3.05311332e-16 1.38777878e-16
-2.77555756e-17 2.77555756e-17 2.77555756e-16 -2.49800181e-16
-8.32667268e-17 8.32667268e-17 -5.55111512e-17 -8.32667268e-17
2.63677968e-16 -1.66533454e-16 5.55111512e-17 -6.93889390e-17
1.52655666e-16 -1.11022302e-16 -1.38777878e-17 -6.93889390e-17
2.35922393e-16 -2.22044605e-16 6.93889390e-17 2.77555756e-17
-1.38777878e-17 -5.55111512e-17 1.11022302e-16 -5.55111512e-17
2.77555756e-17 -1.80411242e-16 2.63677968e-16 -1.52655666e-16
9.71445147e-17 -4.16333634e-17 -1.24900090e-16 9.71445147e-17
1.38777878e-16 -1.94289029e-16 5.55111512e-17 6.93889390e-17
-1.38777878e-16 6.93889390e-17 9.71445147e-17 -1.38777878e-16
9.02056208e-17 -6.24500451e-17 3.46944695e-17 1.38777878e-17
-2.08166817e-17 -2.08166817e-17 -2.08166817e-17 6.24500451e-17
-2.77555756e-17 1.17961196e-16 -1.38777878e-16 5.55111512e-17
-9.02056208e-17 7.63278329e-17 -4.85722573e-17 3.46944695e-17
1.21430643e-16 -2.22044605e-16 9.71445147e-17 1.38777878e-17
-2.08166817e-17 -8.32001736e-32 -1.04083409e-17 6.07153217e-17
-7.80625564e-17 4.51028104e-17 -2.42861287e-17 2.34187669e-17
-6.93889390e-18 -9.54097912e-18 1.04083409e-17 1.99600798e-03]
3. 计算Frobenius norm of A和infinity norm of B以及B的最大最小奇异值如下:
Frobenius norm of A:
315.6452733304756
Infinity norm of B:
125250.0
Largest singular value of B:
87334.52045641867
Smallest singular value of B:
0.5000049348346404
4. 利用power iteration计算最大特征值与特征向量如下,以及该过程的用时和迭代次数:
the largest eigenvalue: 14.56302125029349
the corresponding eigenvector: [ 0.12361281 0.07286369 0.06440281 0.00804451 0.08547785 0.01368947
-0.06828184 0.20681719 -0.00817015 0.00238936 -0.15752785 -0.05059662
-0.03000261 -0.00841857 -0.04806908 -0.07852211 -0.0342591 -0.0204867
0.15616676 -0.05698637 -0.03884779 -0.12393633 -0.00842983 -0.05898371
0.11846043 -0.01143223 0.01171184 0.08646208 0.00504062 0.00832979
0.031465 0.03582166 0.0136217 -0.05038042 -0.01918877 0.08246743
0.05654657 -0.00774141 -0.1062738 0.02531213 -0.02438493 0.02902315
0.08531228 -0.00647231 -0.040772 0.01501828 -0.13332636 -0.07672544
0.16714289 -0.03703347 -0.02754592 -0.02201467 -0.08784101 0.08247342
0.02279965 0.01240908 0.0051003 0.10687741 0.12883699 -0.13031298
0.01180475 0.01359119 -0.05610993 0.07448298 0.00681508 0.04724233
-0.01813132 0.00166975 -0.02027411 -0.04442978 -0.06204201 -0.06972782
0.0293892 -0.0043146 -0.03960774 -0.05409252 0.00555683 -0.02327194
-0.06743281 0.05530615 0.0672979 -0.08078314 -0.00619852 0.0295183
0.08212163 -0.01437103 0.00905568 0.06247293 0.08324388 0.07416616
0.0771094 0.02349019 -0.17267379 -0.00287919 -0.05323184 -0.03739408
0.11968668 0.02243675 -0.09297431 -0.01058048 -0.00834797 0.0785334
0.01777444 -0.11510868 -0.23605885 -0.0486609 -0.04610934 -0.06821473
0.04330559 -0.08187715 0.00547279 -0.03764618 0.01183631 0.09826414
-0.05883557 -0.0464568 -0.01997839 -0.01117415 -0.02223054 -0.15672707
0.06636165 0.09829503 -0.10569129 -0.02035492 -0.04734581 -0.05143958
-0.01871603 -0.01275441 0.08844289 0.05202249 -0.09098967 0.02037148
-0.07696619 -0.05398528 0.00493917 0.02374535 0.00396482 -0.00812714
-0.10271461 -0.08379942 -0.05317772 -0.03447662 -0.1078547 0.00112179
-0.01252117 0.03078584 -0.14604938 0.02647758 0.09364152 0.05841681
0.0061161 -0.00299055 0.02739847 0.03418084 0.02355301 -0.03662753
-0.08574543 0.02609885 -0.09226201 -0.05005782 0.07307425 -0.00897532
-0.02079605 -0.02053959 -0.12124313 0.12587297 -0.05995061 0.09149506
0.04556231 -0.01789365 0.06594054 0.08632529 -0.01239866 -0.03536085
-0.14515002 -0.05355204 0.0693601 0.04374808 -0.00151067 0.12656415
-0.0726156 0.00575673 -0.10270055 -0.05236257 -0.0080602 -0.02895695
0.06777993 -0.01843962 0.00674073 0.14534832 -0.05846069 0.060517
-0.0951764 0.01047931 0.08261516 0.01033986 0.02681952 0.09681206
-0.08500236 0.19890409]
The number of iterations: 3448
computation time when varying n: 0.0874048662444693
5. 计算C的最大最小奇异值,以及n*p,可以得到 n*p ≈ 最大奇异值
The largest sigular of C for p=0.2:
41.260083234000454
The smallest sigular of C for p=0.2:
0.004305506479713173
n * p:
40.0
n*p is approximate to the largest singular, they are equal theoretically.
6. 计算A中与z最接近的值如下:
The closest value to z in A:
1.654755561930621e-05