Exercise 10.1: Least squares
题目描述:
Generate matrix A ∈ R m×n with m > n. Also generate some vector b ∈ Rm. Now find x = argminx||Ax−b||2. Print the norm of the residual.
代码实现:
from scipy.optimize import nnls
import numpy as np
m = 20
n = 10
A = np.random.rand(m, n)
b = np.random.rand(m)*5
x, rnorm = nnls(A, b)
print("A = ")
print(A)
print("b = ")
print(b)
print("rnorm = ")
print(rnorm)
运行结果:
Exercise 10.2: Optimization
题目描述:
Find the maximum of the function:f(x) = sin2(x−2)e−x2
代码实现:
from scipy.optimize import minimize_scalar
from numpy import *
def func(x):
result = -(sin(x-2))**2*power(e,-x**2)
return result
res = minimize_scalar(func)
print("The maximum = ",end="")
print(-func(res.x))
运行结果:
Exercise 10.3: Pairwise distances
题目描述:
Let X be a matrix with n rows and m columns. How can you compute the pairwise distances between every two rows?
As an example application, consider n cities, and we are given their coordinates in two columns. Now we want a nice table that tells us for each two cities, how far they are apart.Again, make sure you make use of Scipy’s functionality instead of writing your own routine.
代码实现:
from scipy.spatial import distance
import numpy as np
n = 4
m = 2
X = np.random.rand(n, m)
y = distance.pdist(X)
Z = distance.squareform(y)
print("X = ")
print(X)
print("\nMatrix Z represents the pairwise distances between two rows")
print("Z = ")
print(Z)
运行结果: