cilouu a écrit :
Re ..
Oui mon programme est bien conçu j'imagine tout est paramétré .. héhéhé
|
Ca c'est pas être "bien conçu" mais simplement configurable. Un programme bien conçu te permet de prendre un élément de base (par exemple une matrice) et le remplacer par autre chose (par exemple un tableau d'objets) sans que les éléments qui l'utilisent n'aient à en souffrir. Bien sûr certains détails du code doivent changer (surtout les liens entre l'élément de base et les éléments qui l'utilisent) mais sans plus.
cilouu a écrit :
Alors oui apparament pour déduire l'équation d'un crecle trois points seulement suffisent .. Après sur mes 10 points je peux en prendre 3 en déduire le cercle et calculer l'écart .
Par contre j'ai utilisé la fonction leastsq de optimize mais sa me donne quelque chose qui n'est pas tout à fait ce que je cherche car ma courbe étant symétrique à certains endroits, mes rayons obtenues devraients être égaux, et ce n'est pas le cas ..
Peux tu m'aider ?
|
Je peux pas lire ton code, il y a vraiment trop de commentaires. Mais je pense que ton écart vient du codage interne des flottants.
Ce problème n'est pas spécifique à Python mais il est inhérent à la conversion en binaire d'un nombre à virgule. En effet, convertir par exemple 0,3 en binaire donnera
0,3 * 2 = 0,6 => 0
0,6 * 2 = 1,2 => 1
0,2 * 2 = 0,4 => 0
0,4 * 2 = 0,8 => 0
0,8 * 2 = 1,6 => 1
0,6 * 2 = ... [ad infinitum]
Ce qui donne en valeur approchée 01001. Mais ce n'est qu'une valeur approchée et si tu reconvertis en décimal, ça te donnera
1 * 1/4 + 1 * 1/32 = 9/32 = 0,28 et non 0,3. Tu peux d'ailleurs tester en ouvrant une fenêtre Python et en tapant 0.3 ou mieux, 0.1 + 0.1 + 0.1 - 0.3
Et donc si tu as besoin d'utiliser des nombres à virgule avec précision exacte, il te faut passer par l'import decimal puis utiliser decimal.Decimal("0.3" ). Cet objet code les nombres en 2 parties (partie entière et partie décimale) mais permet d'y faire des opérations simples comme addition, soustraction, multiplication, division et même racine. C'est un peu plus long vu que les calculs se font chiffre à chiffre mais c'est rigoureusement exact.
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.