numpy作业

本文通过一系列的Python代码示例展示了不同类型的矩阵运算,包括矩阵加法、乘法、求解线性方程组、范数计算及奇异值分解等,并对比了随机矩阵与Toeplitz矩阵的特性。

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)) 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值