样条插值计算方法

Python代码

插值计算方法

假设有 n + 1 n+1 n+1个有序点 P k , k ∈ [ 0 , n ] P_k,k \in[0,n] Pk,k[0,n] , 样条曲线是构造 n n n个多项式分段定义,分别以 P i , P i + 1 , i ∈ [ 0 , n − 1 ] P_i,P_{i+1},i \in [0,n-1] Pi,Pi+1i[0,n1]为起止点。相邻的多项式交界点 P i P_i Pi处应连续,且多阶可导。

以3次样条插值为例,说明其计算方法如下:

设每段多项式的方程为: a i x 3 + b i x 2 + c i x + d i = p i a_i x^3 + b_i x^2 + c_i x + d_i = p_i aix3+bix2+cix+di=pi

这样的多项式共有 n n n个,需要求解 4 n 4n 4n个多项式系数。由每个多项式两端的坐标值可得到 2 n 2n 2n方程,再由相邻点处一阶,二阶导数相等可得 2 ( n − 1 ) 2(n-1) 2(n1)个方程。另外增加两个初始条件,比如起点和终点处的速度或加速度,可得 4 n 4n 4n个方程,可求解所有的系数并计算每段曲线的方程式。

对于5次样条插值,多项式方程为: a i x 5 + b i x 4 + c i x 3 + d i x 2 + e i x + f i = p i a_i x^5 + b_i x^4 + c_i x^3 + d_ix^2 + e_ix + f_i = p_i aix5+bix4+cix3+dix2+eix+fi=pi

由每个多项式两端的坐标值可得到 2 n 2n 2n方程,再由相邻点处一阶,二阶,三阶和四阶导数相等可得 4 ( n − 1 ) 4(n-1) 4(n1)个方程。另外可附近4个初始条件,比如起止点处的速度和加速度值

同理可推算高更次的样条插值计算公式

样条插值

意思是用样条曲线的方式完成插值运算,这里需要把坐标表示为关于时间的参数方程: x ( t ) , y ( t ) , z ( t ) x(t),y(t),z(t) x(t),y(t),z(t)。这样才可以计算出插值轨迹的速度,加速度等。

如果是样条拟合的话,则表示为关于 x x x的方程即可,如 y ( x ) , z ( x ) y(x),z(x) y(x),z(x)

简化计算方法

三次样条有简化计算方法。

可参考论文: 六自由度串联机器人运动优化与轨迹跟踪控制研究

五次或更高次样条的计算没有找到相应的简化计算公式,但可以直接联立方程组求解。

计算结果与B样条对比

在初始速度为零的前提下计算三次样条插值 和三次B样条插值,得到插值轨迹和轨迹的速度如下图。

fig-9-a
fig-9-b

在初始速度为零的前提下计算五次样条插值 和五次B样条插值,得到插值轨迹和轨迹的速度如下图。

fig-9-a

fig-9-b

从上面的计算例子可以看出,样条曲线和B样条曲线计算的结果非常接近,没有想通是什么原因,暂时没有计算更高次的样条插值。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值