Numpy 习题实战
代码文件
import numpy as np from scipy.linalg import toeplitz def matAddMat(A): return A+A def matMultMatT(A): return A*A.T def matTMuliMat(A): return A.T*A def matMultmat(A, B): return A*B def computes(A, B, lada, m): return A*(B-lada*np.eye(m)) print("n = 4, m = 5") n, m = 4, 5 print("The Random matrix A(n*m)") A = np.mat(np.random.rand(n, m)) print(A) print("The Teplitz matrix B(m*m)") B = toeplitz(np.random.rand(1, m), np.random.rand(1, m)) print(B) print("\nExercise 9.1.Matrix operations") print("A+A:\n", matAddMat(A)) print("A*A^T:\n", matMultMatT(A)) print("A^TA:\n", matTMuliMat(A)) print("A*B:\n", matMultmat(A, B)) print("lada = 3, A(B-lada*I):\n", computes(A, B, 3, m)) def solut(B, b): return np.linalg.inv(B) * b print("\nExercise 9.2.Solving a linear system") b = np.array(np.random.rand(m, 1)) print("solut Bx = b: x = inv(B)*b:\n", solut(B, b)) print("\nExercise 9.3.Norms") 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)) print("\nExercise 9.4.Power iteration") 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) print("\nExercise 9.5.Singular values") p = 0.6 C = np.mat(np.random.binomial(1, p, n*n)) C.resize(n, n) print("p =", p , "\nC:\n", C) print("The largest singular values of C:", np.linalg.norm(C, 2)) print("The smallest singular values of C:", np.linalg.norm(C, -2))
输出结果
n = 4, m = 5 The Random matrix A(n*m) [[0.34880707 0.74755034 0.75285761 0.44950543 0.77465029] [0.94112227 0.75169149 0.88621216 0.3258467 0.09252789] [0.17883843 0.49219086 0.96409376 0.50459647 0.68688119] [0.57079547 0.93777532 0.66795402 0.69628784 0.48476601]] The Teplitz matrix B(m*m) [[0.96359366 0.33807915 0.11801527 0.91040076 0.69861167] [0.71489423 0.96359366 0.33807915 0.11801527 0.91040076] [0.85142028 0.71489423 0.96359366 0.33807915 0.11801527] [0.59776819 0.85142028 0.71489423 0.96359366 0.33807915] [0.52210721 0.59776819 0.85142028 0.71489423 0.96359366]] Exercise 9.1.Matrix operations A+A: [[0.69761414 1.49510067 1.50571522 0.89901085 1.54930058] [1.88224454 1.50338298 1.77242431 0.6516934 0.18505579] [0.35767687 0.98438171 1.92818752 1.00919294 1.37376239] [1.14159095 1.87555065 1.33590804 1.39257569 0.96953202]] A*A^T: [[2.04943066 1.77553551 1.91505445 2.09151532] [1.77553551 2.35086069 1.62065289 2.10579251] [1.91505445 1.62065289 1.93013518 1.89193596] [2.09151532 2.10579251 1.89193596 2.37120745]] A^TA: [[1.36516815 1.591485 1.6503182 0.95113145 0.75682656] [1.591485 2.245546 2.32986603 1.48228345 1.44132076] [1.6503182 2.32986603 2.72780593 1.57874946 1.65121999] [0.95113145 1.48228345 1.57874946 1.04766556 1.06249392] [0.75682656 1.44132076 1.65121999 1.06249392 1.31544834]] A*B: [[2.18467649 2.22225206 2.00024637 1.64723564 1.9115163 ] [2.44186864 2.00878965 1.53087249 1.62525083 1.64572734] [2.00529831 2.064178 2.06205745 1.52411404 1.51927524] [2.45845322 2.45673617 1.9385529 1.87364075 2.03386238]] lada = 3, A(B-lada*I): [[ 1.13825528 -0.02039895 -0.25832647 0.29871936 -0.41243457] [-0.38149817 -0.24628482 -1.12776398 0.64771073 1.36814366] [ 1.46878301 0.58760543 -0.83022383 0.01032464 -0.54136834] [ 0.7460668 -0.3565898 -0.06530916 -0.21522278 0.57956435]] Exercise 9.2.Solving a linear system solut Bx = b: x = inv(B)*b: [[ 0.84345228 0.02000342 0.86534343 -0.75249117 -0.47237639] [-0.00306382 0.00461153 -0.00221787 0.00607134 -0.00399418] [-0.20442002 -0.2541809 0.3299019 -0.20228036 0.4189214 ] [ 0.09925175 -0.17546299 -0.18908219 0.3128745 0.00720371] [ 0.06049773 0.23922568 -0.3665226 -0.50102417 0.73211936]] Exercise 9.3.Norms The Frobenius norm of A: ||A||F: 2.949853213736023 The infinity norm of B: ||B||∞ 3.649783574568348 The largest singular values of B: 3.254445929659465 The smallest singular values of B: 0.37529659032906065 Exercise 9.4.Power iteration Z: [[0.19580959 0.62569742 0.1304203 0.24313678] [0.50875127 0.28674366 0.04752893 0.50793588] [0.04684295 0.0980313 0.46953485 0.08283807] [0.54956075 0.9420632 0.36713555 0.22525138]] w: [ 1.3779901 -0.46955142 -0.16516533 0.43406614] v: [[ 0.44546951 0.42825742 -0.78074164 0.17340785] [ 0.53960893 -0.68432119 0.23825341 0.26661281] [ 0.14498712 -0.00198509 -0.05423655 -0.94804476] [ 0.69954117 0.59016621 0.5750967 -0.00764636]] Exercise 9.5.Singular values p = 0.6 C: [[0 1 0 0] [0 1 0 1] [1 0 1 1] [1 0 1 1]] The largest singular values of C: 2.5430021603128266 The smallest singular values of C: 0.0