Math 三次样条插值中矩阵的计算

Math 三次样条插值中矩阵的计算,math,geometry,Math,Geometry,我读了一篇关于他的文章 我完全理解,但不知道如何获得矩阵的值: 我知道有些东西像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'

我读了一篇关于他的文章

我完全理解,但不知道如何获得矩阵的值:

我知道有些东西像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,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
并编码到矩阵中(最后一行)

这与你的例子相符。希望现在一切都清楚了

请注意,您的示例仅适用于
y
轴,因为您得到了二维曲线,您需要再次以相同的方式对
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
,它保存了
B
p1,p2
多项式系数,它保存了你的位置(
y
一次坐标,下一次坐标),所以你得到了
p1x,p1y,p2x,p2y
多项式。这就是插值所需要的

然而,这种方法有点落后,通常使用预定义的多项式形式,如样条曲线、贝塞尔曲线以及定义的属性,如连续性、线性等(不需要逆矩阵运算)。但是如果您需要像本例中那样的自定义属性,那么您没有太多的选择


有关更多信息,请参见

我假设您想知道它们是如何从[2.127]到[2.128]的,这意味着:如何求解
M.X=V
,M是一个维度为
n
的方阵,X和V是维度为
n
的向量?我想知道它们是如何得到矩阵M的值的。然后,您需要编辑您的问题,包括更多的细节,顺便说一句,我认为这个问题更适合我在问题中提到的两次,我需要知道如何准确地得到矩阵的值。问题出在哪里?没有问题:)我正在努力理解你在寻找什么,以便给你一个更好的答案。因为你的问题与编程无关,所以它就在这里。因此,我建议另一个地方,在那里你可以找到更多的答案。很好的解释,但我最喜欢的是使用代码格式,而不是我想要的^”
inverse(M)*M*A = inverse(M)*B
             A = inverse(M)*B