JavaScript方程求解器库
-
12-10-2019 - |
题
是否有JavaScript库或函数可以求解变量的方程式?
如 9 = 3 + x
并解决x。但是它还应该解决包括正弦,余弦和切线在内的更多高级方程式。
解决方案
你可以 近似 通过执行Excel所谓的“目标寻求”的解决方案 - 测试值 x
直到方程式的两侧大约匹配。您可以通过将方程式分开 "="
签名,替换每种情况 x
有一个价值, eval
两侧,确定差异是否低于一定阈值。虽然相对简单,但这种方法存在缺陷(除了它是近似值的事实),例如,算法可能认为双方趋于融合,而实际上它只是局部最小/最大,并且在之后会散开差异略低于您的阈值。您还需要测试多个起点以求解多个解决方案的方程。
为了真正的程序 解决 作为人类的方程式(通过重新安排方程式的两个侧面并应用逆函数,衍生物/积分等)更加复杂,并且某种程度上感觉完全是专有的;)
其他提示
我想建议 Nerdamer. 。它可以通过代数求解到四分之一的函数,并且可以数值求解一系列函数。要考虑的另一个库是 代数.
//solve linear equations
var x = nerdamer.solve('(x+1)*3=x-6', 'x');
console.log(x.toString());
//quadratic
var x2 = nerdamer.solve('x^2-8x+15', 'x');
console.log(x2.toString());
//quadratic algebraically
var x3 = nerdamer.solve('x^2-ax+3*b', 'x');
console.log(x3.toString());
//multiple roots
var x4 = nerdamer.solve('x^6+41*x^5+652*x^4+5102*x^3+20581*x^2+40361*x+30030', 'x');
console.log(x4.toString());
//functions - numerically around to zero up to a predefined range
var x5 = nerdamer.solve('cos(x)^2+sin(x-1)', 'x');
console.log(x5.toString());
//solve a system of linear equations
var x6 = nerdamer.solveEquations(['2x+y=7', 'x-y+3z=11', 'y-z=-1']);
console.log(x6.toString());
//solve a system of nonlinear equations
var x7 = nerdamer.solveEquations(['3*x^2/y=2', 'z*x*y-1=35', '5*z^2+7=52']);
console.log(x7.toString());
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/nerdamer.core.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Algebra.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Calculus.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Solve.js"></script>
查看脚本 牛顿的方法程序F(x)= 0. 。它使用 牛顿的切线方法.
不隶属于 StackOverflow