Architectural Changes in Math.js v2(josdejong.com)
josdejong.com
Architectural Changes in Math.js v2
http://josdejong.com/blog/2015/08/08/architectural-changes-in-mathjs-v2/
8 comments
You 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/@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.
Sure. I just looked at the expression tree you linked to above and it looks like pretty similar functionality.
@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. There is an early implementation of algebraic differentiation (not yet public): https://github.com/josdejong/mathjs/pull/411. Next step is to implement functions simplify and integrate. It all looks very promising.
[deleted]
Server side, have you looked at sympy?
Sounds like a library like this would be a great place to use ES7 decorators - except that function hoisting spoils the party :(
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...