c# - 如何在 C# 中计算一维数组的二阶导数

如何在 C# 中计算一维数组的二阶导数?有没有人这样做过?

回答1

您可以声明一个返回成对序列号的扩展方法:

public static IEnumerable<(T Previous, T Next)> PreviousAndNext<T>(this IEnumerable<T> self)
{
    using (var iter = self.GetEnumerator())
    {
        if (!iter.MoveNext())
            yield break;
        var previous = iter.Current;
        while (iter.MoveNext())
        {
            var next = iter.Current;
            yield return (previous, next);
            previous = next;
        }
    }
}

如果你想要https://calculus.subwiki.org/wiki/Discrete_derivative,即序列号之间的差异,你可以这样做:myArray.PreviousAndNext().Select((p, n) => n-p)。如果你想要第二个离散导数,你只需重复这个函数,即

myArray.PreviousAndNext().Select((p, n) => n-p)
       .PreviousAndNext().Select((p, n) => n-p);

您可以根据需要多次重复此模式。

相似文章

python - 无限 while 和 for loop Python

我的代码似乎陷入了无限循环。它应该遍历能量曲线,其中2个局部最小值之间的每个点都被添加到子列表teil_reaction中,然后移动到下一组点。此外,前一个子列表的最后一个点也是下一个子列表的第一个点...

随机推荐

最新文章