【发布时间】:2012-03-28 10:03:16
【问题描述】:
当我尝试在 Matlab 中进行数值微分时遇到问题。但我的问题可能更多是关于数值分析而不是关于 Matlab。
我有一个包含 9 个数据点的数组,代表 9 个不同 x 的 f(x)。我需要以数字方式找到 f''(x) 。我对 x 和 f(x) 的值是
x = [2271.38, 2555.30, 2697.26, 2768.24, 2839.22, 2910.20, 2981.18, 3123.14, 3407.06]
f(x) = [577.4063, 311.3341, 193.0833, 141.3048, 95.1501, 58.8130 32.4931, 6.9511, 0.1481]
我可以进行插值以获得平滑曲线。我使用样条插值,但是当你要区分时,其他插值更可取吗?
我尝试了不同的方法:
只是简单的前向、后向和中心差商
以及派生套件:http://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation
这些都不令人满意。二阶导数在步长方面非常不稳定,并且派生套件中的自适应方法非常糟糕。可能是我用错了!
感谢任何帮助!
提前致谢
【问题讨论】:
-
那些数据点是什么?他们是有错误的实际测量,他们是测试数据来检查数据点吗?函数本身看起来像指数衰减。
-
感谢您的回复Thorsten!它们是有误差的实际测量值,这里是插值的“函数”:i.imgur.com/j3AZl.png
-
鉴于您在高性能标记下的回答“它们只是来自股票市场的数据点”,我的水晶球说您的主管正试图预测股票走势,而您正试图在到目前为止,您使用的每种方法都失败的最后一点......?
-
不,不过猜对了!我实际上试图通过使用 Dupire 的一个众所周知的关系来从期权价格中恢复风险中性密度,即密度函数等于看涨期权价格的贴现二阶导数!
标签: matlab numerical-methods numerical-analysis