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

本文探讨了在MATLAB中计算数值导数的各种方法,包括符号功能的分析计算、有限差分方案、傅立叶谱方法等,并针对均匀和非均匀网格、周期性和非周期性边界条件给出了建议。重点介绍了Fornberg's method和MATLAB的内置函数`gradient`。数值求导领域丰富多样,选择适合的方法至关重要。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

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

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

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

>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值