Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Аппроксимация числа Пи  (Прочитано 6038 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ywaw

  • Автор темы
  • Гость
Аппроксимация числа Пи
« : 02 Июня 2011, 15:10:30 »
Числа Пи можно с высокой точностью представить дробью пи = 355/113;
Однако в терминале запускаю python  и получаю:
>>> 355.0/113
3.1415929203539825

Затем запускаю консольный калькулятор bc -l  и получаю:
355/113
3.14159292035398230088

Расхождение в 16-м знаке после зяпятой.

Вы не знаете почему так?


andrey_p

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #1 : 02 Июня 2011, 15:11:41 »
Знаем.  :D

А так вообще ужас:
>>> "%.50f" % (355.0/113)
'3.14159292035398252096456417348235845565795898437500'
...
scale=50
355/113
3.14159292035398230088495575221238938053097345132743

ЗЫ Подсказка: man bc
« Последнее редактирование: 02 Июня 2011, 15:26:07 от andrey_p »

Оффлайн Dixi257

  • Активист
  • *
  • Сообщений: 287
    • Просмотр профиля
Re: Аппроксимация числа Пи
« Ответ #2 : 03 Июня 2011, 00:44:53 »
А ничего, что рациональное приближение 355/113 даёт только 6 (шесть) верных цифр?

ywaw

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #3 : 03 Июня 2011, 19:28:28 »
А ничего, что рациональное приближение 355/113 даёт только 6 (шесть) верных цифр?
Для инженерных расчетов и 4-х значащих цифр хватит за глаза. Однако малая ошибка имеет свойство накапливаться.
Есть разделы физики, где ждали огурец - вдруг появился помидор.... :o

andrey_p

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #4 : 03 Июня 2011, 19:53:29 »
До сих пор загадка?

Питон использует стандартные 64-х разрядные числа с плавающей точкой. bc же - "arbitrary precision numbers".

ywaw

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #5 : 03 Июня 2011, 20:26:25 »
До сих пор загадка?

Питон использует стандартные 64-х разрядные числа с плавающей точкой. bc же - "arbitrary precision numbers".
Вот и я об этом задумался... ??? ??? Видимо какие-то тонкости в реализации??

andrey_p

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #6 : 03 Июня 2011, 20:39:43 »
Да не тонкости - а две совершенно разные реализации. Поскольку числа с плавающей точкой по определению не могут быть точными, то может быть только предел точности.  Сейчас практически везде в компьютерах есть встроенная поддержка для операций с такими числами и в 99 процентах случаях используется стандарт, разработанный в свое время Интел. Чаще всего используются числа типа double - 64-битные. Точность при этом, как раз, около 16-17 десятичных значимых знаков. Питон их и использует.

Но существуют специализированные библиотеки, которые за счет памяти и скорости могут позволить себе пользовательскую точность любого разумного предела (увеличивая количество битов на число). bc использует одну из них.

Так что вывод: bc - точнее. Впрочем и для Питона есть специальные библиотеки, реализующие то же самое.

ЗЫ А вообще операции с плавающей точкой - целая область в computer science. Одна из сложнейших. Но для простых смертных вполне хватает стандартных double. Как правильно заметил, в инженерии 5 (3.1416) значащих цифр для пи - за глаза.
« Последнее редактирование: 03 Июня 2011, 20:45:53 от andrey_p »

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Аппроксимация числа Пи
« Ответ #7 : 03 Июня 2011, 20:59:26 »
pi>>> 265231984363320332474665054275863923  /  84425962754989445056074374499532800
 :coolsmiley:
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

ywaw

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #8 : 03 Июня 2011, 21:05:09 »
Да согласен bc точнее. Калькулятор и есть калькулятор. Решает одну конкретную задачу - точно вычислить.

andrey_p

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #9 : 04 Июня 2011, 05:45:26 »
pi>>> 265231984363320332474665054275863923  /  84425962754989445056074374499532800
 :coolsmiley:

А так и цифр меньше и точнее (еще и сократить можно):
>>> 3141592653589793238.0 / 1000000000000000000

 ;)

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Аппроксимация числа Пи
« Ответ #10 : 04 Июня 2011, 19:48:54 »
pi>>> 265231984363320332474665054275863923  /  84425962754989445056074374499532800
 :coolsmiley:

А так и цифр меньше и точнее (еще и сократить можно):
>>> 3141592653589793238.0 / 1000000000000000000

 ;)

Тогда 314/ 100 точнее чем  355.0/113
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

Оффлайн Dixi257

  • Активист
  • *
  • Сообщений: 287
    • Просмотр профиля
Re: Аппроксимация числа Пи
« Ответ #11 : 05 Июня 2011, 00:17:55 »
314/ 100 даёт 3(три) верные цифры, 355/113 даёт 6(шесть) верных цифр

ywaw

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #12 : 05 Июня 2011, 00:24:41 »
314/ 100 даёт 3(три) верные цифры, 355/113 даёт 6(шесть) верных цифр
Вы открытие сделали!
На Форте немного попрограммируйте - поймёте что такое целочисленная арифметика, и что с её помощью круто можно сделать.

Оффлайн Dixi257

  • Активист
  • *
  • Сообщений: 287
    • Просмотр профиля
Re: Аппроксимация числа Пи
« Ответ #13 : 05 Июня 2011, 00:28:34 »
Просветите же меня, о великий Гуру, что же такое целочисленная арифметика?

ywaw

  • Автор темы
  • Гость
Re: Аппроксимация числа Пи
« Ответ #14 : 05 Июня 2011, 00:41:48 »
Просветите же меня, о великий Гуру, что же такое целочисленная арифметика?
[/quote
Я не есть Гуру
Просто по своей природе комп быстрее всего вычисляет целые числа. Возвращаюсь к числу Пи - 355/113
но лучше 355000/113
Когда много вычислений - float не рулит. Читайте про forth -  язык не хилый - применялся для обработчиков датчиков для Шатла.

Пользователь решил продолжить мысль 05 Июня 2011, 00:58:43:
Применялся для обработчиков датчиков для Шатла, а так же для русских подводных лодок - система управления.
« Последнее редактирование: 05 Июня 2011, 00:58:43 от ywaw »

 

Страница сгенерирована за 0.037 секунд. Запросов: 25.