直视夜空的顶点

也说插值

上一篇 / 下一篇  2007-03-30 00:15:20

我们用的教材《计算方法引论》(徐萃薇、孙绳武第二版)实在是比较老了点,里面有很多不加思索的“算法”,数学上合理,数值上不稳;或是被认为是trivial而不提的东西,一编程就不是那回事了……

NR是好,而且作者牛B,呵呵,不过要还的(“出来混,要还的”)。

今天用四种方法测试了个简单的Cubic spline插值(边界条件为指定一阶导数),同一组数据,出来的结果大相径庭。四种方法是NR里的、教材上公式直接套的、IMSL库里的,还有MATLAB自带的。

NR的方法基于节点上二阶导数的求值,用的是三对角稀疏矩阵的求解。

书上死算的方法是求出节点的一阶导数,也是组成一个三对角矩阵为系数矩阵的线性系统。在MATLAB里求解的时候,直接用了sparse(M)命令然后反斜线算符求解,据说是“自动优化”的(真的吗?)

IMSL的算法是黑箱的,库都编译成.lib静态链接库了。在Fortran里调IMSL里的子程序,然后数据倒到MATLAB里

MATLAB的spline函数应该是个大类里的同名重载,还没来得及研究代码。据文档说是“自动优化”的。

这些所谓的“优化”是对什么优化的呢?

我的数据只有5个点加两个端点导数:
x=[.25, .30, .42, .45, .53]
y=[.5000, .6500, .5500, .6708, .6000]
左右端点导数分别是1.000和-5.000

看看吧

NR和课本的算法都不能反映出右端点的“陡降”。IMSL的算法似乎“抖动”很大。其实在用Cubic spline还有意义的问题上,大家给出的结果差别很小。我有意选了个比较“抖”的数据,试图撕裂算法能忍受的限度。

详细讨论超出本“文”范围 :-P


我们,继续 :)


TAG:

引用 删除 Guest   /   2008-04-11 05:29:42
-1
快乐中微子 引用 删除 快乐中微子   /   2007-04-01 00:21:16
确实是很牛的一个小孩
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar