2017-03-15 1 views
-1

J'écris un programme qui prend des données numériques x et y sous la forme d'un tableau numpy, puis l'intègre (numériquement) sur une région de x. Je l'ai fait et maintenant je commence à m'interroger sur la précision.Sommation précise avec numpy

J'ai remarqué que math.fsum() corrige certaines erreurs de manière à ce que sum() ne le fasse pas - numpy.sum apporte-t-il également ces corrections?

Si j'écris sum = numpy.sum(array), ou quelque chose de similaire, le résultat (somme) est-il aussi précis que possible? Je somme des milliers de points de données qui sont eux-mêmes le produit de plusieurs opérations, donc de petites erreurs pourraient s'accumuler. Je ne suis pas assez versé en Python pour savoir s'il y a un module mathématique plus précis que je devrais utiliser lorsque l'exactitude de plusieurs décimales est importante.

Répondre

1

Non, numpy.sumne fait pas fait les corrections math.fsum fait. Il utilise pairwise summation, ce qui n'est pas aussi bon que les techniques math.fsum utilise, même si je ne suis pas sûr que ce soit tellement pire.

+0

Il est pire s'il y a beaucoup de petits summands, ce qui est exact de l'OP cas d'utilisation. 'math.fsum' est définitivement conseillé. –