![]() |
|
![]() ![]() ![]() |
|
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
как на программируемом калькуляторе организовать вычисление последовательных десятичных знаков числа пи. Или, по-другому: на моём калькуляторе 10-ти значный дисплей (casio fx-4500p). Как мне получить/увидеть 11-ю, 12-ю и т.д. цифру?
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
вычисляешь число пи, все что видешь переписываешь , на бумажку, и нажимаешь минус и пишешь все что на бумажке , жмешь равно , видишь остальную точность , числа пи на твоем калькуляторе
![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
...и получаю: 3.14159265354-3.141592654=0 всё, что не помещается на дисплее - обрезается |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
Странно, сколько видел инженерных калькуляторов, у всех есть «невидимые» цифры дополнительной точности. А вообще, если не секрет, в чем фишка Пи на калькуляторе считать, и почему не хватает точности? PI=3. 1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172 5359408128 4811174502 8410270193 8521105559 6446229489 5493038196 … ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Еще если я не ошибаюсь, чтсло Пи равно 22/7. Можно от этого плясать.
-------------------- Всем добра ![]() |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 4 Всего: 41 |
||||
|
||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
число пи -трансцендентное, можно его методом монте карло посчитать
-------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
bk99 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Да точности-то, конечно, хватает. Меня, собственно, интересует принципиальная возможность вычисления десятичных знаков на калькуляторе, тех, что не входят в развёртку дисплея. Например: 22/7=3.142857143... и всё, дальше дисплей кончается, а вот какая будет следующая десятичная цифра? Какой бы вы предложили алгоритм вычисления?
кстати, действительно, дробь 22/7 максимально близка к пи, если пользоваться двузначными числами. А если перейти к трёхзначным, то тут будет дробь 355/113 (355/113=3.1415929... отличие только в 7-ом знаке после запятой, у пи вместо 9 стоит 6)
совершенно верно, пи можно вычислять по-разному, например так: пи/4 = 1 - 1/3 + 1/5 - 1/7 + .... или так: пи/2 = 2/1 x 2/3 x 4/3 x 4/5 x 6/5 x 6/7 x 8/7 x 8/9 ... или даже так: пи/4 = arctg(1/2) + arctg(1/5) +arctg(1/8) А можно, вообще, по методу Монте-Карло. Но КАК это сделать с точностью более 10-ти знаков на калькуляторе! |
||||||
|
|||||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
чтобы посчитать пи с помощью метода монте карло, достаточно иголки и линейки и можно без калькулятора обойтись
-------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Применительно к пи метод Монте-Карло реализуется так: грубо говоря, бросается точка на квадрат, в который вписана окружность, и находится отношение числа точек попавших внутрь окружности к общему числу брошеных точек. Т.е. по окончании эксперимента у нас будет два числа - возвращаемся к вопросу как посчитать 22/7 (ну, или 355/113) с точностью до 11-го знака.
Здесь вопрос принципиальный, нужна идея! |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Записывать много придется... а посчитать с любой мыслимой точностью - не проблема... если комп при своих максимум 160битных вычислениях может считать числа гораздо более разрядные нежели 48 - то и калькулятор может.
Добавлено @ 10:20
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Вы совершенно правы, уважаемый Akina. Действительно, реализовать алгоритм деления "столбиком" на калькуляторе довольно просто (здесь я погорячился, это до меня уже потом дошло, что вычислять десятичные знаки 22/7 можно легко - делим нацело, ищем остаток от деления, дописываем справа 0, опять делим нацело, ищем остаток от деления и т.д.). Но вот как быть с иррациональными числами, которые не представляюутся в виде конечной дроби? Как найти пи?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
1) Определить для себя, сколько верных знаков нужно. 2) Составить программу вычисления с заданной точностью + 1 цифра. 3) Оценить количество итераций. 4) Рассчитать количество операций, дающих недостоверную последнюю цифру. 5) Рассчитать потерю точности и "финальную" точность. 6) Если она недостаточна для удовлетворения пункту 1, увеличить точность еще на 1 цифру и повторить от п. 2 - до схождения. 7) Можно начинать расчеты. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
esperant0 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
пи можно и проще посчитать.
есть формула возвращающая х-ю цифру числа пи -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
esperant0, формулу в студию!
-------------------- Всем добра ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
Есть. Для 16-ричной системы счисления… ![]() $$ \pi = \sum_{n = 0}^{\infty}{16^{-n}(\frac{4}{8n + 1} - \frac{2}{8n + 4} - \frac{1}{8n + 5} - \frac{1}{8n + 6})} $$ -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
\frac - это что за функция?
-------------------- Всем добра ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
SoWa, это дробь в записи TeX. \frac{x}{y} означает x/y.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
правильно ли я понял, что n-я цифра pi будет: 4/(8n+1) - 2/(8n+4) - 1/(8n+5) - 1/(8n+6) ? -------------------- qqq |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
для n=1 не работает
![]() -------------------- Всем добра ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
См. этот документ.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Что за формат "ps"
-------------------- Всем добра ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
PostScript, открывать можно Ghostscript + Ghostview.
Впрочем, вот, в аттаче сконвертированный в PDF вариант (сначала переименовать в zip и распаковать). Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Вот еще немного о Пи.
http://algolist.manual.ru/maths/count_fast/pi.php http://arbuz.uz/z_piclub.html Потом его можно считать как (1 - 1/3 +1/5 -1/7 + 1/9 - 1/11 + 1/13....)*4 Добавлено @ 18:21 Void, спасибо! Но жутко заумно там. Мне в 11 классе не все понятно. ![]() Это сообщение отредактировал(а) SoWa - 4.3.2006, 18:20 -------------------- Всем добра ![]() |
|||
|
||||
sdeniss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: нет Всего: 1 |
пи -- НЕ рациональное число и НЕ может быть представимо в виде дроби Ну в приницпе можно воспользоваться тем что sin(pi) = 0, d(sin(x))/dx|x = 0 = 1; т.е количество не равных 0 знаков при вычислении синуса и количество верных знаков в пи должно должно совпадать особенно при малых отклонениях от пи. |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Это я знаю. Это не точное число. Я дал ссылки на интересные ресурсы.
-------------------- Всем добра ![]() |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
22/7 на калькуляторе я могу вычислить с какой угодно точностью (100, 1000 знаков и т.д.), ну а как вычислить-то на калькуляторе число пи?
|
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
(1 - 1/3 +1/5 -1/7 + 1/9 - 1/11 + 1/13....)*4
-------------------- Всем добра ![]() |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 4 Всего: 41 |
Неплохо, но значопеременные вычисления всегда таят погрешности, нужно будет брать достаточное их число.
|
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Как вы себе практически это представляете? Вычислить сначала 1000 знаков у каждой дроби (1/3, 1/5, 1/7 и т.д.), а потом сложить 1000 таких тысячезначных чисел? А после этого думать сколько же верных цифр я получил - 100? 500? 900? Нереальный алгоритм, во всяком случае для калькулятора. |
|||
|
||||
sdeniss |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 3.3.2006 Репутация: нет Всего: 1 |
Их можно привести к общему знаменателю -- знаменателю последнего числа, которое ты берешь для вычисления, тогда у тебя получится деление 2-х больших чисел друг на друга -- точность можешь оценить ![]() поскольку это по сильно напоминает разложение арккоссинуса в ряд, то точность тоже можно оценить |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
bk99, Какая точность тебя будет удовлетворять? Ты это вычисляеш ради любопытства или Какая то задача перед тобой стоит. Для повседневных вычислений в принципе можно использовать константу с точностью до 6-7 знака.
Если хочеш большую точность, нырни по ссылке на сайт "Арбуз", который порекомендовал SoWa. Там помоему до 1000 знака после запятой точность. Это сообщение отредактировал(а) Fin - 5.3.2006, 21:49 -------------------- Пролетал мимо. |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Ну что ж, еще раз...
У меня есть калькулятор. Программируемый. Casio fx-4500p. У него 10-ти разрядный дисплей и примерно 1 КБ памяти. На нем можно писать разные несложные програмки, типа: разложение числа на простые множители, поиск простых чисел, поиск корней квадратного уравнения и т.п. Например, програмка, которая выдаёт по порядку десятичные знаки частного двух чисел занимает всего 54 байта. Допустим, вы вводите 355/113, нажимаете кнопку, а на дисплее высвечиваeтся: "целая часть=3", а далее по очереди десятичные знаки после запятой - "1, 4, 1, 5, 9, 2, 9, 2, 0, 3, 5, 3, 9, 8, 2, 3, 0, 0, 8, 8, 4, 9, 5, 5, 7, 5, 2" ну и так далее, хоть миллион знаков, пока батарейки не кончатся. Так вот, у меня возник вопрос: можно ли таким же образом вычислять десятичные знаки числа пи (а в общем виде, любого иррационального или трансцендентного числа - числа, которое представимо, допустим, в виде бесконечного ряда). Но для этого нужно придумать какой-нибудь РЕАЛьНЫЙ алгоритм, который можно было бы реализовать на моем калькуляторе. PS Конечно, скажут, баловство это, программирование на калькуляторе. Несолидно! Отвечу - да, баловство! Но, тем не менее, если сможете предложить алгоритм, буду очень благодарен. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
bk99, а какие команды можно использовать в программах для твоего калькулятора? Хотя бы примерный список.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Fin, там до 10000 знаков. Да! Какие команды? Хотя лучше бы калькулятор с дисплеем.ю где можно пролистывать результат.
-------------------- Всем добра ![]() |
|||
|
||||
bk99 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 1.3.2006 Репутация: нет Всего: нет |
Ну-у, список комманд... Я же не программу прошу написать, а алгоритм придумать. Что-то типа того, что я написал выше для програмки, которая выдаёт по порядку десятичные знаки частного двух чисел:
Ну а команды на калькуляторе самые нехитрые: - можно организовывать циклы - можно делать условные/безусловные переходы - можно из программы ссылаться на подпрограмму ну и по мелочи: выделять целую/дробную часть числа, возводить в любую степень (целую или дробную), ну там логарифмы-синусы-косинусы всякие туда и обратно (обычные и гиперболические), работа с обычными дробями и т.п. Будете смеяться - даже интегралы численно берет. От души всего навшивали... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |