Numpy Exercise

Numpy Exercise

9.1

Exercise 9.1

  1. A+A
import numpy as np
from scipy.linalg import toeplitz
n,m = 2,5
mu,sigma = 0 , 1
# 2*5 的矩阵,元素符合正态分布
matrixA = np.random.normal(mu, sigma, size=(n,m))
matrixB = toeplitz(range(1,m+1),range(1,m+1))
print(matrixA+matrixA)

输出:

PS F:\CODE\Python> python .\homework.py
[[ 1.23951445 -1.03123251 -0.90514093 -0.02032698 -0.33494675]
[ 0.25820482 -2.67686802 0.16869162 0.41806255 0.49909279]]

[[ 2.4790289 -2.06246502 -1.81028187 -0.04065397 -0.6698935 ]
[ 0.51640965 -5.35373605 0.33738325 0.83612511 0.99818558]]

  1. AAT
import numpy as np
from scipy.linalg import toeplitz
n,m = 2,5
mu,sigma = 0 , 1
matrixA = np.random.normal(mu, sigma, size=(n,m))
matrixB = toeplitz(range(1,m+1),range(1,m+1))
matrixA_transpose = np.transpose(matrixA)
print(matrixA)
print(matrixA_transpose)
print(np.dot(matrixA,matrixA_transpose))

输出:

PS F:\CODE\Python> python .\homework.py
[[ 0.63334257 0.84245207 -0.217399 1.33525133 0.49414241]
[ 0.68018766 -1.1517007 -0.66141359 1.55528767 -0.48921354]]
[[ 0.63334257 0.68018766]
[ 0.84245207 -1.1517007 ]
[-0.217399 -0.66141359]
[ 1.33525133 1.55528767]
[ 0.49414241 -0.48921354]]
[[3.18518347 1.43928859]
[1.43928859 4.88478732]]
PS F:\CODE\Python>

  1. ATA
import numpy as np
from scipy.linalg import toeplitz
n,m = 2,5
mu,sigma = 0 , 1
matrixA = np.random.normal(mu, sigma, size=(n,m))
matrixB = toeplitz(range(1,m+1),range(1,m+1))
matrixA_transpose = np.transpose(matrixA)
print(matrixA)
print(matrixA_transpose)
print(np.dot(matrixA_transpose,matrixA))

PS F:\CODE\Python> python .\homework.py
[[-0.67442545 0.44894056 -0.28540183 -0.18485206 1.38667406]
[-0.98001289 1.10668193 0.18596774 0.23659315 -0.23022266]]
[[-0.67442545 -0.98001289]
[ 0.44894056 1.10668193]
[-0.28540183 0.18596774]
[-0.18485206 0.23659315]
[ 1.38667406 -0.23022266]]
[[ 1.41527496 -1.3873395 0.01023147 -0.1071954 -0.7095871 ]
[-1.3873395 1.42629251 0.07767868 0.17884577 0.36775098]
[ 0.01023147 0.07767868 0.1160382 0.09675581 -0.4385733 ]
[-0.1071954 0.17884577 0.09675581 0.0901466 -0.31079867]
[-0.7095871 0.36775098 -0.4385733 -0.31079867 1.97586743]]
PS F:\CODE\Python>

  1. AB
import numpy as np
from scipy.linalg import toeplitz
n,m = 2,5
mu,sigma = 0 , 1
matrixA = np.random.normal(mu, sigma, size=(n,m))
matrixB = toeplitz(range(1,m+1),range(1,m+1))
matrixA_transpose = np.transpose(matrixA)
print(matrixA)
print(matrixB)
print(np.dot(matrixA,matrixB))

PS F:\CODE\Python> python .\homework.py
[[ 0.27591306 -1.23719305 0.33459365 -2.99434954 -0.50612873]
[-0.40198922 -0.98757159 -0.49407499 1.08140458 1.18611674]]
[[1 2 3 4 5]
[2 1 2 3 4]
[3 2 1 2 3]
[4 3 2 1 2]
[5 4 3 2 1]]
[[-15.70273393 -11.02374319 -8.81913855 -5.94534662 -9.06025378]
[ 6.39684465 5.20898068 2.04597354 -2.10518359 -4.09353154]]
PS F:\CODE\Python>

  1. A(B-λI)
import numpy as np
from scipy.linalg import toeplitz

def function(matrixA,matrixB,myLambda):
    size = matrixB.shape[1]
    print(np.dot(matrixA,matrixB-myLambda*np.eye(size)))

n,m = 2,5
mu,sigma = 0 , 1
matrixA = np.random.normal(mu, sigma, size=(n,m))
matrixB = toeplitz(range(1,m+1),range(1,m+1))
myLambda = 0.5
function(matrixA,matrixB,myLambda)

PS F:\CODE\Python> python .\homework.py
[[ 0.27591306 -1.23719305 0.33459365 -2.99434954 -0.50612873]
[-0.40198922 -0.98757159 -0.49407499 1.08140458 1.18611674]]
[[1 2 3 4 5]
[2 1 2 3 4]
[3 2 1 2 3]
[4 3 2 1 2]
[5 4 3 2 1]]
[[-15.70273393 -11.02374319 -8.81913855 -5.94534662 -9.06025378]
[ 6.39684465 5.20898068 2.04597354 -2.10518359 -4.09353154]]
PS F:\CODE\Python>

