特定のnunberのsqrtを返すメソッドを作成するにはどうすればよいですか?
例: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の累乗に累乗した数を見つける必要があります(プログラムでそれ自体を掛けるだけの方がプログラムではるかに簡単ですが;))入力を返します。
だから、推測から始めましょう。製品が小さすぎる場合は、もっと大きいと思います。新製品が大きすぎる場合、あなたはそれを絞り込みました-中間のどこかだと思います。あなたは私がどこへ行くのかわかります...
精度やパフォーマンスのニーズに応じて、さまざまな方法があります。この投稿でほのめかされたソリューションは、これらのカテゴリのいずれにおいても最良のものではありませんが、それはあなたに一つの方法への手がかりを与えます。
私が発明した(または場合によっては再発明した)これは次のとおりです。
次の推測=((推測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×推測))
バフシャリの方法 のようなひどい見た目です。