The interactive gui part starts at 4:08. Before that is the setup and context of the example.
If you ever move in the direction of supporting sets of equations and isolating variables, consider using colors to indicate known values and unknown values as is done in this library.
I test this library on exercises you'd find in college physics (motion, constant acceleration, projectile motion, Newton's laws, etc.) since these involve sets of equations and eliminating variables so that you have expressions in terms of known values.
The above demo uses a jupyterlite notebook, so everything runs client side in the browser. No server side kernel necessary.
To use your interactive fluid style in this library to eliminate variables, I could see the user first isolating that variable. Then dragging that variable they want to eliminate over an instance of that variable in another equation. So that's effectively the user saying "replace this variable with this expression".
This is very cool! I'd like to see a version for theorem proving/equational reasoning as well because I think the ideas behind reasoning about functional programs and proving properties about them are just many cases of rule-applying but people don't staring at equations or jump straight to a theorem prover, whereas a visual interface might make the transition a lot easier.
DragonBox Algebra has a similar concept but gamified. It has a cool progression: you get a new "power" each chapter, like factoring or negating. And it starts out with monster cards then gradually transitions to "x" and numerals. My kids have loved it, but it's hard to tell how much they learn when you can only make legal moves. When my older one learned the basic rules of algebraic manipulation and went back to it, it worked great at giving him a visual model to follow.
That said, the game doesn't let you do arbitrary equations, so you cap out when you beat the game. Excited to try this app out!
The nearest thing that I've heard of is Wolfram Alpha's step-by-step solution solvers, but the worry with those is always that it's too easy for the student to just keep clicking next step and not learn anything.
I appreciate how this frames algebra as a puzzle instead of a problem :)
I watched the video. I think I've been wanting something like this recently but there's not really a name for this sort of thing that I know of.
Relatedly, I've been working on a step-by-step solver/calculator but I just use sympy (via pyodide) + mathlive. But I'm starting to see the limitations of running Python in the browser and am starting to look at js libraries now.
Probably it's most important feature for applications like this is that the id's of elements in the equations are stable (meaning, if an X has an id of 123 and a transformation moves it to the other side of the equals sign, it still has id 123... this allows you animate between states if you wish).
I tried the demo. One thing I've noticed is it's sometimes hard to know what operation clicking or dragging something will do (or has done sometimes). I'm not sure what would help other than showing like a pie menu before carrying out the operation.
On the library. It's sounds really cool. I'm going to look at it pretty soon.
Bought the app, this is great. Can I make a feature request? I’d love for it to include a sequence of “levels” or existing equations to try and solve in order of increasing difficulty, and maybe a way to generate a random interesting one. Would love to use this to teach others with a mechanism for regular practice.
I'm adding at least basic support for random practice problems in the release I'll be dropping in a few days. If I can get to it I may also be adding a more gamified "practice" mode.
What a fun idea. I can see this being one of those casual "games" that you fiddle with when you're bored. It feels more productive than doom scrolling or playing games. Thanks for sharing!
It uses https://capacitorjs.com/ and I'm super happy with this choice. I think it feels fast simply because solving simple algebra problems is very light work these days (and of course its all on device... so no waiting on the network).
Based. I tend to think of algebra as movement of terms, as opposed to only thinking in terms of operations. This could be really good for building intuition.
Yup. The goal was guide rails.... it'll still let you do non optimal things... just not totally illegal things. Hopefully if you do it enough you can take the guide rails off and still know what to do.
It doesn't seem like roots can be performed in the web version. Specifically, both x^3=8 and (x^2)x=8 seem unsolvable.
It keeps trying to either subtract x^3, or divide by x. I can't get it to create a sqrt no matter what I drag or where.
Edit: it seems to create a sqrt only if I drag one of the x-s over to the other side first in order to make one side only x^2, but then I get a sqrt(8/x) which I can't do anything at all with.
In x^-1=2, I can get to 1=2x but I can't get it to simplify any further. (Edit: I was able to end up with a fraction of -1/-2 which I guess is correct...)
I updated the underlying engine (and its live on the web version here: https://dicroce.github.io/wyrm/home.html). There is some new powers examples in the drop down. Irrational roots are a potential next step.
This is actually a great find. I update the engine and the change is live on the web version. I will probably wait a couple of days on updating the mobile apps to see if any more fixes need to be made (there is a whole app approval process they have to go through and I want to minimize that).
Very cool!
Here's a demo of a library for interactively eliminating variables from sets of equations:
https://youtu.be/7ysUdxTfKhU?is=lE5o9Besk1XNnggP
Source:
https://github.com/dharmatech/combine-equations.py
The interactive gui part starts at 4:08. Before that is the setup and context of the example.
If you ever move in the direction of supporting sets of equations and isolating variables, consider using colors to indicate known values and unknown values as is done in this library.
I test this library on exercises you'd find in college physics (motion, constant acceleration, projectile motion, Newton's laws, etc.) since these involve sets of equations and eliminating variables so that you have expressions in terms of known values.
The above demo uses a jupyterlite notebook, so everything runs client side in the browser. No server side kernel necessary.
To use your interactive fluid style in this library to eliminate variables, I could see the user first isolating that variable. Then dragging that variable they want to eliminate over an instance of that variable in another equation. So that's effectively the user saying "replace this variable with this expression".
I will definitely consider using more color... hmm...
This is very cool! I'd like to see a version for theorem proving/equational reasoning as well because I think the ideas behind reasoning about functional programs and proving properties about them are just many cases of rule-applying but people don't staring at equations or jump straight to a theorem prover, whereas a visual interface might make the transition a lot easier.
DragonBox Algebra has a similar concept but gamified. It has a cool progression: you get a new "power" each chapter, like factoring or negating. And it starts out with monster cards then gradually transitions to "x" and numerals. My kids have loved it, but it's hard to tell how much they learn when you can only make legal moves. When my older one learned the basic rules of algebraic manipulation and went back to it, it worked great at giving him a visual model to follow.
That said, the game doesn't let you do arbitrary equations, so you cap out when you beat the game. Excited to try this app out!
This is awesome. Congrats on shipping!
The nearest thing that I've heard of is Wolfram Alpha's step-by-step solution solvers, but the worry with those is always that it's too easy for the student to just keep clicking next step and not learn anything.
I appreciate how this frames algebra as a puzzle instead of a problem :)
The Wolfram thing: https://www.wolframalpha.com/examples/pro-features/step-by-s...
Specifically this one: https://www.wolframalpha.com/input?i=find+t+for+t%5E2+%2B+3t...
I watched the video. I think I've been wanting something like this recently but there's not really a name for this sort of thing that I know of.
Relatedly, I've been working on a step-by-step solver/calculator but I just use sympy (via pyodide) + mathlive. But I'm starting to see the limitations of running Python in the browser and am starting to look at js libraries now.
The underlying math engine is written in typescript and is open source:
https://github.com/dicroce/wyrm_math
Probably it's most important feature for applications like this is that the id's of elements in the equations are stable (meaning, if an X has an id of 123 and a transformation moves it to the other side of the equals sign, it still has id 123... this allows you animate between states if you wish).
I tried the demo. One thing I've noticed is it's sometimes hard to know what operation clicking or dragging something will do (or has done sometimes). I'm not sure what would help other than showing like a pie menu before carrying out the operation.
On the library. It's sounds really cool. I'm going to look at it pretty soon.
Yeah I added the popup that appears when you hover as a means of trying to counteract this. I'll be looking for more ways to communicate this.
I have always wanted to make this! Can it accept user-define algebra stuff? like group theory stuff so more rules can be implemented.
Yes. PR's would be welcome on the core math engine.
I hope i could saw this post 4 years ago, when i failed my calculus exam, this could really be worth it
My goal is to build it up to Calculus.
Bought the app, this is great. Can I make a feature request? I’d love for it to include a sequence of “levels” or existing equations to try and solve in order of increasing difficulty, and maybe a way to generate a random interesting one. Would love to use this to teach others with a mechanism for regular practice.
I'm adding at least basic support for random practice problems in the release I'll be dropping in a few days. If I can get to it I may also be adding a more gamified "practice" mode.
I thought the difference of two squares example was odd. Maybe I just didn’t get how to factorise into brackets rather than out of them.
What a fun idea. I can see this being one of those casual "games" that you fiddle with when you're bored. It feels more productive than doom scrolling or playing games. Thanks for sharing!
The interface is beautiful!
Just curious... Did you implement each app natively? I.e. Swift and Kotlin? Or were you able to use a cross platform framework like Flutter?
It uses https://capacitorjs.com/ and I'm super happy with this choice. I think it feels fast simply because solving simple algebra problems is very light work these days (and of course its all on device... so no waiting on the network).
Based. I tend to think of algebra as movement of terms, as opposed to only thinking in terms of operations. This could be really good for building intuition.
Yup. The goal was guide rails.... it'll still let you do non optimal things... just not totally illegal things. Hopefully if you do it enough you can take the guide rails off and still know what to do.
It doesn't seem like roots can be performed in the web version. Specifically, both x^3=8 and (x^2)x=8 seem unsolvable.
It keeps trying to either subtract x^3, or divide by x. I can't get it to create a sqrt no matter what I drag or where.
Edit: it seems to create a sqrt only if I drag one of the x-s over to the other side first in order to make one side only x^2, but then I get a sqrt(8/x) which I can't do anything at all with.
In x^-1=2, I can get to 1=2x but I can't get it to simplify any further. (Edit: I was able to end up with a fraction of -1/-2 which I guess is correct...)
I updated the underlying engine (and its live on the web version here: https://dicroce.github.io/wyrm/home.html). There is some new powers examples in the drop down. Irrational roots are a potential next step.
Try the x^-1 = 2 example and click Guide Me.
This is actually a great find. I update the engine and the change is live on the web version. I will probably wait a couple of days on updating the mobile apps to see if any more fixes need to be made (there is a whole app approval process they have to go through and I want to minimize that).