Как использовать функции триггера для очень высокой точности в GMP / MPFR в Python и C? - PullRequest
0 голосов
/ 22 сентября 2019

Мне нужно оценить тангенс углов между 0 и pi с шагом pi/20 с точностью до 40 цифр, используя gmpy 2.Я не думаю, что достаточно импортировать pi из numpy или стандартной математической библиотеки.Мне нужно 40 цифр, так что 133 бит точности.Я установил gmpy2.get_context().precision=133

from gmpy2 import mpfr
from numpy import pi

for i in range(1, 11):
    print(tan(mpfr(i*pi/20)))

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Что ж, похоже, это школьное задание, поэтому я просто дам вам несколько советов о том, как решить эту проблему.

  1. Нет ни gmp_sin(3), gmp_cos(3), ни gmp_tan(3) в библиотеке GNU GMP, так что вам придется реализовать их.Для этого вы можете использовать приближение ряда Тейлора, вам нужно будет рассчитать, сколько терминов вы будете использовать, чтобы уменьшить разницу ошибок в соответствии со спецификациями.
  2. Вы можете использовать gmp_sin(3), чтобы угадать приближение к PIдостаточно точный.
  3. Как только у вас это получится, получение вашей таблицы не должно представлять никаких проблем.

Это хорошая задача программирования для студентов по исчислению, не стесняйтесь работать над этим,вы будете удовлетворены результатом, если дойдете до него.

0 голосов
/ 22 сентября 2019

Вы не можете использовать numpy.pi, потому что он не обладает необходимой вам точностью.

К счастью, в gmpy2 есть функция const_pi (https://gmpy2.readthedocs.io/en/latest/mpfr.html#mpfr-functions).

const_pi (...)

const_pi ([precision = 0]) возвращает константу pi, используя указанную точность. Если точность не указана, используется точность по умолчанию.

...