Scipy

题目要求使用最小二乘法求解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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值