[英]Solving two algebraic equations in java
我有两个方程需要在Java中评估
y=(x+1)*2-3
y=5
这些方程本质上是动态的
y= x*8x6-5*5
y= 3
y
在这些方程式中是已知的,我需要确定x
的值
用Java编写程序的最佳简便方法是什么?
似乎有两种方法可以解决此问题。 我的第一个想法(一如既往地过于复杂,除了有趣之外,很可能不值得做),是使用创建语法来解析操作顺序,可以求出变量与常量的结果等。然后以编程方式解决方程。 但是,这并非易事。 如果这是针对编译器类的,则可能值得一看,否则将其忽略。
我的第二个想法是只使用蛮力。 虽然您将需要弄清楚如何处理x的负值。
public int solve(int y){
int x=0;
while(y>(x+1)*2-3)
x++;
}
几年后,希望这对某人有帮助,使它变得更简单,我将使用库exp4j( https://www.objecthunter.net/exp4j/ )和IDE netbeans 8.2( https://netbeans.org/ ) 。 创建这样的框架
稍后在按钮上添加代码:
try { net.objecthunter.exp4j.Expression e = new ExpressionBuilder(txtFunc.getText()) .variables("x") .build() .setVariable("x", Double.parseDouble(txtVar.getText())); double result = e.evaluate(); txtRes.setText("" + result); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Revisa la función o la variable, Posibles errores de operación: División entre 0"); }
注意:这是为了评估“ x”,所以这样做的方法将有些复杂,因此我们将做一些数学运算,如果5是所评估函数的值,则我们将“ x”的值隔离。 x =(y + 1)/ 2,然后重新评估,x =(5 + 1)/ 2 = 3,x = 3,并通过代码验证这实际上是答案。
恭维
其他功能也一样。 (对不起我的技术英语)
如果通过说方程是“动态的”,我们可以推断出您正在尝试构建一个程序来求解任意代数方程(或方程组)中的x,那么这已经超出了本论坛的讨论范围。 有完整的软件包设计用于执行此类操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.