6

我正在评估Math.NET Symbolics以在我们的应用程序中使用,我们需要一个简单的数学解析器供用户从我们的测量数据计算自定义方程。我们的数据采用复数形式。

为了测试,我在 LINQPad 中使用以下代码片段:

var complexA = new Complex(1, 1);
var complexB = new Complex(1, 2);
var symbols = new Dictionary<string, FloatingPoint>()
    {
        { "a", complexA },
        { "b", complexB }
    };

Evaluate.Evaluate(symbols, Infix.ParseOrUndefined("1/(a*b)+cos(b)")).ComplexValue.Dump();

这很好用,但我找不到以下运算符:
我们如何获得符号的实数或虚数部分?

我试过real(b)and imag(b),但没有奏效。

作为一种解决方法,我还可以执行以下操作,但我更喜欢像这样的操作员abs(b)让我获得量级:

var complexA = new Complex(1, 1);
var complexB = new Complex(1, 2);
var symbols = new Dictionary<string, FloatingPoint>()
    {
        { "a", complexA },
        { "b", complexB },
        { "b_REAL", complexB.Real },
        { "b_IMAG", complexB.Imaginary }
    };

Evaluate.Evaluate(symbols, Infix.ParseOrUndefined("1/(a*b)+b_REAL")).ComplexValue.Dump();

PS:操作员无需手动计算即可获得相位的奖励积分。

4

0 回答 0