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