我有以下区别,我需要在 C# 中实现它:
W(t)=d/dt(log(A(t)))
其中 A(t)
是一个 double 数据数组。
我怎样才能从上面的导数中得到结果 W(t)
数组?
谢谢
编辑:
public double[,] derivative()
{
dvdt = new double[envelope.GetLength(0), envelope.GetLength(1)];
int h = 1;
for (int j = 0; j < envelope.GetLength(0); j++)
{
for (int i = 0; i < envelope.GetLength(1)-1 ; i++)
{
dvdt[j, i] = (envelope[j, i + h] - envelope[j, i]) / (h);
}
}
return dvdt;
}
我找到了这个图书馆 http://autodiff.codeplex.com/但我不明白示例代码是如何工作的以及如何将它应用到我的问题中嗯
最佳答案
这些都直接解决了您的问题,但它可能会帮助您重新开始行动。在论文中卡在琐碎的项目上可能会非常痛苦。
您可以访问 Mathematica 吗? Last I checked they had a .NET wrapper around their core engine called .NET/Link.
Mathematica 的性能非常出色。此外,它现在支持 GPU 和集群等资源,如果您的任何应用适合并行化,这些资源可以提供巨大的性能提升。
这会让您专注于应用的其余部分,而不必重新发明轮子。此外,由于您可以直接在 Mathematica 笔记本编辑器中输入公式,因此您可以从 C# 端采用更通用、数据驱动的方法。
Here is some typically-impenetrable Wolfram documentation .
See also this thread关于在 C# 中解析 Mathematica。
(我只推荐 Mathematica,因为您提到您可能需要一个以上公式/方程式/等的求解器。除非实现求解器是您论文主题的核心部分,否则我会建议使用像这样的现成组件并专注于您的原始研究。)
关于c# - C#微分的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503440/