6 ms·
Something I'd really like Math.js to do is to be able to simplify expressions. Say I had "abx + c = y", I'd like to substitute values into a,b and c and get so
by pachydermic 11y ago
Something I'd really like Math.js to do is to be able to simplify expressions.
Say I had "abx + c = y", I'd like to substitute values into a,b and c and get something like "5x - 1 = y" back. But Math.js won't allow you to have these kinds of "symbolic" variables in their expressions - trying to eval statements such as the ones above will just return an error saying x and y are undefined. Huge bummer in my view.
Anyone know about easy solutions to this problem? I may end up doing it server-side before I render the equations I need, but I'd really like to use someone else's open source project rather than try to figure this stuff out myself...
- ylem 11y agoServer side, have you looked at sympy?
- nicolewhite 11y agoYou should check out this algebra.js project I've been working on for funsies. var exp = new Expression("a"); exp = exp.multiply("b"); exp = exp.multiply("x"); exp = exp.add("c"); console.log(exp.toString()); exp = exp.evaluateAt({a:5, b:1, c:-1}) console.log(exp.toString()); var eq = new Equation(exp, new Expression("y")); console.log(eq.toString()); var x = eq.solveFor("x"); console.log("x = " + x.toString()); Yields: abx + c 5x - 1 5x - 1 = y x = 1/5y + 1/5 You can play with it here: http://algebra.js.org/ http://algebra.js.org/
- josdejong 11y ago@nicolewhite algebra.js looks really interesting. I hadn't seen it before. Maybe we can somehow join forces (I'm the author or math.js). If you're interested just drop me a mail or open a discussion on github.
- nicolewhite 11y agoSure. I just looked at the expression tree you linked to above and it looks like pretty similar functionality.
- deleted 11y ago[deleted]
- josdejong 11y ago@pachydermic you can use math.parse("abx + c = y") which returns an expression tree. You can perform transformations on this tree. See docs: http://mathjs.org/docs/expressions/expression_trees.html http://mathjs.org/docs/expressions/expression_trees.html. There is an early implementation of algebraic differentiation (not yet public): https://github.com/josdejong/mathjs/pull/411 https://github.com/josdejong/mathjs/pull/411. Next step is to implement functions simplify and integrate. It all looks very promising.