C#で数式処理できるライブラリ
前の投稿でMath.NET Numericsを使いました。
c#でマイク音声をFFTする - wildpieの日記
Math.NETのページを見ていたら数式処理ができるライブラリがあったので試してみました。mathnet/mathnet-symbolics · GitHub
Math.NET Symbolics
インストールはNugetで簡単にできます。
ためしにこの簡単な数式を計算してみましょう。
var s = Expr.Symbol("s"); var G1 = 1/(s + 1); var G2 = s/(s + 2); var G = G1*G2; Infix.Print(G); // s/((1 + s)*(2 + s)) LaTeX.Print(G); // \frac{s}{\left(1 + s\right)\left(2 + s\right)} var simplify = Rational.Simplify(s, G); Infix.Print(simplify); // s/(2 + 3*s + s^2) var d = Calculus.Differentiate(s, G1); Infix.Print(d); // -1/(1 + s)^2 var symbols = new Dictionary<string, FloatingPoint> { {"s", 1.0} }; Evaluate.Evaluate(symbols, G1).RealValue; // 0.5
ちなみにPythonのsympyだと・・・
import sympy sympy.init_printing() s = sympy.Symbol('s') G1 = 1 / (s + 1) G2 = s / (s + 2) G = G1 * G2 print G # s/((s + 1)*(s + 2))
部分分数分解のやり方は分かんないです。