algorithm - 使用动态规划进行插值

标签 algorithm dynamic-programming interpolation polynomials

我在做家庭作业时遇到了麻烦。

我需要描述一个有效的算法来解决 polynomial interpolation问题:

  1. P[i,j] 为点 (xi, yi),...,(xj,yj) 的多项式插值。找到 0 次或 1 次的 3 个简单多项式 q(x)、r(x)、s(x),使得:

    P[i,j+1]={q(x)P[i,j](x)-r(x)P[i+1,j+1](x)}/s (x)

  2. 给定点 (x1,y1),....(xn,yn),根据您在第 1 节中找到的用于计算系数 a0,.. 的递推关系,描述一种有效的动态规划算法.an-1 的多项式插值。

嗯,我知道如何使用 Newton polynomial 解决多项式插值问题这看起来与上面的递归关系非常相似,但我看不出它如何帮助我找到 0 或 1 度的 q(x)、r(x)、s(x),并假设我有正确的 q(x ), r(x), s(x) - 我如何使用动态规划解决这个问题?

任何帮助将不胜感激。

最佳答案

q(x) = (x at {j+1}) - x
r(x) = (x at i) - x
s(x) = (x at {j+1}) - (x at i)

x at ix at j 表示它们在输入点的有序列表中的位置。

一些解释:

首先我们需要了解P[i,j](x)的含义。

将所有初始 (x,y) 对放在 n x n 矩阵的主对角线上。 现在您可以将 P[0,0](x) 提取为矩阵中位于 (0,0) 的点的 y 值。 P[0,1] 是矩阵中 (0,0)(1,1) 点的线性插值。这将是一个直线函数。

((x at 0 - x)(y at 1) - (x at 1 - x)(y at 0)) 
---------------------------------------------
              (x at 1 - x at 0)

P[0,2] 是之前两个线性插值的线性插值,这意味着您的 y 现在将是您在前一步。 这也是构建完整多项式的动态算法。

我强烈建议您看看 this很好的讲座,而且很全lecture notes .

关于algorithm - 使用动态规划进行插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30879212/

相关文章:

dynamic-programming - 动态规划递归或迭代

algorithm - BASED如何解决SPOJ?

c - 哪些 zlib 函数与 WinZip 兼容?

algorithm - 如何最小化两个子多边形的最大纵横比?

algorithm - 如何使用具有可连接输入整数的动态编程来确定最长的递增子序列

algorithm - 大于或等于某个数的集合中的数之和或差

algorithm - 如何生成 float 的随机分区并且每个部分都有最小值pMin?

css - sass中类名的动态变量

python - Pandas 将 NaN 从零插值到下一个有效值

c++ - 双三次插值伪影(图像高档)