9.2

Exercise 9.2

import numpy as np
from scipy.linalg import toeplitz

n,m = 2,5
matrixB = toeplitz(range(1,m+1),range(1,m+1))
b = np.array([1,2,3,4,5])
x = np.linalg.solve(matrixB,b)
print(x)
#check
print(np.dot(matrixB,x))

PS F:\CODE\Python> python .\homework.py
[ 1.00000000e+00 -2.22044605e-16 4.44089210e-16 -2.22044605e-16
4.93038066e-32]
[1. 2. 3. 4. 5.]
PS F:\CODE\Python>

9.3

Exercise 9.3

  1. A的Frobenius norm
import numpy as np
from scipy.linalg import toeplitz
n,m = 2,5
mu,sigma = 0 , 1
matrixA = np.random.normal(mu, sigma, size=(n,m))
print(matrixA)
print(np.linalg.norm(matrixA))

PS F:\CODE\Python> python .\homework.py
[[-0.16402499 1.10150208 1.85421761 -0.04170634 0.1199483 ]
[ 0.61261661 2.146186 -0.3369618 0.13611411 -0.51320769]]
3.1735353907228543
PS F:\CODE\Python>

  1. B的infinity norm
import numpy as np
from scipy.linalg import toeplitz

n,m = 2,5
matrixB = toeplitz(range(1,m+1),range(1,m+1))
print(np.linalg.norm(matrixB,ord=np.inf))

PS F:\CODE\Python> python .\homework.py
15.0
PS F:\CODE\Python>

  1. largest and smallest singular values of B
import numpy as np
from scipy.linalg import toeplitz

n,m = 2,5
matrixB = toeplitz(range(1,m+1),range(1,m+1))
# largest
print(np.linalg.norm(matrixB,ord=2))
# smallest
print(np.linalg.norm(matrixB,ord=-2))

PS F:\CODE\Python> python .\homework.py
13.19153264535419
0.5562949153123724
PS F:\CODE\Python>

9.4

Exercise 9.4

import numpy as np
from scipy.linalg import toeplitz

n,m = 2,5
mu,sigma = 0 , 1
matrixZ = np.random.normal(mu,sigma,size=(n,n))
eigenvalue,eigenvector = np.linalg.eig(matrixZ)
#check
print(np.dot(matrixZ,eigenvector))
print(eigenvalue*eigenvector)

PS F:\CODE\Python> python .\homework.py
[[ 0.60670432 1.22355928]
[ 0.09071227 -0.92583379]]
[[ 0.60670432 1.22355928]
[ 0.09071227 -0.92583379]]
PS F:\CODE\Python>

import numpy as np
from scipy.linalg import toeplitz
import time

mu,sigma = 0 , 1
for n in range(1,11):
    matrixZ = np.random.normal(mu,sigma,size=(n,n))
    t1 = time.clock()
    eigenvalue,eigenvector = np.linalg.eig(matrixZ)
    t2 = time.clock()
    print(t2-t1)

PS F:\CODE\Python> python .\homework.py
0.00018646920946931733
0.0002066173655772308
0.00018765439512272403
0.00013708647391070584
0.00017896303366440815
0.0002251852741472684
0.00017185191974396826
7.427163428015172e-05
0.0001256296792611078
0.00011891362722513642
PS F:\CODE\Python>

9.5

Exercise 9.5

import numpy as np

mu,sigma = 0 , 1
n = 20
p = np.random.random(1) #随机生成0~1之间的数
matrixC = np.random.binomial(1,p,(n,n))
U, s, Vh = np.linalg.svd(matrixC)
# s为特征值
print(n*p)
print(s[0])

PS F:\CODE\Python> python .\homework.py
[7.62050645]
8.96255979273896
PS F:\CODE\Python> python .\homework.py
[10.60014879]
10.22298757929005
PS F:\CODE\Python> python .\homework.py
[4.46929332]
4.985951816688994
PS F:\CODE\Python>

n*p和最大特征值很接近。

9.6

Exercise 9.6

import numpy as np
def find_nearest(arrayA, value):
    index = (np.abs(arrayA - value)).argmin()
    return arrayA[index]

n = 10
mu,sigma = 0 , 1
arrayA = np.random.normal(mu, sigma, size=n)
z = np.random.random(1) #随机生成0~1之间的数
closest_value = find_nearest(arrayA,z)
print(arrayA)
print(closest_value)
print(z)

PS F:\CODE\Python> python .\homework.py
[-0.587606 -0.59073625 1.59707019 -2.14856014 -2.83323776 -1.97791189
-0.67525228 0.69996575 0.97398677 -0.5630911 ]
0.6999657506129406
[0.25202834]
PS F:\CODE\Python>

猜你喜欢

转载自blog.csdn.net/qq_39178023/article/details/80379533