scipy exercises

Exercise 10.1: Least squares Generate matrix A ∈ Rm×n with m > n. Also generate some vector b ∈ Rm. Now find x = argminxkAx−bk2. Print the norm of the residual.

import numpy as np 
import scipy.optimize as opt 

#Exercise 10.1
m = 5
n = 3
A = np.random.normal(3,1, (m, n))
b = np.random.normal(5,1,(m, 1))
x = np.dot(np.dot(np.linalg.inv(np.dot(A.T, A)), A.T), b)
print(x)


Exercise 10.2: Optimization Find the maximum of the function
f(x) = sin2(x−2)e−x2

import numpy as np 
import scipy.optimize as opt 

#Exercise 10.2
def f(x):
	return - np.power(np.sin(x - 2), 2) * np.exp(- np.power(x, 2))
res = opt.minimize_scalar(f)
print(res.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.

import numpy as np 
import scipy.spatial as spa 

X = np.array([[0,1], [0,2], [2,5], [4,3]])
pair_dis = spa.distance.pdist(X, 'euclidean') #以向量的二范数作为距离的计算方法
n = X.shape[0]
for first in range(0, n):
	for second in range(first+1, n):
		print('The distance between city {} and city {} is {}.'.format(
			first, second, pair_dis[int((n+n-1-first)*first/2 + second-first-1)]))



猜你喜欢

转载自blog.csdn.net/ddl_xiaodichen/article/details/80593271