簡體   English   中英

用java解決復雜的代數公式

[英]Solving a complex algebraic formula with java

我試圖使用Java在以下等式中求解y:

在此輸入圖像描述

為了可見性,我將分子和分母分成單獨的變量。 我需要計算x = -3x = 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 = -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。 我怎么做數學有什么問題嗎?

你在實現表達式時犯了一個錯誤。

... - ( (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,因為它是整數除法。 如果你評估for x = 0這沒有任何區別。 這可以使用0.5來糾正。

你的等式中有一個小錯字:

1/2

在Java中等於0 ; 看: 為什么1/3 == 0的結果?

要解決此問題,您只需鍵入0.5 ,或使用1 / 2D1D / 2

請參閱Paul關於代碼的另一個問題的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM