Получить REAL и IMAG из комплексного числа в разобранном уравнении

Я оцениваю 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) а также 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: Бонусные баллы для оператора, чтобы получить также фазу, не вычисляя ее вручную.

0 ответов

Другие вопросы по тегам