0
votes

Pourquoi Python n'est-il pas de résoudre cette matrice correctement?

J'essaie d'expérimenter avec des matrices pour résoudre des expressions polynomiales et cela a fonctionné jusqu'à présent.

dans mon code: xxx

tableau A est juste le Premières valeurs requises pour résoudre un quadratique. Array B est pour X ^ 2 + 1. Donc, la sortie de la fonction devrait être la suivante:

[1. 0. 1.]

Au lieu de cela, je reçois: [1.00000000E + 00 -8.32667268E-16 1.0000000000E + 00]

Je reçois le e + 00, mais pourquoi la deuxième valeur "-8.32667268E-16" ?? J'ai vérifié mes mathématiques et il devrait être x ^ 2 + 1.


5 commentaires

Jusqu'à arrondi Erreur, que est zéro.


Comprenez-vous ce que 1e-16 représente?


-8e-16 est un très petit nombre. Je pense qu'un point d'arrondi du point flottant s'est produit. Êtes-vous sûr d'avoir besoin de résoudre cette expression polynomiale avec 16 chiffres de précision?


Vous pourriez être intéressé par l'utilisation d'arithmétiques exactes au lieu d'un point flottant, qui est approximatif. Je n'ai pas vérifié, mais il semble probable que sympty.org) puisse faire de l'arithmétique avec des nombres rationnels, ce qui est exact. Surtout si vous travaillez avec des polynômes, la différence entre l'arithmétique exacte et approximative peut être substantielle.


Pour des solutions exactes, regardez SydMy


3 Réponses :


2
votes

-8.326672688e-16 = -0.000000000000000008326 ... c'est un point d'arrondi de point flottant. Voir La documentation .


0 commentaires

2
votes

Bien techniquement, c'est -8x10 ^ (- 16) ~ = 0, d'où la réponse est correcte. Bien que vous puissiez le formater exactement 0 à l'aide d'une fonction sigmoïde ou simplement à l'aide du théorème de Rolle.


0 commentaires

0
votes

Parce que pendant les opérations matricielles, les chiffres sont légèrement arrondis. Essayez: xxx

sortie: xxx


2 commentaires

Y a-t-il un moyen de l'arrondir à un point décimal spécifique?


Oui: rond (n, 2) est la valeur par défaut, vous pouvez modifier le numéro.