Javascript 计算简单的非数值非指数线性代数表达式(因此每个步骤都是可参考的)

Javascript 计算简单的非数值非指数线性代数表达式(因此每个步骤都是可参考的),javascript,c#,parsing,f#,abstract-syntax-tree,Javascript,C#,Parsing,F#,Abstract Syntax Tree,正如标题所说,我正试图研究如何求解单个变量的非数值非指数线性代数表达式,并显示每一步的求值结果,直到解决为止 例:A+B(X+Z)/C=Y,求解B 理想情况下,我想我希望它以与symbolab.com类似的方式输出 我对一些事情有疑问: 1) 如何初始化没有数值的变量常量以使其在代数上可操作?他们会是什么类型的?(查斯?还是别的什么?) 2) 有人知道symbolab用来解决上述示例的方法吗 3) 我是一个相当缺乏经验的程序员,所以在我开始我自己的道路之前,我所要求的任何东西都可以通过像Smar

正如标题所说,我正试图研究如何求解单个变量的非数值非指数线性代数表达式,并显示每一步的求值结果,直到解决为止

例:A+B(X+Z)/C=Y,求解B

理想情况下,我想我希望它以与symbolab.com类似的方式输出

我对一些事情有疑问:

1) 如何初始化没有数值的变量常量以使其在代数上可操作?他们会是什么类型的?(查斯?还是别的什么?)

2) 有人知道symbolab用来解决上述示例的方法吗

3) 我是一个相当缺乏经验的程序员,所以在我开始我自己的道路之前,我所要求的任何东西都可以通过像SmartMathLibrary或NCalc这样的C#math库实现吗?你能举一些只使用字母表变量的例子吗

4) 我不需要指数运算(也不需要平方根)这一事实是否简化了这一点——这样我就可以用一种相当简单的方式来完成它

5) 方法解决方案可能与中的AST有关吗

还有更多的背景——为什么我要学习这个:

我正致力于在unity(gear VR/rift/和Vive)中创建一个VR益智游戏,该游戏使用原始数学操纵(立方体)来教授非常简单(但具体)的代数规则(隔离、替换和不等式)。操纵在两个表之间传递(字面上表示方程式的LHS和RHS)…目标是隔离一个多维数据集变量。立方体只能使用简单的代数规则进行操作,而这些规则是用户通过游戏行为发现的,因此没有任何东西是匙形的。(不管这听起来是否毫无意义,或者我提出的方法是否有用,都是无关紧要的——这对我来说确实是一个练习,可以更好地掌握编程,因为我觉得虚拟现实可能是一种有趣的数学教育手段——因为这个程序不一定只面向数学专业的人——它也将面向那些与通常的教学方式抗争的人,在他们的学习方法上更加直观和动手。)

关于我的初始问题,我需要弄清楚如何将用户交互引用到预计算的表达式(或者至少,我认为我需要这样做),以便在每个步骤检查它们的进度(因此我对symbolab.com如何计算非数值变量感兴趣),让他们在每一点上检查自己的答案(这对应于各种扣分——除非他们只在认为自己完成时检查答案——在这一点上他们会得到奖金)。我认为我需要编写自己的幕后代数解析器(这就是问题所在),因为考虑到游戏表的约束条件,我希望初始设置是随机的(每一张表的上方和下方各有六个位置)

我创建了一个游戏,希望能展示实际游戏的玩法(尽管我意识到它可能仍然让b/c感到困惑——它完全是静态的,没有通过gear vr/rift/vive控制器进行用户交互。)


最后,我想在GitHub上将此项目作为一个开源项目,可以在课堂环境中使用。

也许您应该熟悉网站的用途和指导原则。您应该考虑/学习符号处理。我目前使用Prolog进行符号操作。虽然我不使用以下内容,但它可能对您有所帮助-@didierc。谢谢,我刚才就这么做了。在我编辑我的文章之前,它有多个问题的原因是到目前为止,从我的研究来看,我还没有找到这些问题的答案。我的希望是,通过询问他们,我可以对自己如何做到这一点有所了解。我意识到答案可能类似于创建一个AST并进入CAS领域——这使具有我的技能水平的人更加困难,但如果没有线索,在这一点上,我仍然一无所知。你对我应该如何缩小或简化这篇文章有什么建议吗?我不确定是否有一个stackexchange网站可以处理代码设计问题。现在,对于你们的问题,我主张尝试一些东西,或者寻找现有的以类似目标为目标的开源项目。基本上,你要做的是符号代数,通过重写规则来转换公式。您可以尝试使用这些规则进行彻底的搜索,并保留“路径”,该路径将导出一个具有正确左手边的等式,但这将非常昂贵。我做了一些类似的事情来简化公式(但不是在C#),这确实是禁止的。