python 交集绘图_Python – matplotlib:找到线程的交集

我们可以使用scipy.interpolate.PiecewisePolynomial创建由分段线性数据定义的函数.

p1=interpolate.PiecewisePolynomial(x1,y1[:,np.newaxis])

p2=interpolate.PiecewisePolynomial(x2,y2[:,np.newaxis])

我们可以把这两个功能区别开来,

def pdiff(x):

return p1(x)-p2(x)

import scipy.interpolate as interpolate

import scipy.optimize as optimize

import numpy as np

x1=np.array([1.4,2.1,3,5.9,8,9,23])

y1=np.array([2.3,3.1,1,3.9,8,9,11])

x2=np.array([1,2,3,4,6,8,9])

y2=np.array([4,12,7,1,6.3,8.5,12])

p1=interpolate.PiecewisePolynomial(x1,y1[:,np.newaxis])

p2=interpolate.PiecewisePolynomial(x2,y2[:,np.newaxis])

def pdiff(x):

return p1(x)-p2(x)

xs=np.r_[x1,x2]

xs.sort()

x_min=xs.min()

x_max=xs.max()

x_mid=xs[:-1]+np.diff(xs)/2

roots=set()

for val in x_mid:

root,infodict,ier,mesg = optimize.fsolve(pdiff,val,full_output=True)

# ier==1 indicates a root has been found

if ier==1 and x_min

roots.add(root[0])

roots=list(roots)

print(np.column_stack((roots,p1(roots),p2(roots))))

产量

[[ 3.85714286 1.85714286 1.85714286]

[ 4.60606061 2.60606061 2.60606061]]

第一列是x值,第二列是在x处评估的第一个PiecewisePolynomial的y值,第三列是第二个PiecewisePolynomial的y值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值