[algo] approximation du sinus : on va jusqu'a quel ordre ?

approximation du sinus : on va jusqu'a quel ordre ? [algo] - Algo - Programmation

Marsh Posté le 22-05-2004 à 16:53:58    

salut
voila, je cherche a faire une fonction de calcul de sinus (en asm)
la question que je me pose, c'est jusqu'a quel ordre aller dans le developpement limité pour avoir une approximation correcte
 
je reste dans l'intervalle [0;pi/2] pour éviter d'avoir un nombre trop élevé, mais apres, je me demande ou je dois arreter le developpement.
 
je pensais ordre 5 ou 7, mais est-ce que c'est suffisant sur cet intervalle ?
 
++ all

Reply

Marsh Posté le 22-05-2004 à 16:53:58   

Reply

Marsh Posté le 22-05-2004 à 17:28:32    

ptit up plz :d

Reply

Marsh Posté le 22-05-2004 à 17:41:41    

Ben ca dépend de l'utilisation que tu fais de la valeur calculée!

Reply

Marsh Posté le 22-05-2004 à 17:47:43    

ça dépend à partir de quel ordre tu es satisfait ...

Reply

Marsh Posté le 22-05-2004 à 17:52:49    

l'utilisation de la valeur calculée, c pour tracer un graphe a l'aide d'un tableur (excel a priori).
les valeurs serviront a tracer le graphe de sin, mais aussi de fonctions paramétrées à base de sin et cos
bon, de tte facon, je vais faire les tests a l'ordre 5 et si je suis pas satisfait, je verai pour l'ordre 7

Reply

Marsh Posté le 22-05-2004 à 19:34:57    

voila, j'ai fini, donc pour la petite histoire, j'ai en fait codé le cosinus (j'en déduirai le sinus, mais le cosinus est moins chiant a coder.)
 
je dois aller à l'ordre 12 pour obtenir quelquechose de satisfaisant avec mon cosinus. (avec un ordre inférieur, j'avais parfois des cos>1)
 
la, ca marche bien, je vais donc coder mon sin basé sur ca
 
++ all

Reply

Marsh Posté le 22-05-2004 à 19:44:59    

vala, le sinus est codé lui aussi
ben tout fonctionne, on va voir ce que ca donne sur les fonctions paramétrées :d

Reply

Marsh Posté le 22-05-2004 à 20:42:16    

captainneuneu a écrit :

j'ai en fait codé le cosinus (j'en déduirai le sinus, mais le cosinus est moins chiant a coder.)


Ah bon? Les deux DL se ressemblent pas mal pourtant

Reply

Marsh Posté le 22-05-2004 à 20:45:48    

oui, mais ya une chose qui simplifie la vie : cos(-a)=cos(a)
du coup, une valeur absolue au debut de la fonction sur la valeur de l'angle, et c fini..
pareil apres des changement de variable
 
pour le sin, j'etais obligé de faire plusieurs cas (n'oublie pas que c t en asm, donc pas tres "coder-friendly", en tout cas , pas pour moi :d)

Reply

Marsh Posté le 22-05-2004 à 21:02:55    

Autrement des tables précalculées c'est bien aussi...

Reply

Marsh Posté le 22-05-2004 à 21:02:55   

Reply

Marsh Posté le 22-05-2004 à 21:55:17    

captainneuneu a écrit :

je reste dans l'intervalle [0;pi/2]


captainneuneu a écrit :

oui, mais ya une chose qui simplifie la vie : cos(-a)=cos(a)


Faudrait savoir!  :p
 
edit : au fait j'adore ta signature  :jap:


Message édité par Ace17 le 22-05-2004 à 21:55:59
Reply

Marsh Posté le 22-05-2004 à 22:16:25    

Ace17 a écrit :

Faudrait savoir!  :p
 
edit : au fait j'adore ta signature  :jap:


 
merci pour la signature
 
pour ce qui est de l'intervalle, je reste sur [0;pi/2] certes, mais après mon modulo
 
donc je peux tres bien calculer cos(-15) en le ramenant sur l'intervalle [0;pi/2]


Message édité par captainneuneu le 22-05-2004 à 22:16:36
Reply

Marsh Posté le 22-05-2004 à 22:17:11    

Caedes a écrit :

