数学物理方程组求解代码 AngouriMath 、Math.NET Symbolics c#

一、安装AngouriMath

c#
Install-Package AngouriMath

二、AngouriMath 测试代码

AngouriMath库中的Entity类用于存储数学表达式,直接赋值即可,不需要使用new创建实例对象。如果数学表达式中没有变量,则直接调用express.EvalNumerical函数计算值即可,示例代码及运行效果如下图所示:
Entity express = txtExpression.Text;
txtResult.Text = express.EvalNumerical().Stringize();

带变量的数学表达式求值,没有找到参考文献3的示例中的用法,通过翻阅AngouriMath及源码,最终发现可以调用Substitute替换数学表达式中的变量值,然后再调用EvalNumerical函数求值,示例代码及运行效果如下图所示:
Dictionary<Entity, Entity> dics= new Dictionary<Entity, Entity>();
for(int i=0; i<dgvParams.Rows.Count-1;i++)
{

dics.Add(Convert.ToString(dgvParams.Rows[i].Cells[0].Value), Convert.ToString(dgvParams.Rows[i].Cells[1].Value));

}

txtResult.Text = express.Substitute(dics).EvalNumerical().Stringize();

调用Entity的Simplify函数可以简化表达式,如下图所示,能够合并同类项:
Entity express = txtExpression.Text;
txtResult.Text = express.Simplify().Stringize();

三、AngouriMath 参考

https://blog.csdn.net/gitblog_00982/article/details/141492908
https://blog.csdn.net/gc_2299/article/details/144622292
[1]https://github.com/asc-community/AngouriMath
[2]https://am.angouri.org/
[3]https://blog.csdn.net/gitblog_00982/article/details/141492908
[4]https://github.com/asc-community/AngouriMath/blob/master/Sources/Samples

四、AngouriMath 废了

做不了:
var system = MathS.Equations(

"F - m * a",
"F * S - 0.5*m * V ^ 2 + 0.5*m * v ^ 2",
"F * t - m * V + m * v",
"v-0",
"t-3",
"S-36",
"m-2"
);

var solutions = system.Solve("a", "v", "V", "t", "S", "F", "m");
MessageBox.Show(solutions.Stringize());

五、Math.NET Symbolics 安装

Install-Package MathNet.Symbolics

六、解方程

???

发表新评论