gpt4 book ai didi

math - 在三次样条插值中计算矩阵

转载 作者:行者123 更新时间:2023-12-05 03:09:44 29 4
gpt4 key购买 nike

我阅读了关于 https://www.value-at-risk.net/cubic-spline-interpolation/ 的文章

我都明白了,但我不知道如何获取矩阵的值:

enter image description here

我知道有这样的东西 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com