题目要求使用最小二乘法求解Ax=b,并打印出残差的范数,这里我们设m=20,n=10,并生成一个随机矩阵和随机向量
使用scipy.linalg.lstsq求解
代码如下:
import numpy as np
from scipy import linalg
m=20
n=10
A=np.random.rand(m,n)
b=np.random.rand(m,1)
x=linalg.lstsq(A,b)
print("近似解为:")
print(x[0])
print("残存范数为:")
print(x[1])
输出:
近似解为:
[[-0.30060196]
[-0.35642665]
[ 0.27812143]
[ 0.20882078]
[ 0.36183318]
[ 0.4612285 ]
[-0.00491983]
[-0.14193899]
[ 0.04666019]
[ 0.18268274]]
残存范数为:
[1.00369804]
这里使用scipy.optimize.fminbound函数,似乎并没有求最大值的函数,在这里我们传入函数*-1求出函数的最小值点,带入后取负值便可以得到最大值
代码:
import numpy as np
from scipy import optimize
def f(x):
return -1*np.power(np.sin(x-2),2)*np.exp(-1*np.power(x,2))
res = optimize.fminbound(f,-10,10)
print("最大值点为:")
print(res)
print("最大值为:")
print(-1*f(res))
输出:
最大值点为:
0.21624042833999058
最大值为:
0.9116854118456349
这里我们使用scipy.spatial.distance.pdist便可以得到不同地区之间的距离,使用scipy.spatial.distance.squareform可以生成size*size的表格
scipy.spatial.distance.pdist的定义如下:
代码:
import numpy as np
import scipy.spatial.distance as dis
from scipy.spatial.distance import pdist
#Generate a random matrix with n = 5 rows, m = 2 columns
A = np.random.randint(low = 0, high = 10, size= (5, 2))
print(A)
dist = pdist(A)
z=dis.squareform(dist)
print(z)