gpt4 book ai didi

javascript - 如何将等式中的多项式项移到一边?

转载 作者:行者123 更新时间:2023-11-30 17:52:11 25 4
gpt4 key购买 nike

所以我在 js 中有一个等价于字符串的多项式方程,我可以计算它。 (假设 eval 执行是安全的)例如

2 * x + 3 * y - z = 0;

上面是一个字符串,在适当的范围内定义了 x、y 和 z,我可以评估上面的字符串,它会给我结果。我想这样做,以便我可以在其他人给出的地方找到 x 的值。所以我想要的输出是。

x = (z - 3 * y) / 2;

是否可以得到上面的字符串?如果不是,那么在给定 y 和 z 时是否可以只找到 x 的值?我知道这听起来像是家庭作业,但事实并非如此。

最佳答案

var x, y, z, r1, r2, a, b,
eq = "2 * x + 3 * y - z = 0;";

console.clear();
eq = eq.replace(" = 0;", "");
y = 12; z = 34;
x = 1; r1 = eval(eq);
x = 2; r2 = eval(eq);
a = r2 - r1; b = r1 - a; x = -b / a;
console.log(x);

或者,如果您需要字符串形式的解公式:

var eq = "2 * x + 3 * y - z = 0;", eq2,
match, a, b, c, x, y, z;

function process(prefix) {
prefix = prefix.replace(/[\s\*]/g, "");
switch (prefix) {
case "" : return +1;
case "+": return +1;
case "-": return -1;
default : return +prefix;
}
}

console.clear();
match = eq.match(/^([^x]*)x([^y]*)y([^z]*)z ?= ?0;$/);
if (match === null || match.length !== 4)
console.log("Invalid equation");
else {
a = process(match[1]);
b = process(match[2]);
c = process(match[3]);
eq2 = "(" + (-b) + " * y + " + (-c) + " * z) / " + a;
console.log(eq2);
y = 12; z = 34;
x = eval(eq2);
console.log(x);
}

eq2 将是 (-3 * y + 1 * z)/2

关于javascript - 如何将等式中的多项式项移到一边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com