В Интернете существует немало алгоритмов и упростителей алгебры (например, порядочный на алгебре .com). Тем не менее, я ищу что-то, что я могу подключить к С# как часть более крупного проекта (я делаю свой собственный калькулятор, но, очевидно, я бы попросил разрешения и т.д.).
В идеале я бы использовал код вроде:
String s = MathLib.Simplify("5x*(500/x^2*(sqrt(3)/4)+1)+2x^2+(sqrt(3)/2)*x^2");
И 's' упростится до: "1082.532/x+5*x+2.866*x^2"
(точность 3dp там, но это может измениться, если нужно).
Решение для конкретной переменной тоже было бы неплохо. Мне нужно что-то легкое и быстрое слишком (расчеты, такие как выше, будут предпочтительно составлять менее 5 мс, включая задержку запуска).
После некоторых исследований такие программы, как Sage, Octave или Mathematica, вероятно, переборщит (мое приложение будет только небольшим < 200k exe, вероятно). Dotnumerics.com или Mathdotnet.com могут быть подходящими, но первый, похоже, не упоминает алгебраическое упрощение, а отсутствие документации и примеров в последнем случае отключается. Мне интересно, есть ли подходящие альтернативы. Большой список можно найти здесь: http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems