Exercise 9.1: Matrix operations:
import numpy as np from scipy.linalg import toeplitz n = 5 m = 10 A = np.random.normal(size=(n,m)) #服从正态分布的矩阵 c = np.random.randn(10) r = np.random.randn(10) B = toeplitz(c,r) #托普利兹矩阵 print("A+A:") A1 = A + A print(A1) print("A*A^T:") t = A.T A2 = A.dot(t) print(A2) print("A^T*A:") A3 = t.dot(A) print(A3); print("AB:") A4 = A.dot(B) print(A4) I = np.eye(10,dtype = int) print(I) def func(x,A,B): temp = x * I c = B - temp comeout = A.dot(c) return comeout Output = func(5,A,B) print(Output)
Exercise 9.2: Solving a linear system
import numpy as np from scipy.linalg import toeplitz n = 5 m = 5 A = np.random.normal(size=(n,m)) #服从正态分布的矩阵 c = np.random.randn(10) r = np.random.randn(10) b = np.array([1,4,5,7,9]) x = np.linalg.solve(A,b) print("Solution:") print(x)
Exercise 9.3: Norms
import numpy as np from scipy.linalg import toeplitz import numpy.linalg n = 5 m = 10 A = np.random.normal(size=(n,m)) #服从正态分布的矩阵 c = np.random.randn(10) r = np.random.randn(10) B = toeplitz(c,r) #托普利兹矩阵 print("A的Frobenius范数:") x = numpy.linalg.norm(A,"fro") print(x) print("B的无穷范数:") x = numpy.linalg.norm(B,np.inf) print(x) print("B的最大奇异值为:") a,b = numpy.linalg.eig(B) print(max(a))
Exercise 9.4: power iteration
import numpy as np import scipy A = np.random.normal(size=(10, 10)) n = 0 u = np.random.randn(10) x1 = 10 x2 = 0 while abs(x2 - x1) > 0.01: n += 1 x1 = x2 v = A.dot(u) x2 = np.max(v) u = np.true_divide(v, x2) print("最大特征值") print(x2) print("最大特征向量") print(u) print("迭代次数:") print(n)
Exercise 9.5: Singular Values
import numpy as np import scipy C = np.random.randint(0,2,size=(5,5)) a,b = np.linalg.eig(C) print("特征值:") print(a) print("特征向量") print(b)
Exercise 9.6:Nearest neighbor
import numpy as np import scipy A = np.random.randn(10) z = 1 print(A) def findnearest(A,z): return A[np.argmin(np.abs(A-z))] nearest = findnearest(A,1) print("最接近的值为:") print(nearest)