簡體   English   中英

使用迭代和二等分的多維數據集根

[英]Cube Root using iterations and bisection

我試圖通過將數字二等分然后縮小范圍來找到它的立方根。 我以這種方式有平方根的程序,但是立方根方法只是繼續循環而從未給出答案。 我不確定我哪里出錯了,需要一些建議。

public class myFunc
{
    public static double squareRoot(double value, double precision)
    {
        double low, high, middle;
        high = 1;
        low = value;
        middle = (high + low) / 2;
        Console.WriteLine("{0,20:n12}{1,20:n12}{2,20:n12}", low, middle, high);
        while ((high-low)>precision)
        {
            if ((middle * middle) <value)
            {
                low = middle;
            }
            else
            {
                high = middle;
            }
            middle = (high + low) / 2;
            Console.WriteLine("{0,20:n12}{1,20:n12}{2,20:n12}", low, middle, high);
        }
        return (middle);
    }

    public static double cubeRoot(double value, double precision)
    {
        double low, high, middle;

        high = value;
        low = 1;
        middle = (high + low) / 3;
        Console.WriteLine("{0,20:n12} {1,20:n12} {2,20:n12}", low, middle, high);
        while ((high - low) > precision)
        {
            if ((middle * middle*middle)>value)
            {

                high = middle;
            }

            else
            {
                low = middle;
            }
            middle = (high + low) / 3;
            Console.WriteLine("{0,20:n12} {1,20:n12} {2,20:n12}", low, middle, high);
        }
        return (middle);
    }

middle = (high + low) / 3; 假設高是10,低是8,中是... 6? 這不是您想要的范圍嗎?

中間值仍應為(high + low) / 2 ,此搜索第三個根的原因只是(middle * middle*middle)>value測試。

暫無
暫無

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

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