scipy.interpolate 中的 interp1d 函数使用什么算法

2023-12-13

所以我正在为我的数值课程编写一个Python程序,并且我必须编写一个三次样条程序。所以我实现了书中给出的三次样条公式Chapra 和 canale 的数值方法 and 数值数学,作者:chenny 和 kincaid.

所以我的数据是

x=[1.0,3.0,4.0,7.0]
y=[1.5,4.5,9.0,25.5]

使用这些数据并应用三次样条我得到x=1.5 , y=1.79122340426

虽然使用相同的数据但使用 scipy 函数给出:

  >>> scipy.interpolate.interp1d(x, y, kind='cubic')(1.5)
array(1.265624999999932)

那么,为什么结果会有这样的差异呢?很明显,他们没有使用相同的公式。 scipy 函数中使用的三次样条公式是什么?它是自然三次样条公式还是改进的公式? 注意:值 1.2656 更准确。


编辑:@ev-br 在这个答案的评论中对我的答案提供了重要的更正。事实上 interp1D 样条线不是基于 FITPACK 的。检查@ev-br 提供的链接的评论。

用于曲线拟合的 Scipy 函数基于 FITPACK。尝试查看有关您正在使用的功能的文档,您将能够看到“参考”章节,其中会出现类似以下内容:

Notes
-----
See splev for evaluation of the spline and its derivatives. Uses the
FORTRAN routine curfit from FITPACK.
If provided, knots `t` must satisfy the Schoenberg-Whitney conditions,
i.e., there must be a subset of data points ``x[j]`` such that
``t[j] < x[j] < t[j+k+1]``, for ``j=0, 1,...,n-k-2``.
References
----------
Based on algorithms described in [1]_, [2]_, [3]_, and [4]_:
.. [1] P. Dierckx, "An algorithm for smoothing, differentiation and
   integration of experimental data using spline functions",
   J.Comp.Appl.Maths 1 (1975) 165-184.
.. [2] P. Dierckx, "A fast algorithm for smoothing data on a rectangular
   grid while using spline functions", SIAM J.Numer.Anal. 19 (1982)
   1286-1304.
.. [3] P. Dierckx, "An improved algorithm for curve fitting with spline
   functions", report tw54, Dept. Computer Science,K.U. Leuven, 1981.
.. [4] P. Dierckx, "Curve and surface fitting with splines", Monographs on
   Numerical Analysis, Oxford University Press, 1993.

这些参考资料特别是取自以下来源:fitpack.py关于函数“splrep”。如果您需要对您的算法和 interp1D 的样条线进行非常彻底的比较,只需转到文档:

scipy.interpolate.interp1d

你会看到一个名为的链接[source]就在函数名称定义之后(例如:scipy.interpolate.interp1D [来源])。请记住,这些函数有很多例程处理程序,因此在浏览源代码时要有耐心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scipy.interpolate 中的 interp1d 函数使用什么算法 的相关文章

