Exercise 10.1: Least squares
Generate matrix A 2 Rmn with m > n. Also generate some vector b 2 Rm.
Now nd x = arg minx kAx .. bk2.
Generate matrix A 2 Rmn with m > n. Also generate some vector b 2 Rm.
Now nd x = arg minx kAx .. bk2.
Print the norm of the residual.
代码:
import numpy as np
import scipy.linalg as la
m, n = 20, 10
A = np.random.rand(m, n)
b = np.random.rand(m, 1)
res = la.lstsq(A, b)
x = res[0]
print("x is")
print(x)
residual = la.norm(np.dot(A, x) - b, ord=2)
print("The norm of the residual is")
print(residual)
运行结果:
Exercise 10.2: Optimization
Find the maximum of the function
f(x) = ((sin(x-2))^2)*e^(-x^2)
代码:
import numpy as np
import scipy.optimize as op
import math
def func(x):
return (-(math.sin(x-2)**2)*math.exp(-(x ** 2)))
a = op.fminbound(func, -10, 10)
print(-func(a))
运行结果:
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.
代码:
import numpy as np
import scipy.spatial as sp
X = np.random.randint(0, 10, (10, 10))
print("X:")
print(X)
print("Distance:")
print(sp.distance.pdist(X))
运行结果: