关于Cubic Spline(三次样条插值)的问题,高分相送/

VBvsVC 2003-08-18 03:51:43
我是第一次做三次样条插值,看书知道好像需要边界条件(即节点处的一阶导数或者二阶导数值,至少也需要),但实际问题是只能得到节点的数据,至于其导数值怎么处理?我会严密关注此贴,如果我有叙述不清楚的请高手提出来,麻烦大虾帮忙/
...全文
332 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-08-19
  • 打赏
  • 举报
回复
要是多项式就可以逆合,为什么还要用样条函数逆合呢?
多项式逆合是有限制的,不适合所有的情形,例如正弦曲线
而无论什么样子的图形,都可以使用样条函数逆合的,只要分化够细。
VBvsVC 2003-08-19
  • 打赏
  • 举报
回复
我昨天想到一个办法,可不可以县对这些数据进行多项式拟合,然后根据拟合出的方程计算两端的二阶导数,这样不就确定边界条件了么?不知道行不行?
寻开心 2003-08-19
  • 打赏
  • 举报
回复
http://210.76.98.83/lesson/0001/50137/Chapter3/313.htm
VBvsVC 2003-08-19
  • 打赏
  • 举报
回复
谢谢了,我这两天解决这个问题,完事就结贴,有问题再说吧
寻开心 2003-08-19
  • 打赏
  • 举报
回复
如果方便,你应该找找《数值逼近》这本书。

要确定每个区间的三次样条函数,你都需要有四个参数,这四个参数可以唯一的确定函数的形式。
需要注意的是,样条函数在相邻的两个区间的公共部分——端点处,应该保持一致,这个一致通常是说不仅仅数值相同,导数也要相同,这样才够光滑。因此每个端点部分的导数是一个比较重要的因素。

你也可以参考 boodweb(TTT) ( ) 的办法,假定导数是0,也可以得到一组光滑曲线。
VBvsVC 2003-08-19
  • 打赏
  • 举报
回复
这样行么?我是说有这样做的么?
寻开心 2003-08-19
  • 打赏
  • 举报
回复
那个办法也不精确,是一个近似的办法

其实就是根据导数的定义
. F(X+DX)-F(DX) F(x+dx) - F(x-dx)
. F' = LIM -------------- = --------------------
. DX->0 DX 2 * dx

把DX选择成为最小的离散点了之间的X距离了。
二阶导数类似。

VBvsVC 2003-08-19
  • 打赏
  • 举报
回复
楼上的能不能麻烦你详细说一下你说的那种求导数的方法?我是个菜鸟,头一次看到,所以不是太清楚,麻烦你了
寻开心 2003-08-18
  • 打赏
  • 举报
回复
三次样条本身需要四个参数,所以只有节点这两个的数据还不够的。

如果数据本身不包含导数和二阶导数,可以使用离散点的前插,后插或者是中值等办法模拟计算出来。

例如 xi点的导数 = (Y(i+1) - Y(i)) / (2 * dx)
二阶导数 = (Y(i+1)+Y(i-1)-2*Yi) / dx / dx

zzwu 2003-08-18
  • 打赏
  • 举报
回复
有的利用头尾衔接的办法来确定边界条件,有的将端点设置为"重点"来消除边界的不确定性.
boodweb 2003-08-18
  • 打赏
  • 举报
回复
不需要知道每个节点的导数,只要整个区间的两端就可以了
没什么特殊要求的话就用自然边界条件好了,让两端二阶导数等于0

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