Autrement des tables précalculées c'est bien aussi...


 
oui, mais va faire ca en assembleur...
enfin, ca me semble difficile :d

Reply

Marsh Posté le 22-05-2004 à 22:39:24    

captainneuneu a écrit :

oui, mais va faire ca en assembleur...
enfin, ca me semble difficile :d


Ben non justement.
Tu mets des valeurs statiques à un emplacement mémoire (enfin c'est comme ca qu'on fait ds les PICs) et si tu veux le sinus de 36° tu vas au 36eme emplacement de ton tableau...
Et s'il faut 36°43' tu fais une interpolation linéaire (ou tu arrondis car une precision d'un degré c'est souvent suffisant)

Reply

Marsh Posté le 22-05-2004 à 22:51:07    

ah, pkoi pas, fodrait que je vois si c'est faisable
la, c du mips, mais c surtout mon premier programme donc je connais pas tout ca.
 
je testerai un jour quand j'aurais le temps, mais de toute facon, c'etait pas la consigne :d
 
;)

Reply

Marsh Posté le 22-05-2004 à 22:58:26    

ouais enfin bon, 1° de précision, c'est pas franchement folichon

Reply

Marsh Posté le 22-05-2004 à 23:29:36    

c'est marrant ça, oui, c'est quoi le critère pour s'arrêter ?
 
en plus on a même pas de relation entre la précision et le degré du développement si ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-05-2004 à 23:33:37    

ben si tu peux donner epsilon(x)
 
je suis complètement hors du coût, mais à l'époque, il me semble avoir fait beaucoup de calcul comme ça

Reply

Marsh Posté le 22-05-2004 à 23:43:11    

Taz a écrit :

ben si tu peux donner epsilon(x)

ah bon ? encadrer l'erreur en fonction du rang ?
 
 

Taz a écrit :

hors du coût

on dit "trop cher" [:aloy]


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-05-2004 à 23:48:04    

effectivement, je ne pense pas qu'on ai réellement de renseignement sur la précision, mais on sait ce qui manque, en général, matérialisé sous la forme d'un o(x) ou O(x)
 
mais bon, je suis une bite en analyse et je c pas trop comment exploité ce truc
 
la bonne solution est de trouver le bon compromis précision/vitesse d'exécution

Reply

Marsh Posté le 22-05-2004 à 23:49:32    

marne, je suis traumatisé, je fais lire un rapport rendu à ma mère, et là elle m'invente une faute en première page comme quoi j'aurais écrit coup au lieu de coût ...

Reply

Marsh Posté le 22-05-2004 à 23:50:51    

hum, spa bien ca...

Reply

Marsh Posté le 23-05-2004 à 09:59:59    

Taz a écrit :

ouais enfin bon, 1° de précision, c'est pas franchement folichon


On peut aussi faire une approximation linéaire entre les 2 points hein...

Reply

Marsh Posté le 23-05-2004 à 15:40:22    

Certainement pas lineaire si tu veux une precision raisonnable. Quadratique, j'aurais dit.

Reply

Marsh Posté le 23-05-2004 à 16:13:08    

el muchacho a écrit :

Certainement pas lineaire si tu veux une precision raisonnable. Quadratique, j'aurais dit.


L'un est plus facile à réaliser que l'autre...  :whistle:

Reply

Marsh Posté le 21-06-2004 à 18:14:19    

Salut,
 
désolé de faire remonter ce topic à la surface.
 
Juste pour dire qu'on peut estimer l'incertitude en fonction du rang de développement :
 
en gros à chaque ajout d'un terme dans le développement limité, on passe d'un côté et d'un autre de la courbe recherchée (ici cosinus). Il suffit alors de faire la différence entre 2 courbes d'ordre consécutif (n et n+2) pour avoir l'incertitude de la première (ordre n) avec une légère surextimation (mais c'est moins grave que l'inverse quoiqu'on pourrait ralentir le calcul avec un ordre élevé non nécéssaire).
 
Donc, pour un développement limité à l'ordre n, abs(x^(n+2)/(n+2)!) donne l'incertude au point x (abs parce qu'on se fout un peu de quel côté de la courbe on est). Il 'suffirait' alors de calculer cette incertitude de proche en proche jusqu'à avoir satisfaction.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed