首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用java求解复杂的代数公式

用java求解复杂的代数公式
EN

Stack Overflow用户
提问于 2018-06-05 04:30:46
回答 2查看 294关注 0票数 4

我正在尝试使用Java来求解以下等式中的y:

为了直观起见,我将分子和分母划分为单独的变量。我需要通过以0.5为增量的x = 4来计算x = -3

代码语言:javascript
复制
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);
}

我得到的值不是预期的值。

代码语言:javascript
复制
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。我做数学计算的方式有问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 04:33:54

您在实现表达式时出错。

代码语言:javascript
复制
... - ( (4 * x) + 12 )

应该是

代码语言:javascript
复制
... - (4 * x) + 12

或者在完整的表达式中:

代码语言:javascript
复制
double top = ( 9 * Math.pow(x, 3) ) - ( 27 * Math.pow(x, 2) ) - (4 * x) + 12;

此外,正如@JacobG所指出的那样

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

票数 8
EN

Stack Overflow用户

发布于 2018-06-05 04:34:24

你的方程式中有一个小的打字错误:

代码语言:javascript
复制
1/2

在Java中等于0;请参阅:Why is the result of 1/3 == 0?

要解决这个问题,您可以只输入0.5,或者使用1 / 2D1D / 2

有关代码的另一个问题,请参阅Paul's answer

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档