Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Architectural Changes in Math.js v2 (josdejong.com)
29 points by MrQuincle on Aug 11, 2015 | hide | past | favorite | 7 comments


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...


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.


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 :(




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: