我正在尝试使用复杂的步骤差异complex step differentiation编写一个用于评估衍生物的程序。
这涉及取一些解析函数F(x)并在某个虚点F(x + ih)处对其进行评估,其中h是一些实参数。然后由imag(F(x + ih))/ h给出F'(x)。
我已经测试了这种方法,使用this swift代码来评估复数,并且它似乎比使用有限差分方法更快地收敛于解决方案也更稳定。
然而,我很难弄清楚如何为可以解析的用户输入功能实现这个功能。我已尝试使用DDMathParser,但它不支持复数。我想知道这是否有可能使用NSExpression然而我不明白它是如何工作的,我不知道是否有任何方法可以用它来评估复数。
如果你们知道如何处理这件事,我会很感激!
答案 0 :(得分:0)
DDMathParser作者在这里。
尽可能see on Github,我考虑过添加对复杂数字的支持。我认为解析器可以很容易地处理它们。问题是评估引擎需要完全重新完成。现在所有的评估都是使用Doubles
完成的,并且让它们都支持复数是一个非常重要的变化。
NSExpression
也不支持复数。
我认为在这一点上你可能需要寻找其他地方来解析和评估你的需求。