等式为零
Equate equation to zero
我一直在徒劳地尝试使线性方程等于零。
我正在使用 Math.js 库对我提供的方程执行一阶微分:
const derivative = math.derivative(equation,"x");
这为我提供了以下内容:
(0.10471975511965977 * (x * -2 / 3 + 72) - 0.06981317007977317 * x) * 2025 / 3.37496e+5
我想把它等同于零,求 x。
我试过使用 Algebra.js,但解析器似乎有负数问题(参见 https://github.com/nicolewhite/algebra.js/issues/88)
有什么方法可以做到这一点(最好是使用图书馆)。
我会避免通过字符串表示,而是通过递归转换来转换 Math.js expression tree into an Algebra.js expression tree。如果 Math.js 表达式支持访问者模式会更容易,但您可以通过扩展相应的原型将其添加到库中,或者改用一堆区分大小写的方法。最有可能处理 3 或 4 种节点类型就足够了:OperatorNode、SymbolNode、ConstantNode,也许还有 ParenthesisNode。
您可以 nerdamer 尝试一下,尤其是因为您更喜欢图书馆。请参阅片段。完全披露,我写了 nerdamer。希望对您有所帮助。
var ans = nerdamer.solve('(0.10471975511965977 * (x * -2 / 3 + 72) - 0.06981317007977317 * x) * 2025 / 3.37496e+5', 'x');
console.log(ans.toString());
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/nerdamer.core.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Algebra.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Calculus.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Solve.js"></script>
我一直在徒劳地尝试使线性方程等于零。
我正在使用 Math.js 库对我提供的方程执行一阶微分:
const derivative = math.derivative(equation,"x");
这为我提供了以下内容:
(0.10471975511965977 * (x * -2 / 3 + 72) - 0.06981317007977317 * x) * 2025 / 3.37496e+5
我想把它等同于零,求 x。
我试过使用 Algebra.js,但解析器似乎有负数问题(参见 https://github.com/nicolewhite/algebra.js/issues/88)
有什么方法可以做到这一点(最好是使用图书馆)。
我会避免通过字符串表示,而是通过递归转换来转换 Math.js expression tree into an Algebra.js expression tree。如果 Math.js 表达式支持访问者模式会更容易,但您可以通过扩展相应的原型将其添加到库中,或者改用一堆区分大小写的方法。最有可能处理 3 或 4 种节点类型就足够了:OperatorNode、SymbolNode、ConstantNode,也许还有 ParenthesisNode。
您可以 nerdamer 尝试一下,尤其是因为您更喜欢图书馆。请参阅片段。完全披露,我写了 nerdamer。希望对您有所帮助。
var ans = nerdamer.solve('(0.10471975511965977 * (x * -2 / 3 + 72) - 0.06981317007977317 * x) * 2025 / 3.37496e+5', 'x');
console.log(ans.toString());
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/nerdamer.core.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Algebra.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Calculus.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@0.7.16/Solve.js"></script>