Python編程作業【第十一週】(Numpy homework)

Numpy


Exercise 9.1: Matrix operations

import numpy
from scipy import linalg
n = 200
m = 500
def function(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))
def power_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 += 1
    return 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)])  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章