随机推荐

  • 需要在unix中创建一个shell脚本或一个命令来执行以下过程(命令将是首选)

    在以下路径 ncsusnasent02 na jnj com its diq na win dev PowerCenter infa shared WCPIT BIO EDW SrcFiles DDDMD DDD CLI026 WK0933
  • 在 appcompat 22.2 中 Edittext 颜色为白色

    EDIT 2 发生这种情况是因为线路
  • 终端模拟器中的 Emacs 键绑定发生变化

    我注意到终端模拟器中的一些 Emacs 键绑定发生了变化 xfce4 terminal For example M SPC under TTY sets the mark but in xfce4 terminal it does noth
  • 是否可以通过 PHP 访问查询字符串中的锚点?

    我有一个通过如下 URL 访问的页面 http power coder net Test something php id 3 Page1 我知道如何使用 GET 访问 id 参数 但是有没有办法让我访问 Page1 部分 我查看了 SER
  • 向上滚动内容时如何隐藏工具栏?

    当我滚动文本和图像内容时 我试图隐藏工具栏 这里我使用scrollView来获取滚动内容 当我向上滚动内容时 如何隐藏工具栏 这是我的 XML 代码 内容 main XML
  • 在 Go 中解组 json:必填字段?

    如果使用 Go 解析 JSON 输入时未找到字段 是否可能会生成错误 我在文档中找不到它 是否有任何标签指定所需字段 中没有标签encoding json将字段设置为 必需 的包 你要么必须自己写MarshalJSON 方法 或者对丢失的字
  • for 循环中的多个“subplot2grid”

    我试图绘制两组不同的函数 通过双循环一次 我不知道如何要求 subplot2grid 对第二个图执行操作 import numpy as np from matplotlib import pyplot as plt t np linspa
  • 检索 XSLT 中的页面 URL 参数或页面 URL

    我有一个具有 URL 结构的页面 可以创建一个通用方法来获取 URL 可能的任何其他参数的值 parama 1 paramb 2 是否可以像 javascript 的 location href 一样获取 XSL 中页面的 URL 是否可以
  • 来自广泛 data.frames 的汇总数据表

    我正在尝试寻找创建汇总表 的惰性 简单方法data frames从宽处data frames 假设有以下 data frame 但有更多列 因此指定列名称需要很长时间 set seed 2 x lt data frame Rep rep 1
  • Console.WriteLine 慢

    我运行了数百万条记录 有时我必须使用Console WriteLine看看发生了什么 然而 Console WriteLine非常慢 比写入文件慢得多 但这非常方便 有谁知道加快速度的方法吗 如果只是为了调试目的 你应该使用Debug Wr
  • openjdk-8-jdk - 缺少 src.zip?

    以下是所需信息 apt list grep installed grep i openjdk 8 jdk WARNING apt does not have a stable CLI interface Use with caution i
  • Google 地图折线:标记包含单击的 LatLng 的两条折线坐标

    我在谷歌地图的折线中遇到问题 我有一条从一点到另一点的折线 当我单击折线时 我需要两端的纬度和经度 请问有人可以帮助我吗
  • 分数的2的补码表示法?

    我对此有点迷失 我需要使用两个小数位0 a 1 a 2 像这样 现在我可以使用 00 01 10 and 11但我也需要负数 2的补码 所以会 10 be 5 或者会是 25 与 11 那就是 75 或者会是 5 我很确定这两种情况都是前者
  • HTML5 Server 发送事件和多个客户端(不使用 Comet)

    我有一个用例 我想知道 HTML5 的 Server sent Events 是否适合 多个客户端 Javascript HTML5 浏览器 连接到 Web 服务器 具有 Java EE 后端 每个客户都可以随时查看不同的视图 具体取决于他
  • 如何接受/忽略QKeyEvent

    http qt project org doc qt 5 qwidget html keyPressEvent 请注意 QKeyEvent 以 isAccepted true 开头 因此您不需要 需要调用 QKeyEvent accept
  • 禁用 jQuery 自动完成下拉列表

    这是一个相当简单的问题 但如何禁用 jQuery 自动完成的下拉菜单 当用户开始输入时 我在响应回调上运行我自己的函数 我不需要任何其他东西出现 这就是我所拥有的 search autocomplete source app friends
  • 如何在C++中输出unicode方框图?

    抱歉 这听起来很简单 但我正在尝试使用来自的 unicode 字符在 Visual Studio 2017 中绘制一个简单的框https en wikipedia org wiki Box drawing character使用下面的代码
  • 这段代码是否安全,不会受到 SQL 注入的影响

    我想让我的代码尽可能安全 免受任何类型的攻击 我希望对下面使用的简单代码有一些了解 如果有任何关于如何使其更安全 如果它很脆弱 以及为什么会变得更安全的指示 那就太棒了 我读到 使用准备好的语句是防范攻击的最佳实践
  • 将块元素排列在一条水平线上

    我不知道 要么我不太擅长 搜索 艺术 要么这个话题太简单了 通常没有人问这个问题 但自从我开始我的网站以来 我一直在搜索这个问题 我的网页上只有四个块元素 第一个 Block 元素单独显示在顶部 第二个 第三个和第四个块元素 我想从下一行排
  • scipy.interpolate 中的 interp1d 函数使用什么算法

    所以我正在为我的数值课程编写一个Python程序 并且我必须编写一个三次样条程序 所以我实现了书中给出的三次样条公式Chapra 和 canale 的数值方法 and 数值数学 作者 chenny 和 kincaid 所以我的数据是 x 1