Résoudre polynome de degré 2

Résoudre polynome de degré 2 - Algo - Programmation

Marsh Posté le 09-11-2010 à 18:26:51    

Salut à tous,
 
est-ce qu'à votre connaissance, il existe une méthode rusée et magique pour résoudre les équation du deuxieme degré, qui m'évite de calculer à chaque fois de faire une tripotée de multiplications/divisions ?

Reply

Marsh Posté le 09-11-2010 à 18:26:51   

Reply

Marsh Posté le 09-11-2010 à 18:54:55    

Reply

Marsh Posté le 09-11-2010 à 18:57:30    

Ben ... oui. La technique du discriminant.
 
Tu mets ton équation sous la forme ax² + bx + c = 0. Ensuite tu calcules delta = b² - 4ac (le discriminant):
 
Si delta < 0, aucune solution
Si delta = 0, une solution qui est -b / 2a
Si delta > 0, deux solutions: -b + sqrt(delta) / 2a et -b - sqrt(delta) / 2a
 
C'est tout


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 09-11-2010 à 19:10:06    

Ok, c'est précisément ce que je cherchais à éviter. Tant pis pour moi.

Reply

Marsh Posté le 09-11-2010 à 20:35:00    

mais pourquoi donc ???  
 

Reply

Marsh Posté le 09-11-2010 à 22:55:55    

parce que le calcul du discriminant à lui tout seul fait 3 multiplications et que l'extraction de chaque racine fait 1 division et une racine carré commune, ce qui fait beaucoup, surtout quand on doit en résoudre 100 000 à la suite. Une solution magique du genre de celle là : http://en.wikipedia.org/wiki/Fast_inverse_square_root m'aurait vachement aidé.

Reply

Marsh Posté le 10-11-2010 à 00:20:57    

Et en parallélisant le calcul des 100000?


---------------
Seul Google le sait...
Reply

Marsh Posté le 10-11-2010 à 08:50:29    

Quelles sont tes contraints de vitesse et/ou de hardware?
 
parce que le calcul en python d'100,000 solutions prend 0.16 sec. Si apres c'est trop lent, peut être que tes équations ont une certaine structure qui te permettrait d'accélerer cela.

Reply

Marsh Posté le 10-11-2010 à 08:57:48    

snafu8, t'es sur que ton hotspot est la ? ca me parait grandement chelou

Reply

Marsh Posté le 10-11-2010 à 10:26:19    

breizhbugs a écrit :

Et en parallélisant le calcul des 100000?


 
Inutile. Même avec beaucoup de coeurs, son prog va passer plus de temps à gérer les threads qu'à faire les 2-3 opérations.. surtout vu les ALUs des CPUs actuels..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-11-2010 à 10:26:19   

Reply

Marsh Posté le 10-11-2010 à 12:12:58    

esox_ch a écrit :


 
Inutile. Même avec beaucoup de coeurs, son prog va passer plus de temps à gérer les threads qu'à faire les 2-3 opérations.. surtout vu les ALUs des CPUs actuels..


 
y'a toujours la possibilité de splitter en "gros" batch (tout est relatif), et si c'est quelque chose à faire régulièrement et que le thread est précréé, que son architecture matérielle est effectivement threadée, ca peut aider.
 
Sinon, il y a toujours aussi les habituelles questions de cache.
 
Bref, il faudrait déjà un peu mieux connaitre le contexte


---------------
last.fm
Reply

Marsh Posté le 12-11-2010 à 14:10:28    

Effectivement, j'en ai parlé avec Joel F hors forum et c'est la solution qui ressort, faire un batch de 16N systemes et vectoriser tout ca, puis utiliser les résultats des systemes pour traiter des machins. Le truc, c'est que, par systeme, j'ai beaucoup trop de données pour pouvoir faire un seul gros tas et tout traiter en meme temps et que je cherchais une methode purement algo pour en résoudre un seul rapidement.

 

@mr_simon, 0.16 seconde, ç fait 6 itérations par secondes, si on considère que c'est pas le seul processing que je dois embarquer...


Message édité par snafu8 le 12-11-2010 à 14:14:23
Reply

Sujets relatifs:

Leave a Replay

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