- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了关于 https://www.value-at-risk.net/cubic-spline-interpolation/ 的文章
我都明白了,但我不知道如何获取矩阵的值:
我知道有这样的东西 hi = hi+1 - hi
我访问了几个网站,阅读了不同的解释,但我从未发现我究竟是如何得出矩阵中的这个值的。
最佳答案
矩阵只是编码为矩阵的方程组,因此可以通过逆矩阵轻松计算。
例如矩阵乘法之后的矩阵 (8,4,2,1,0,0,0,0)
的第二行表示:
a3.2^3+a2.1^2+a1.2^1+a0=5
这是你的 p1(2)=5
行是:
p1(1)=1
p1(2)=5
p2(2)=5
p2(3)=4
p1'(2)-p2'(2)=0
p1''(2)-p2''(2)=0
p1''(1)=0
p2''(3)=0
所以例如最后一个矩阵行 ( 0,0,0,0,18,2,0,0 )
是这样的:
b3.18 + b2.2 = 0
如果我们推导 p2(t)
直到二阶推导
p2(t) = b3.t^3 + b2.t^2 + b1.t + b0
p2'(t) = 3.b3.t^2 + 2.b2.t + b1
p2''(t) = 2.3.b3.t + 1.2.b2 = 6.b3.t + 2.b2
现在 t=3
我们得到:
p2''(3) = 6.b3.3 + 2.b2 = 18.b3 + 2.b2
并编码成矩阵(最后一行)
(0,0,0,0,18,2,0,0) * ( a3,a2,a1,a0,b3,b2,b1,b0) = 0
这与您的示例相符。希望现在很清楚...
请注意,您的这个示例仅适用于 y
轴,因为您获得了 2D 曲线,您需要再次以相同的方式对 x
轴执行此操作 ...
现在让我们再次重写矩阵方程:
M*A=B
M
是您的 8x8
矩阵,A=(a3,a2,a1,a0,b3,b2,b1,b0)
和 B=(1,5,5,4,0,0,0,0)
你可以这样解决:
inverse(M)*M*A = inverse(M)*B
A = inverse(M)*B
因此,您获得了 A
,其中包含您的 p1,p2
多项式系数,B
包含您的位置 (y
一次传递坐标,下一次传递 x 坐标)所以你得到了 p1x,p1y,p2x,p2y
多项式。这就是插值所需要的。
然而,这种方法有点落后,通常使用预定义的多项式形式,如 SPLINE、BEZIER,具有定义的属性,如连续性、线性等(不需要逆矩阵运算)。但是,如果您需要像本示例中那样的自定义属性,那么您就别无选择。
有关详细信息,请参阅 How can i produce multi point linear interpolation?
关于math - 在三次样条插值中计算矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920162/
我是一名优秀的程序员,十分优秀!