如何在 MathNet.Symbolics Evaluate 函数中设置双精度

本文关键字:函数 设置 双精度 Evaluate Symbolics MathNet | 更新日期: 2023-09-27 18:36:57

我有一个Dictionary<string, double> values,数值精度对我来说很重要。我有一个中缀可以解析的字符串公式。我想知道如何做这样的事情:

var expr = Infix.ParseOrThrow(m.Formula);
var result = Evaluate.Evaluate<double>(values, expr);

获得双精度的结果?

如何在 MathNet.Symbolics Evaluate 函数中设置双精度

Evaluate 对自定义 FloatingPoint 类型进行操作,该类型可以表示各种双精度浮点值(主要是实数或复数,理论上也有向量或矩阵)。你可以将double投到FloatingPoint,并使用RealValueFloatingPoint获得双倍。

例:

var variables = new Dictionary<string,FloatingPoint>
   {{ "a", 2.0 },
    { "b", 3.0 }};
var expr = Infix.ParseOrThrow("2/3*a");
double result = Evaluate.Evaluate(variables, expr).RealValue;