Posez votre question Signaler

Prog en assembleur

info fst - Dernière réponse le 20 nov. 2009 à 22:08
Bonsoir,
je suis une débutante en assembleur,je suis en train de formuler un programme et j'ai besoin d'effectuer une racine carrée,si quelqu'un peut m'aider svp. Merci d'avance
Lire la suite 

Prog en assembleur »

1 réponses
Réponse
+0
moins plus
Je ne connais rien à l'assembleur, donc je ne peux pas t'aier à coder.

Mais tu as plusieurs options :

1) peut-être la plus simple, faire un développement limité de la fonction racine (comme au lycée normalement, c'est au programme il me semble). Plus tu fais ton développement à un ordre grand, plus ta réponse sera précise.

Par exemple, tu développes depuis 1

racine(1+h) =environ racine(1) + dérivée de racine (1) * h + dérivée seconde de racine (1) / 2 * h^2 + dérivée troisième de racine(1) / 6 * h^3

(ici c'est un développement d'ordre 3)

Donc si tu as par exemple la racine de x à calculer, tu poses h=x-1 et tu appliques cette formule.
Les dérivées sont juste des nombres à calculer sur papier avant de faire ton programme.

dérivée de racine (x)= 1/(2*racine de x), donc dérivée de racine (1) c'est 0.5.
dérivée deuxième de racine (x) = -1/(4*x*racine(x)) si je ne me trompe pas, c-à-d dérivée deuxième de racine (1) = -0.25



2) Sinon une autre possibilité est de faire la méthode de la bisection, je ne sais pas trop ce que tu sais faire ou pas en assembleur.

détail : voici la méthode de la bissection. On cherche le zéro d'une fonction. Pour trouver la racine de a, on cherche le zéro de la fonction x^2 - a.

Tu prends deux nombres de départ pour commencer à chercher. tu prendras 0 et a, c'est le plus simple. On sait que la réponse est entre les deux.

Ensuite :
BorneInf = 0
Borne Sup=a
X = a/2 (le milieu entre 0 et a)
Tant que X^2-a n'est pas "proche de zéro" (tolérance à définir par toi même, par exemple 0.0001)
  regarder le signe de X. S'il est positif, le X remplace borneSup. Sinon le X remplace BorneInf
  remplacer X par la moyenne entre BorneInf et BorneSup (BorneInf + BorneSup)/2
Boucler tant que

ceci est l'algorithme, je ne sais pas si tu connais assez l'assembleur pour le traduire.

Ce ne sont que des possibilités parmi d'autres, il y'en a beaucoup!


EDIT: en fait pour la méthode de la bisection, ma méthode n'est pas correcte si a est entre 0 et 1. si a est entre 0 et 1, il faut prendre comme borneInf : a et comme borneSup : 1. Sinon, si le nombre a est plus grand que 1 tu peux prendre borneInf = 1 et borneSup = a.
Ajouter un commentaire
Ce document intitulé « prog en assembleur » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?