9.1
import numpy as np
import scipy.linalg as lp
n = 200
m = 500
A = np.random.normal(size=(n,m))
B = lp.toeplitz(list(range(0,m)))
print('A + A')
print(A + A)
print()
print('AAT')
print(np.dot(A,A.T))
print('ATA')
print(np.dot(A.T,A))
print()
print("AB")
print(np.dot(A,B))
print()
def n1(A,B,k):
t = np.eye(m)
print(np.dot(A , B - k * t))
n1(A,B,5)
9.2
import numpy as np
import scipy.linalg as lp
n = 200
m = 500
A = np.random.normal(size=(n,m))
B = lp.toeplitz(list(range(0,m)))
b = np.random.normal(size=m)
print(np.linalg.solve(B,b))
9.3
import numpy as np
import scipy.linalg as lp
n = 200
m = 500
A = np.random.normal(size=(n,m))
B = lp.toeplitz(list(range(0,m)))
print(lp.norm(A, 'fro'))
print(lp.norm(B, np.inf))
temp = lp.svdvals(B)
print('Max:')
print(max(temp))
print('Min:')
print(min(temp))
9.4
import numpy as np
import time
np.random.seed()
n=20
def solve(Z,esp):
u = np.ones(n)
u = u.reshape(n,1)
max_u = np.max(u)
sub = np.inf
iteration = 0
startTime=time.clock()
while sub > esp:
u = np.dot(Z,u)
temp = np.max(u)
sub = np.fabs(temp - max_u)
max_u = temp
u = u / max_u
iteration += 1
endTime = time.clock()
return [max_u,iteration, endTime-startTime]
esp = 1e-6
Z = np.random.normal(0,1,size = (n,n))
print(solve(Z,esp))
9.5
import numpy as np
import scipy.linalg as lp
import math
n = 200
m = 500
p = 0.5
C = np.random.binomial(1, p, (n, n))
U, svd, Vh = lp.svd(C)
print("Max SVD:\n\t", end = '')
print(max(svd))
print("n * p:\n\t", end = '')
print(n * p)
print("They are almost equal.")
9.6
import numpy as np
import scipy.linalg as lp
n = 200
m = 500
A = np.random.normal(size=(n,m))
B = lp.toeplitz(list(range(0,m)))
def n6(A, z):
return A[np.argmin([abs(A[i] - z) for i in range(len(A))])]
print(n6([np.random.normal(0, 10) for i in range(1000)], 1))