【问题标题】:How to solve equation using javascript/nodejs?如何使用 javascript/nodejs 求解方程?
【发布时间】:2020-01-23 18:32:55
【问题描述】:

我有一个方程:100 + (y * 5) = 200

我必须找到 y = (200 -100)/5 的值,但主要是运算符符号可能会发生变化(例如:100 * (y -5) = 200 ), 那么如何编写一个程序,如果方程通过,它会求解并给出 x 的值,而不管使用什么运算符。

感谢任何帮助。

我已经在节点 js 中尝试过,并且必须解决方程:

var fs = require('fs');

fs.readFile('equation.json',
    // callback function that is called when reading file is done
    function(err, data) { 
        // json data
        var jsonData = data;
        // parse json
        var jsonParsed = JSON.parse(jsonData);
        //operators array
        var operators = {
              "add":"+",
              "subtract":"-",
              "multiply":"*",
              "divide":"/",
              "equal":"="
        };
        var eq,op1,op2,equation;
        for(opt in operators){
          if(jsonParsed.op == opt){
            eq = operators.equal;
          }
          //looking for first operator
          if(jsonParsed.lhs.op == opt){
            if(opt=="add"){
              op1 = operators.add;
            }
            else if(opt=="subtract"){
              op1 = operators.subtract;
            }
            else if(opt=="multiply"){
              op1 = operators.multiply;
            }
            else if(opt=="divide"){
              op1 = operators.divide;
            }
          }
          //looking for second operator
          if(jsonParsed.lhs.rhs.op == opt){
            if(opt=="add"){
              op2 = operators.add;
            }
            else if(opt=="subtract"){
              op2 = operators.subtract;
            }
            else if(opt=="multiply"){
              op2 = operators.multiply;
            }
            else if(opt=="divide"){
              op2 = operators.divide;
            }
          }
        }
        //console.log(eq);
        //console.log(op1);
        //console.log(op2)
        //parsing expression
        equation = jsonParsed.lhs.lhs + op1 +"(" + jsonParsed.lhs.rhs.lhs + op2 + jsonParsed.lhs.rhs.rhs + ")" + eq + jsonParsed.rhs;

        console.log(equation);

});

JSON

{
    "op": "equal",
    "lhs": {
        "op": "add",
        "lhs": 1,
        "rhs": {
            "op": "multiply",
            "lhs": "x",
            "rhs": 10
        }
    },
    "rhs": 21
}

【问题讨论】:

标签: javascript node.js logic


【解决方案1】:

线性方程组最容易且通常在计算机上使用矩阵求解。

这里有一个网页介绍了它的工作原理:

https://www.aplustopper.com/solving-systems-linear-equations-using-matrices/

互联网上也有 JavaScript 的矩阵包,比如这个

https://mathjs.org/docs/datatypes/matrices.html

披露:我与这些网站中的任何一个都没有关联。这就是我当年在 Java 中的做法(使用 NASA 的 Java 矩阵包)。

【讨论】:

  • mathjs 有一个 usolve 函数来求解线性方程组。
猜你喜欢
  • 1970-01-01
  • 2023-01-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多