Exercise 10.1: Least squares
Generate matrix A ∈ R m×n with m > n. Also generate some vector b ∈ R m .
Generate matrix A ∈ R m×n with m > n. Also generate some vector b ∈ R m .
Now find
Print the norm of the residual.
代码:
import numpy as np
from scipy.optimize import leastsq
m = 30
n = 20
A = np.random.rand(m, n)
b = np.random.rand(m, 1)
x = np.random.rand(n, 1)
def residuals(x, A, b):
return np.ravel(A.dot(x) - b)
res = leastsq(residuals, x, (A, b))
norm = np.linalg.norm(residuals(res[0], A, b))
print(res[0])
print(norm)
输出:
[ 0.26741717 -0.00122432 0.11224357 -0.01251559 0.01099381 0.09011149
0.18331027 0.22826289 -0.0110512 -0.05081341 -0.07351126 0.07074645
-0.03653636 0.02772971 0.02575132 0.02336123 0.06607123 -0.06637247
-0.03575784 0.11335802]
8.760444288588074
Exercise 10.2: Optimization
Find the maximum of the function
代码:
from scipy.optimize import minimize_scalar
import numpy as np
def f(x):
return -np.sin(x-2)**2 * np.exp(-x**2)
res = minimize_scalar(f)
print(res)
输出:
fun: -0.9116854118471548
nfev: 25
nit: 21
success: True
x: 0.21624132858697098
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.distance import pdist, squareform
import numpy as np
n = 10
d = np.random.rand(n, 2)
am = squareform(pdist(d))
print(am)
输出:
[[0. 0.59375672 0.34885387 0.49934648 0.18621826 0.41217687 0.42730273 0.48378327 0.63717365 0.60566626]
[0.59375672 0. 0.41679726 0.5172814 0.77642933 0.36466576 0.26385413 0.689037 0.9816709 0.86817596]
[0.34885387 0.41679726 0. 0.17464231 0.51781333 0.49546908 0.15560288 0.28320269 0.95375586 0.89089568]
[0.49934648 0.5172814 0.17464231 0. 0.64835019 0.66371232 0.2663659 0.19738647 1.12182254 1.06370784]
[0.18621826 0.77642933 0.51781333 0.64835019 0. 0.55047218 0.61129382 0.58493965 0.57203568 0.58393739]
[0.41217687 0.36466576 0.49546908 0.66371232 0.55047218 0. 0.4245734 0.76099903 0.61882513 0.50359959]
[0.42730273 0.26385413 0.15560288 0.2663659 0.61129382 0.4245734 0. 0.42593457 0.96571265 0.88195774]
[0.48378327 0.689037 0.28320269 0.19738647 0.58493965 0.76099903 0.42593457 0. 1.12010628 1.08650083]
[0.63717365 0.9816709 0.95375586 1.12182254 0.57203568 0.61882513 0.96571265 1.12010628 0. 0.1440625 ]
[0.60566626 0.86817596 0.89089568 1.06370784 0.58393739 0.50359959 0.88195774 1.08650083 0.1440625 0. ]]