思路:
随机构造矩阵A和向量b,这里我用np.random.randn()构建了两个服从正态分布的数组。
然后用scipy.linalg库中的lstsq函数使用最小二乘法求解出向量x
最后用norm函数求出结果
代码:
import numpy as np
from scipy.linalg import norm
from scipy.linalg import lstsq
m = 10
n = 5
sigmaA = 2.0
sigmab = 1.5
muA = 2
mub = 3
A=sigmaA*np.random.randn(m,n)+muA
b=sigmab*np.random.randn(m)+mub
print("A:")
print(A)
print("b:")
print(b)
x, res, rnk, s = lstsq(A, b)
print("x:")
print(x)
result = norm(b-np.dot(A,x),ord=2)
print("result:")
print(result)
运行结果:
思路:
要求函数的最大值,可以先将函数乘-1,然后求最小值,用scipy.optimize库里的brute函数即可。
分析函数的性质可知函数在x=0处取极大值。
代码:
import numpy as np
import scipy.optimize as op
def my_function(x):
return(-(np.sin(x-2)**2)*np.exp(-(x**2)))
mini = op.brute(my_function,((-20,20,0.05),))
print("the maxinum of function:")
print(-my_function(mini[0]))
运行结果:
思路:求两点之间的距离,用sicpy.spatial.distance库里的cdist函数即可
代码:
import numpy as np
import scipy.spatial.distance as dist
m = 4
n = 5
x = np.random.randn(m,n)
print("x:")
print(x)
distance = dist.cdist(x,x)
print("distance:")
print(distance)
运行结果: