栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-Matplotlib:查找线图的交集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)

并使用optimize.fsolve查找以下内容的根

pdiff

import scipy.interpolate as interpolateimport scipy.optimize as optimizeimport numpy as npx1=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)/2roots=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<root<x_max:        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值,第二列是在处评估的第一个PiecewisePolynomial的y值,

x
第三列是第二个PiecewisePolynomial的y值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号