14

特定の数値の平方根を返すメソッドを作成するにはどうすればよいですか?

例: sqrt(16) は 4 を返し、sqrt(5) は 2.3 を返します...
私は Java を使用しており、Math.sqrt()API 関数を知っていますが、メソッド自体が必要です。

4

5 に答える 5

12

組み込み関数を使用せずに特定の数値の平方根を見つける Java プログラム

public class Sqrt
{

  public static void main(String[] args)
  {
    //Number for which square root is to be found
    double number = Double.parseDouble(args[0]);

    //This method finds out the square root
    findSquareRoot(number);

}

/*This method finds out the square root without using
any built-in functions and displays it */
public static void findSquareRoot(double number)
{

    boolean isPositiveNumber = true;
    double g1;

    //if the number given is a 0
    if(number==0)
    {
        System.out.println("Square root of "+number+" = "+0);
    }

    //If the number given is a -ve number
    else if(number<0)
    {  
        number=-number;
        isPositiveNumber = false;
    }

    //Proceeding to find out square root of the number
    double squareRoot = number/2;
    do
    {
        g1=squareRoot;
        squareRoot = (g1 + (number/g1))/2;
    }
    while((g1-squareRoot)!=0);

    //Displays square root in the case of a positive number
    if(isPositiveNumber)
    {
        System.out.println("Square roots of "+number+" are ");
        System.out.println("+"+squareRoot);
        System.out.println("-"+squareRoot);
    }
    //Displays square root in the case of a -ve number
    else
    {
        System.out.println("Square roots of -"+number+" are ");
        System.out.println("+"+squareRoot+" i");
        System.out.println("-"+squareRoot+" i");
    }

  }
}
于 2013-07-18T22:17:42.570 に答える
11

おそらく、何らかの近似方法を使用する必要があります。

見て

平方根の計算方法

于 2010-06-16T08:15:42.480 に答える
8

このバージョンは、sqrt を計算する最も一般的な方法であるニュートン法を使用し、入力が実際に整数であることを確認しませんが、問題をうまく解決するはずです。

int num = Integer.parseInt(input("Please input an integer to be square rooted."));
while(0.0001 < Math.abs(guess * guess - num)){
    guess = (guess + num / guess) / 2;
}
output(Integer.toString(guess));

2 行目は、現在の推測が真の結果にどれだけ近いかをチェックし、十分に近い場合はループを中断します。3 行目では、ニュートン法を使用して、sqrt の真の値にさらに近づきます。これが役立つことを願っています。:)

于 2013-02-12T06:19:22.013 に答える
7

ここで考えるべきことがあります:

平方根を見つけるには、単純に 2 乗した数値を見つける必要があります (ただし、プログラム的には、それ自体を乗算する方がはるかに簡単です ;) ) 入力が返されます。

だから、推測から始めましょう。製品が小さすぎる場合は、より大きく推測してください。新製品が大きすぎる場合は、絞り込んだことになります。あなたは私がどこに行くのか分かります...

精度やパフォーマンスの必要性に応じて、もちろん多くの方法があります。この投稿で示唆されている解決策は、これらのカテゴリのいずれにおいても決して最善のものではありませんが、進むべき 1 つの方法の手がかりを与えてくれます。

于 2010-06-16T08:21:39.863 に答える
5

私が発明した(または場合によっては再発明した)ものはこれです:

次の推測= ( ( 推測2 ) + N ) / ( 2 × 推測 )

例:

の平方根10、最初の推測は、たとえば10:

Guess1 = (100+10)/20=5.5

Guess2 = (30.25+10)/(2*5.5)= 3.6590909090...

Guess3 = (13.3889+10)/(3.65909090*2)=3.196005082...

あなたを取得します3.16227766...またはそのあたり。

これは実際には私の元の方法の簡略化されたバージョンです

推測 + ( ( N + 推測2 ) / ( 2 × 推測 ) )

これは、バクシャリの方法に非常によく似ています。

于 2011-04-07T00:31:19.387 に答える