特定の数値の平方根を返すメソッドを作成するにはどうすればよいですか?
例: sqrt(16) は 4 を返し、sqrt(5) は 2.3 を返します...
私は Java を使用しており、Math.sqrt()
API 関数を知っていますが、メソッド自体が必要です。
特定の数値の平方根を返すメソッドを作成するにはどうすればよいですか?
例: sqrt(16) は 4 を返し、sqrt(5) は 2.3 を返します...
私は Java を使用しており、Math.sqrt()
API 関数を知っていますが、メソッド自体が必要です。
組み込み関数を使用せずに特定の数値の平方根を見つける 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");
}
}
}
このバージョンは、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 の真の値にさらに近づきます。これが役立つことを願っています。:)
ここで考えるべきことがあります:
平方根を見つけるには、単純に 2 乗した数値を見つける必要があります (ただし、プログラム的には、それ自体を乗算する方がはるかに簡単です ;) ) 入力が返されます。
だから、推測から始めましょう。製品が小さすぎる場合は、より大きく推測してください。新製品が大きすぎる場合は、絞り込んだことになります。あなたは私がどこに行くのか分かります...
精度やパフォーマンスの必要性に応じて、もちろん多くの方法があります。この投稿で示唆されている解決策は、これらのカテゴリのいずれにおいても決して最善のものではありませんが、進むべき 1 つの方法の手がかりを与えてくれます。
私が発明した(または場合によっては再発明した)ものはこれです:
次の推測= ( ( 推測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 × 推測 ) )
これは、バクシャリの方法に非常によく似ています。