Comments (7)
I think there should be an extra condition: the expansion should lead to a "simpler version".
It seems this would be quite hard to model because the simplification might happen "10 steps ahead". For example, you might have some expression with a term like (x+y)^5
. Expanding it might lead to a bunch of terms cancelling out and be left with something like such as 0
. However, it might also lead to a very long expression which is everything but simpler than (x+y)^5
. This is tricky :/
Maybe if we could get some measure of the simplicity of an expression (and that's a big if), we could then have a system where the program could backtrack if it cannot find a "simpler" expression than whatever steps it has already reached. It's alright to go a bit uphill but only if you go downhill later :p
from mathsteps.
On the following website is a file named moses-simp.pdf that contains a paper titled "Algebraic Simplification a Guide for the Perplexed":
https://groups.csail.mit.edu/mac/users/gjs/6.945/readings/simplification/
It describes the various ways simplification is typically used in a CAS, which may be helpful for this discussion.
from mathsteps.
We should probably also take into consider the context of the expression (x+y)^2
. If it's in an equation like (x+y)^2 = 0
then it makes more sense to square root both sides, e.g.
(x+y)^2 = 0
=> nthRoot((x+y)^2) = nthRoot(0)
=> x+y = 0
=> ...
Having some way to detect and perform steps that apply to equations will help with this situation and others to produce steps that are more like what a human would do.
from mathsteps.
agreed @kevinbarabash - I think we're gonna have to revamp the way equations work, to be a lot more smart about things. I wonder what the steps towards that are... read some papers? have a meeting on gitter where we brainstorm stuff?
from mathsteps.
@evykassirer, I think it would be useful to brainstorm about various ways mathsteps might be used in the future before determining how equations should work.
from mathsteps.
I'll be adding a timeline and doing a better job organizing over the next few days as part of the wiki effort and that will give us something we can discuss around
from mathsteps.
I think this should be done within the context of the problem. So in simplifications, it should expand, and in the case of solving an equation, and the variable being solved for is in the root, then we square both sides. Seems like a decent first approach at this problem.
from mathsteps.
Related Issues (20)
- Can mathsteps handle derivative and integral? HOT 6
- x * (x - 1) = 1 ===>> throws 'Math error: No term with symbol: x , returning no steps' HOT 1
- How to run mathsteps on smartphone? HOT 1
- Severe security vulnerability HOT 5
- Missing parentheses when multiplying with a negative number HOT 5
- more things to add to linter
- Current Limitations HOT 1
- Mathsteps cannot handle quadratic equations HOT 4
- Development Status HOT 1
- handling latex input
- Script to browserify mathsteps
- compute a reverse expression HOT 1
- Fails when left node is only a parenthesis (eg "(x+1)=4", "((x)/(4))=4")
- Canceling out first variable throws error
- How to render these steps using Mathjax or something else? HOT 1
- Project Status and inactive email HOT 2
- bug : x-2/3=0
- Another bug : 2/x=3/4 HOT 2
- Adapting to iOS Swift
- Adapt README.md to link to the most active fork
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mathsteps.