matlab 离散数值求导,在MATLAB中计算数值导数的最佳方法是什么?

这些只是一些快速肮脏的建议.希望有人会发现他们有帮助!

你有符号功能还是一组点?

>如果你有一个符号功能,你可能可以分析地计算导数. (可能的话,如果这样做很简单,你就会做到这一点,你不会在这里寻找替代品.)

>如果您具有符号功能,无法分析计算导数,您可以随时评估一组点上的函数,并使用本页列出的其他方法来评估导数.

>在大多数情况下,您有一组点(xi,fi),并且必须使用以下方法之一….

你的网格是平均的还是不均匀的?

>如果您的网格间隔均匀,您可能需要使用有限差分方案(参见维基百科文章here或here),除非您使用周期性边界条件(见下文). Here是在网格上求解普通微分方程的上下文中有限差分法的一个体面的介绍(特别是幻灯片9-14).这些方法通常在计算上是有效的,易于实现,并且该方法的误差可以被简单地估计为用于导出它的泰勒展开的截断误差.

>如果您的网格不均匀,您仍然可以使用有限差分方案,但是表达式更加困难,并且精度随着网格的均匀程度而非常强烈地变化.如果您的网格非常不均匀,您可能需要使用大的模具尺寸(更多相邻点)来计算给定点处的导数.人们经常构造内插多项式(通常为Lagrange polynomial),并区分该多项式以计算导数.参见例如this StackExchange问​​题.通过使用这些方法来估计错误通常很困难(尽管有些尝试这样做:here和here).在这些情况下,Fornberg’s method通常非常有用….

>必须注意您的域的边界,因为模板通常涉及域外的点.有些人引入“鬼点”,或者将边界条件与不同顺序的导数组合起来,以消除这些“鬼点”并简化模板.另一种方法是使用右侧或左侧的有限差分法.

> Here’s是有限差分方法的优秀“作弊表”,包括低阶中心,左右方式.我在工作站附近保存打印输出,因为我发现它很有用.

你的域定期吗?你能假定周期边界条件吗?

>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部