我首选的近似导数的方法是中心差,它比前向差或后向差更准确,而且我也懒于进行高阶运算。但是,中心差异要求您要评估的点的任一侧都有一个数据点。通常,这意味着您最终在两个端点上都没有导数。为了解决这个问题,我希望您在边缘切换到前进和后退差异:
具体来说,我希望您对第一个点使用正向差异,对最后一个点使用向后差异,对中间的所有点使用中心差异。另外,您可以假设x值是均匀间隔的,并且只关注y。使用以下公式:
祝您好运,我很期待看到有人提出一个简单的规则,该规则可以在正确的位置复制所有3个导数!
EX输入:
0.034 9.62 8.885 3.477 2.38
我将使用FD,CD和BD表示在哪个点使用哪种算法,因此使用5个以上的点来近似使用
FD CD CD CD BD
然后计算出的值将是:
9.586 4.4255 -3.0715 -3.2525 -1.097
您可以假设始终至少有3个输入点,并且可以使用单精度或双精度进行计算。
和往常一样,最短的答案是成功的。
3
只是一个小问题,中心/向前/向后的差异只是一点上的导数近似值,而不是导数本身。
—
利亚姆
我不明白每个输入和输出编号对应什么。
—
xnor
@xnor,我在输入和输出之间放置了简短的说明,解释了针对哪个数据点使用哪种算法。现在有意义吗?
—
托尼·露丝
是的,我认为这是有道理的。对于5个输入,您可以这样做
—
xnor
[a,b,c,d,e] -> [b-a,(c-a)/2,(d-b)/2,(e-c)/2,e-d]。可以输入少于3个输入点吗?
@xnor,是的。并且,我更新了,因此您可以假设至少3个输入点。
—
Tony Ruth
