题目要求:最小二乘法算出x的值,并计算残差。可以直接使用scipy的linalg里的最小二乘法lstsq
import numpy as np
from scipy.linalg import norm
from scipy.linalg import lstsq
A = np.random.randint(0,30,size=(10,5))
b = np.random.randint(0,20,size=(10,1))
print("A:")
print(A)
print("b:")
print(b)
#Compute a vector x such that the 2-norm |b - A x| is minimized.
x, res, rnk, s = lstsq(A, b)
print("x:")
print(x)
_b = norm(b-np.dot(A,x),ord=2)
print("_b:")
print(_b)
题目:求出函数的最小值。可以用scipy.optimize.brute()
import numpy as np
import scipy.optimize as so
import math
def fun(x):
return(-(math.sin(x-2)**2)*math.exp(-(x**2)))
grid = (-10, 10, 0.1)
resbrute = so.brute(fun, (grid,))
print(-fun(resbrute[0]))
求点对之间的距离:scipy.spatial.distance.cdist(X1, X2, metric=’euclidean‘)
import numpy as np
from scipy.spatial.distance import cdist
import math
m = int(input("Please input m: "))
n = int(input("Please input n: "))
X = np.random.rand(m, n)
print(X)
print(cdist(X,X,metric="euclidean"))