我有两个方程式需要在java中求值。
y=(x+1)*2-3
y=5这些方程本质上是动态的。
y= x*8x6-5*5
y= 3在这些等式中,y是已知的,我需要确定x的值
用java编写程序的最好、最简单的方法是什么?
发布于 2013-03-05 23:28:38
似乎有几种方法可以做到这一点。我的第一个想法(总是过于复杂,除了好玩之外很可能不值得做),是使用创建一个语法来解析操作的顺序,可以计算为变量和常量的东西,等等。然后编程求解方程。然而,这并不是一件容易做到的事情。如果这是针对编译器类的,那么这可能值得一看,否则就忽略它。
我的第二个想法是使用暴力。尽管你需要弄清楚如何处理x的负值。
public int solve(int y){
int x=0;
while(y>(x+1)*2-3)
x++;
}发布于 2018-07-05 11:15:48
几年后,我希望这对某些人有所帮助,为了使这件事变得更简单,我将使用库exp4j (https://www.objecthunter.net/exp4j/)和IDE NetBeans8.2 (https://netbeans.org/)。Create a frame like this
稍后在按钮上添加代码:
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,并用代码验证这确实是答案。
另一个函数也是如此。(很抱歉我的专业英语)
发布于 2013-03-05 23:29:07
如果说方程是“动态的”,我们推断你正在尝试构造一个程序来求解任意代数方程(或一组方程)中的x,这远远超出了本论坛的讨论范围。有一整套的软件包都是为做这样的事情而设计的。
https://stackoverflow.com/questions/15227122
复制相似问题