Exercise 10.1: Least squares
题目描述
Generate matrix A belongs to Rm*n with m > n. Also generate some vector b belongs to Rm.
Now x = arg min ||Ax -b||2
Print the norm of the residual
解题思路
构造函数 A*x - b = Y。生成正太分布随机数作为参数点。运用Python 的 leastsq 函数实现最小二乘。
解题代码
import numpy as np
from scipy.optimize import leastsq
def err(x, A, b):
return A * x - b
x = 1
m = 100
A = np.array([np.random.random() * 10 for i in range(m)])
b = np.array([np.random.random() * 10 for i in range(m)])
result = leastsq(err, x, args = (A, b))
print(result[0])
Exercise 10.2: Optimization
题目描述
Find the maximum of the function
f(x) = sin2(x - 2)e^-x2
解题思路
构造函数 f(x) = sin2(x - 2)e^-x2 。利用 Python 的 minimize_scalar 函数解方程 。
解题代码
import numpy as np
from math import sin, exp
from scipy.optimize import minimize_scalar
def f(x):
return ((-1) * (sin(x - 2))**2) * exp(-1 * (x**2))
result = minimize_scalar(f)
print((-1) * result.fun)
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.
解题思路
运用Python 的 dist.cdist 函数
解题代码
import numpy as np
import scipy.spatial.distance as dist
n, m = 6, 3
X = np.random.randint(5, 20, size = (n, m))
D = dist.cdist(X, X)
print(D)