comment puis-je créer une méthode qui retourne le sqrt d'un nunber donné?
Par exemple: sqrt (16) renvoie 4 et sqrt (5) renvoie 2,3 ...
J'utilise Java et je connais la fonction API Math.sqrt()
mais j'ai besoin de la méthode elle-même.
Programme Java pour trouver la racine carrée d'un nombre donné sans utiliser de fonctions intégrées
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");
}
}
}
Vous devrez probablement utiliser une méthode d'approximation.
Jettes un coup d'oeil à
Cette version utilise la méthode de Newton, la méthode la plus courante de calcul de sqrt, et ne vérifiera pas que l'entrée est en fait un entier, mais cela devrait résoudre votre problème très bien.
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));
La deuxième ligne vérifie à quel point la supposition actuelle est proche du vrai résultat et si suffisamment proche rompt la boucle. La troisième ligne utilise la méthode de Newton pour se rapprocher toujours plus de la vraie valeur du sqrt. J'espère que ça aide. :)
Voici quelque chose à penser:
Pour trouver une racine carrée, il vous suffit de trouver un nombre qui, élevé à la puissance de 2 (bien que la simple multiplication par lui-même soit beaucoup plus facile par programmation;)) renvoie l'entrée.
Alors, commencez par une supposition. Si le produit est trop petit, devinez plus grand. Si le nouveau produit est trop grand, vous l'avez réduit - devinez quelque part entre les deux. Vous voyez où je vais ...
En fonction de votre besoin de précision et/ou de performance, il existe bien sûr de nombreuses façons. La solution suggérée dans ce post n'est en aucun cas la meilleure dans l'une ou l'autre de ces catégories, mais elle vous donne un indice sur la voie à suivre.
Celui que j'ai inventé (ou réinventé le cas échéant) est le suivant:
Devinez suivant = ((Devinez2) + N)/(2 × Devinez)
Exemple:
Racine carrée de 10
, la première supposition est, disons, 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...
etc.
Vous obtient 3.16227766
... ou à peu près.
Il s'agit en fait d'un version simplifiée de ma méthode d'origine
Devinez + ((N + Devinez2 )/(2 × Devinez))
qui ressemble énormément à méthode de Bakhshali .