我正在尝试使用Java来求解以下等式中的y:
为了直观起见,我将分子和分母划分为单独的变量。我需要通过以0.5
为增量的x = 4
来计算x = -3
。
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 = -3.0 Y = -6.311688311688312
X = -2.5 Y = -8.880570409982175
X = -2.0 Y = -15.333333333333334
X = -1.5 Y = -91.41176470588235
X = -1.0 Y = -8.8
X = -0.5 Y = -3.0105263157894737
X = 0.0 Y = -2.0
X = 0.5 Y = -3.305263157894737
X = 1.0 Y = -6.8
X = 1.5 Y = -45.529411764705884
X = 2.0 Y = -4.666666666666667
X = 2.5 Y = -1.429590017825312
X = 3.0 Y = -0.3116883116883117
X = 3.5 Y = 0.19940094137783482
X = 4.0 Y = 0.4603174603174603
使用在线工具,我计算了X=0,得到了2而不是-2。我做数学计算的方式有问题吗?
发布于 2018-06-05 04:33:54
您在实现表达式时出错。
... - ( (4 * x) + 12 )
应该是
... - (4 * x) + 12
或者在完整的表达式中:
double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - (4 * x) + 12;
此外,正如@JacobG所指出的那样
1/2
的计算结果为0,因为它是一个整数除法。但是,如果您对x = 0
进行评估,这并没有任何区别。这可以改用0.5
来纠正。
发布于 2018-06-05 04:34:24
你的方程式中有一个小的打字错误:
1/2
在Java中等于0
;请参阅:Why is the result of 1/3 == 0?
要解决这个问题,您可以只输入0.5
,或者使用1 / 2D
或1D / 2
。
有关代码的另一个问题,请参阅Paul's answer。
https://stackoverflow.com/questions/50688322
复制相似问题