用java语言求解一个复杂的代数公式

用java语言求解一个复杂的代数公式,java,algebra,Java,Algebra,我试图用Java在以下等式中求解y: 为了便于观察,我把分子和分母分成了不同的变量。我需要计算x=-3到x=4的增量0.5 for(double x = -3; x <= 4; x += .5) { // Now we compute the formula for all values in between -3 and 4 in increments of 0.5 double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.p

我试图用Java在以下等式中求解y:

为了便于观察,我把分子和分母分成了不同的变量。我需要计算
x=-3
x=4
的增量
0.5

for(double x = -3; x <= 4; x += .5)
{
    // Now we compute the formula for all values in between -3 and 4 in increments of 0.5

    double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - ( (4 * x) + 12 );
    double bottom = ( Math.pow(( 3 * Math.pow(x, 2) + 1 ) , 1/2) + Math.abs( 5 - (Math.pow(x, 4)) ) );

    double y = top / bottom;

    System.out.print("X = " + x + "\t Y = " + y);
}

使用在线工具,我计算了X=0,得到了2,而不是-2。我的计算方法有问题吗?

您在实现表达式时犯了一个错误

... - ( (4 * x) + 12 )
应该是

... - (4 * x) + 12
或者用完整的表达:

double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - (4 * x) + 12;
还注意到:


1/2
计算结果为0,因为它是一个整数除法。但是,如果您计算for
x=0
,这没有任何区别。这可以用
0.5
来纠正。

您的公式中有一个小错误:

1/2
在Java中等于
0
;见:

要解决此问题,只需键入
0.5
,或使用
1/2D
1D/2


有关代码的另一个问题,请参阅。

您将发现1/2=0。对于x=0,该问题已正确解决,但对于其他值,如
x=-2.5
,该值应等于
−7.463007
。谢谢。@davidxd33刚刚更新了我的答案。实际上还有一个错误,请注意,非常感谢您的快速帮助,我知道了。@ifly6更正。但是你忘了负号
-((4*x)+12)
是需要更正的完整表达式。我会更新答案。用负号确实会有很大的不同。这就是保罗回答的问题所在。你不知道这有多头痛。
1/2