Weak13 Scipy Homework

这里写图片描述
代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq

m=10
n=4
A = np.random.randint(1,10,(m,n))
b = np.random.randint(1,10,(m,1))
x = np.random.randint(1,10,(n,1))
def residual(x):
    x = x.reshape(n,1)  #变成n*1
    ret = A@x-b
    return ret.T.reshape(m) #变回1*n

x_p = leastsq(residual,x)
print("x=",x_p[0].reshape(n,1))
print("residual=",A@(x_p[0].reshape(n,1))-b)
print(np.linalg.norm(A@(x_p[0].reshape(n,1))-b))

输出:

x= 
[[ 0.34854529]
 [ 0.3006728 ]
 [-0.1233362 ]
 [ 0.2417467 ]]
residual= 
[[-4.10413313]
 [-3.70371822]
 [ 0.52974956]
 [ 3.66953778]
 [ 1.14643057]
 [-0.98232759]
 [-1.40749502]
 [ 1.80895905]
 [-0.0451012 ]
 [ 0.94175622]]
7.261484972453751

这里写图片描述
和matlab一样,没有最大值函数,只能把函数取负后找最小值,通过加负号变回最大值。
代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
import math

func = lambda x: math.pow(np.sin(x - 2), 2) * np.exp(-1 * (x ** 2)) * (-1)
ans = minimize(func,0)
print(ans.x[0])
print(-ans.fun)

输出:

0.21624131913960304
0.9116854118471545

这里写图片描述
求出每两行之间的距离。
代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist
import math

x = np.array([[1,1,1,1],[2,2,2,2],[4,4,4,4]])
dist = pdist(x,metric='euclidean')
print(dist)

输出:

[2. 6. 4.]

这里可以看出算的顺序是从第一行为起点算完其余行后,再从第二行算起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值