python - 如何在python中实现线性插值?
问题描述
我想实现一个函数 interpolate(x, y, X_new) 来计算未知函数 f 在新点 x_new 的线性插值。样本以两个序列 x 和 y 的形式给出。两个序列具有相同的长度,并且它们的元素是数字。x 序列包含函数已被采样的点,y 序列包含对应点的函数值。(不使用 import 语句)。
解决方案
据我了解你的问题,你想写一些函数y = interpolate(x_values, y_values, x)
,这会给你y
一些价值x
?基本思想遵循以下步骤:
x_values
查找定义包含 的区间的值的索引x
。例如,对于x=3
您的示例列表,包含间隔将是[x1,x2]=[2.5,3.4]
,并且索引将是i1=1
,i2=2
(y_values[i2]-y_values[i1])/(x_values[i2]-x_values[i1])
通过(iedy/dx
)计算此区间的斜率。- 处的值
x
现在是处处的值x1
加上斜率乘以距 的距离x1
。
如果斜率与第一个/最后一个间隔相同,您还需要确定如果x
在 的区间之外会发生什么,或者这是一个错误,或者您可以“向后”插值。x_values
这有帮助吗,还是您需要更具体的建议?
推荐阅读
- neo4j - neo4j neosemantics:加载模型约束
- python - Matplotlib 散点图中的分组值
- classification - weka 对输出的简单逻辑回归解释
- c# - 如何生成 sql 命令以使用其他列更新主键
- node.js - TypeError:Joi.validate 不是节点 js 中的函数
- python - 尽管文件不仅仅是换行符,但从 .docx 文件中读取会产生换行符
- python - 以可理解的形式重写 for 循环
- python - 如何在类中获取方法的变量?
- apache - 无限地址嵌套
- java - 错误:找不到资源 android:attr/dialogCornerRadius