好的,所以我在這裏執行一個惱人的數學計算,試圖解決一個立方根。C#數學計算不能正常工作
現在,這裏是我的C#代碼:
public void CubeCalculate()
{
//Calculate discriminant
double insideSquareRoot = (18 * cubicAValue * cubicBValue * cubicCValue * cubicDValue) + (-4 * (Math.Pow(cubicBValue, 3) * cubicDValue) + (Math.Pow(cubicBValue, 2) * Math.Pow(cubicCValue, 2)) + (-4 * cubicAValue * Math.Pow(cubicCValue, 3)) + (-27 * Math.Pow(cubicAValue, 2) * Math.Pow(cubicDValue, 2)));
if (insideSquareRoot < 0)
{
//One real solution, two imaginary
double onecuberootradical1 = (1/2) * (((2 * Math.Pow(cubicBValue, 3)) + (-9 * cubicAValue * cubicBValue * cubicCValue) + (27 * Math.Pow(cubicAValue, 2) * cubicDValue)) + (Math.Sqrt(Math.Pow((2 * Math.Pow(cubicBValue, 3)) + (-9 * cubicAValue * cubicBValue * cubicCValue) + (27 * Math.Pow(cubicAValue, 2) * cubicDValue), 2) + (-4 * Math.Pow(Math.Pow(cubicBValue, 2) + (-3 * cubicAValue * cubicCValue), 3)))));
double onecuberootradical2 = (1/2) * (((2 * Math.Pow(cubicBValue, 3)) + (-9 * cubicAValue * cubicBValue * cubicCValue) + (27 * Math.Pow(cubicAValue, 2) * cubicDValue)) - (Math.Sqrt(Math.Pow((2 * Math.Pow(cubicBValue, 3)) + (-9 * cubicAValue * cubicBValue * cubicCValue) + (27 * Math.Pow(cubicAValue, 2) * cubicDValue), 2) + (-4 * Math.Pow(Math.Pow(cubicBValue, 2) + (-3 * cubicAValue * cubicCValue), 3)))));
x1 = (-cubicBValue/(3 * cubicAValue)) + ((-1/(3 * cubicAValue)) * (Math.Pow(onecuberootradical1, 1/3))) + (-1/(3 * cubicAValue) * Math.Pow(onecuberootradical2, 1/3));
x2 = double.NaN;
x3 = double.NaN;
}
OK,我想弄清楚發生了什麼事情錯在這裏。
首先,由於這是MVC應用程序的一部分,因此我確定我的其他根目錄正常工作,所以這純粹是以下計算的錯誤,而不是其他任何問題。
現在,我在這裏查了很多次,我沒有發現任何錯誤。
您可以比較在這裏正確的公式:
這是x1
根,我想在這裏複製。
另外,如果你想知道官方判別形成same Wikiepdia article那就是:
難道你們看到什麼問題???
OK,謝謝你,是的,這些都是雙打。 – Qcom 2010-10-30 23:41:00
感謝你的提問,現在只是一個問題,每個人的數字不變都必須用小數點指定,讓C#知道它是浮點數/雙數?此外,這並沒有完全解決我的問題。 – Qcom 2010-10-30 23:51:56
@Boss你是否也修復了你擁有的兩個1/3? – 2010-10-31 00:03:10