import numpy
from scipy import linalg
n = 200
m = 500deffunction(lam, A, B):
lam = int(lam)
I = numpy.eye(m)
B_minus_lambdaI = B - lam * I
result = numpy.dot(A, B_minus_lambdaI)
return result
A = (numpy.random.normal(1.75, 0.1, (n, 500)))
B = linalg.toeplitz(range(m, 0, -1), r = range(m, 0, -1))
res1 = A + A
AT = numpy.transpose(A)
res2 = numpy.dot(A, AT)
res3 = numpy.dot(AT, A)
res4 = numpy.dot(A, B)
lam = input("Please input the lambda: ")
res5 = function(lam, A, B)
Exercise 9.2: Solving a linear system
import numpy
from scipy import linalg
n = 200
m = 500
A = (numpy.random.normal(1.75, 0.1, (n, m)))
B = linalg.toeplitz(range(m, 0, -1), r = range(m, 0, -1))
b = numpy.random.normal(1.75, 0.1, (m, 1))
x = linalg.solve(B, b)
print(x)
Exercise 9.3: Norms
import numpy
from scipy import linalg
n = 200
m = 500
A = (numpy.random.normal(1.75, 0.1, (n, m)))
B = linalg.toeplitz(range(m, 0, -1), r = range(m, 0, -1))
Frobenius_norm_A = numpy.linalg.norm(A, ord = 2)
Infinity_norm_B = numpy.linalg.norm(B, ord = numpy.inf)
print(Frobenius_norm_A)
print(Infinity_norm_B)
Exercise 9.4: Power iteration
import numpy as np
from math import *
from scipy import linalg
n = 4
m = 500
A = (np.random.normal(1.75, 0.1, (n, m)))
B = linalg.toeplitz(range(m, 0, -1), r = range(m, 0, -1))
Z = np.random.normal(0, 1, (n, n))
defpower_iteration(A, epsilon):
num_simulations = 10000
count = 0
b_k = np.random.rand(A.shape[1])
print(b_k)
b_k1 = np.dot(A, b_k)
b_k1_norm_pre = np.linalg.norm(b_k1)
print(b_k1_norm_pre)
b_k = b_k1 / b_k1_norm_pre
for _ in range(num_simulations):
# calculate the matrix-by-vector product Ab
b_k1 = np.dot(A, b_k)
# calculate the norm
b_k1_norm = np.linalg.norm(b_k1)
if (abs(b_k1_norm - b_k1_norm_pre) < epsilon): break
b_k1_norm_pre = b_k1_norm
# re normalize the vector
b_k = b_k1 / b_k1_norm
count += 1return b_k, count
epsilon = 0.0000001
eig_vector = power_iteration(Z, epsilon)
print(eig_vector)
Exercise 9.5: Singular values
import numpy
from scipy import linalg
n = int(input('please input n: '))
C = []
p = float(input('please input p: '))
for i in range(0, n):
tmp = []
for j in range(0, n):
if numpy.random.uniform(0, 1) > p:
tmp.append(0)
else:
tmp.append(1)
C.append(tmp)
U, res, VT = linalg.svd(C)
print(res)
Exercise 9.6: Nearest neighbor
A = numpy.random.rand(0, 10, 10)
z = int(input('input z: '))
B = [abs(i - z) for i in A]
print(B)
print('num', A[numpy.argmin(B)])