第十一周作业(numpy 专题)

Exercise 9.1: Matrix operations

import numpy as np
from scipy import linalg
n=200
m=500
#computes A(B add lambda*I) for any lambda
def Computes(A,B,lam=1):
    size=B.shape
    temp=B-lam*np.identity(size[0])
    return np.matmul(A,temp)
A=np.random.normal(size=(n,m))
column=np.random.normal(5,5,size=(m,1))
#round to int
column=np.around(column)
B=linalg.toeplitz(column)

tran_A=np.matrix.transpose(A)
#calculate A add A
add=A+A
#calculate A multiply A's transpose
multi_1=np.matmul(A,tran_A)
#calculate A's transpose multiply A
multi_2=np.matmul(tran_A,A)
#caiculate A multiply B
multi_3=np.matmul(A,B)

 Exercise 9.2: Solving a linear system

 import numpy as np
from scipy import linalg
n=200
m=500
A=np.random.normal(size=(n,m))
column=np.random.normal(5,5,size=(m,1))
#round to int
column=np.around(column)
B=linalg.toeplitz(column)

b=np.random.normal(5,5,size=(m,1))
b=np.around(b)
#calculate B's inverse 
inv_B=np.linalg.inv(B)
# solve Bx = b by x=B's inverse plus b
x=np.matmul(inv_B,b)

Exercise 9.3: Norms

import numpy as np
from scipy import linalg
n=2
m=5
A=np.random.normal(size=(n,m))
column=np.random.normal(5,5,size=(m,1))
#round to int
column=np.around(column)
B=linalg.toeplitz(column)

Frobenius_norm=np.linalg.norm(A,ord='fro')
Infinity_norm=np.linalg.norm(B,ord=np.inf)
(u,s,vh)=np.linalg.svd(B)
max_singular_values=s[0]
min_singular_values=s[-1]

Exercise 9.4: Power iteration

import numpy as np
from scipy import linalg
import time

def Power_iteration(n,precision=(10**-6)):
    Z=np.random.normal(size=(n,n))
    startTime=time.clock()
    counter=0

    x=np.random.normal(size=(n,1))
    x=x/(np.linalg.norm(x,ord='fro'))
    lam=0
    while(True):
        counter=counter+1
        u=np.matmul(Z,x)
        x_t=np.transpose(x)
        #Rayleigh 
        lam=np.matmul( np.matmul(x_t,Z) ,x)
        temp=x
        x=u/(np.linalg.norm(u,ord='fro'))
        # exam convergence condition
        if( min(abs(temp-x))< precision):
            break
    endTime=time.clock()

 Exercise 9.5: Singular values

import numpy as np
from scipy import linalg
import time

import numpy as np
from scipy import linalg
import time

def Singular_values(n,p):
    C=np.random.rand(n,n)
    for x in np.nditer(C,op_flags=["readwrite"]):
        if(x<=p):
            x[...]=1
        else:
            x[...]=0
    singularVal=linalg.svd(C,compute_uv=False)
    max_SingularVal=singularVal[0]
    print("n:",n)
    print("p:",p)
    print("largest singular value:",max_SingularVal)
改变n,p的值进行测试:
MacBookdeMacBook-Pro:Desktop macbook$ python3 test.py
n: 10
p: 0.5
largest singular value: 5.557124820631773
MacBookdeMacBook-Pro:Desktop macbook$ python3 test.py
n: 100
p: 0.5
largest singular value: 50.004820112268476
MacBookdeMacBook-Pro:Desktop macbook$ python3 test.py
n: 100
p: 0.1
largest singular value: 10.83796353860957
MacBookdeMacBook-Pro:Desktop macbook$ python3 test.py
n: 100
p: 0.9
largest singular value: 89.70073847061134

从上述输出可以看出,当n增大或者p增大时,都会导致最大的奇异值增大

Exercise 9.6: Nearest neighbor

import numpy as np
from scipy import linalg
import time

def Nearest_neighbor(z,A):
    Z=np.ones(A.shape)
    Z=np.absolute(z*Z-A)
    ind = np.unravel_index(np.argmin(Z, axis=None), Z.shape)
    return A[ind]







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值