微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你将如何在 Python 中找到线性插值的根?

如何解决你将如何在 Python 中找到线性插值的根?

我正在计算具有不规则形状的光曲线的半高全宽。我现在的做法是

  • 将样条 (scipy.interpolate.UnivariateSpline) 拟合到数据(减去半最大值,因此 y = 0 半最大值)
  • 找到样条的根 (UnivariateSpline.roots())
  • 找出第一个根和最后一个根之间的差异,以确定半最大值处的曲线宽度

roots 方法仅适用于三次样条,但我需要样条是线性的,否则我会得到如下图所示的结果(由于数据点的间距)。我应该注意,我正在处理数百个数据集,因此手动选择这些“根”不太可行。

有没有人有任何技巧可以找到线性样条的根(或给定 y 值的所有 x 值)?非常感谢!

A plot showing the discrepancy between the true flux and the cubic spline.

解决方法

您可以使用 make_interp_spline_(...,k=1) 获取 BSpline 对象,通过 PPoly.from_spline() 转换为 PPoly,结果具有 .roots 方法。

或者,正如其他答案所建议的那样,只需找到相关区间并求解线性段的根即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。