Почему функция синуса numpy в некоторых моментах такая неточная?Python

Программы на Python
Ответить
Anonymous
 Почему функция синуса numpy в некоторых моментах такая неточная?

Сообщение Anonymous »

Я только что проверил функцию синуса numpy. По-видимому, это дает очень неточные результаты вокруг числа Пи.

Код: Выделить всё

In [26]: import numpy as np

In [27]: np.sin(np.pi)
Out[27]: 1.2246467991473532e-16
Ожидаемый результат — 0. Почему numpy настолько неточный?

В некоторой степени , я не уверен, допустимо ли считать вычисленный результат неточным: его абсолютная ошибка находится в пределах одного машинного эпсилона (для двоичного кода 64), тогда как относительная ошибка равна +inf - вот почему я чувствую себя несколько сбитым с толку. Есть идеи?

[Изменить] Я полностью понимаю, что вычисления с плавающей запятой могут быть неточными. Но большинству библиотек с плавающей запятой удается выдавать результаты с небольшим диапазоном ошибок. Здесь относительная ошибка равна +inf, что кажется неприемлемым. Представьте себе, что мы хотим посчитать

Код: Выделить всё

1/(1e-16 + sin(pi))
Результаты будут катастрофически неправильными, если мы будем использовать реализацию numpy.

Подробнее здесь: https://stackoverflow.com/questions/393 ... ome-points
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»