当我尝试在 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/13948-numerical-differentiation-based-on-wavelet-transforms
和派生套件: http: //www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation
这些都不是令人满意的。二阶导数在步长方面非常不稳定,并且派生套件中的自适应方法非常糟糕。也许我只是以错误的方式使用它!
任何帮助表示赞赏!
提前致谢