|
Нарушитель
|
|
| 19.05.2022, 23:51 | |
|
0
|
|
| 19.05.2022, 23:51 | |
|
Ответы с готовыми решениями:
47
Нужна девушка -программист на пару часов:) В сообщении может содержаться время в формате чч:мм. Уменьшите время на n часов с какой точностью может быть определена энергия фотона |
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||
| 20.05.2022, 00:15 [ТС] | ||
|
Alexis333, "дальнейшее увеличение числа итераций в 10 раз (до 20000) добавляет ещё 3 значащие цифры,"
Какой у вас получился ответ? Совпали ли три дополнительные цифры с числом пи, или результат пал жертвой округлении, наличие и размер которых программист не заметил? Добавлено через 3 минуты "два часа работы" имелось в виду два часа усилий программиста, чтобы найти (не угадать) следующую цифру-две. Добавлено через 17 минут Это случилось из-за целочисленного деления. После исправления ошибки получил ответ 3.38974693269176 (два миллиона циклов) Это не похоже на число пи, хотя первая цифра совпадает.
0
|
||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
||
| 20.05.2022, 00:16 | ||
|
0
|
||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||||||||
| 20.05.2022, 00:23 [ТС] | ||||||||
|
Тем не менее, я скомпилировал и запустил этот код. Получил следующий результат. Числа Пи не вижу.
Добавлено через 1 минуту Если у вас есть более новая версия которая работает правильно, можно ли ее увидеть?
0
|
||||||||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
||||||
| 20.05.2022, 00:25 | ||||||
|
Я набирал вручную, т.к. компилятор на другом компе, наделал ошибок.
Вот исправленный вариант:
0
|
||||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||
| 20.05.2022, 00:35 [ТС] | ||
|
Вам удалось получить столько же правильных цифр, сколько китайскому математику 2500 лет назад. Однако, на этот момент китайский математик еще впереди вас: он знал что первые восемь цифр верны, а у вас пока нет критерия чтобы узнать сколько верных цифр выдала ваша программа. (подсматривать ответ не разрешается, нужно самому определить сколько цифр являются верными) Добавлено через 3 минуты Не огорчайтесь. Программу которую я привел в начале темы содержит похожую ошибку, я как раз на нее хотел обратить внимание. (С какой точностью современный программист может посчитать число Пи за разумное время (пару часов)) Кто-то еще хочет попробовать свои силы в вычислении *верных* первых десяти цифр Пи?
0
|
||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
|
| 20.05.2022, 00:38 | |
|
QueryMonkey, ну так Вы замените условие выхода while (j<200) на while(j<20000)
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|||||||
| 20.05.2022, 00:54 [ТС] | |||||||
Когда она перестала меняться "некоторое время", или есть более конкретный критерий? Особая проблема если цифра равна 9 или за ней стоит девятка. Поскольку последовательность мотонно растет, где гарантия что 3.141.....39... не превратится в 3.141......40..... через несколько итераций?
0
|
|||||||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
|||||||
| 20.05.2022, 01:21 | |||||||
Сообщение было отмечено QueryMonkey как решение
Решение
Более строго, в оценке погрешности нужно учитывать ошибки округления, но в первом приближении пойдёт и так. Думаю понятно, что больше 15 верных цифр с числами double получить никак не получится. Добавлено через 19 минут На всякий случай сообщаю, что это был ряд Нилаканта, сходящийся намного быстрее ряда Лейбница.
1
|
|||||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|||||||
| 20.05.2022, 06:21 [ТС] | |||||||
|
Спасибо, теперь вижу что разница между верхним и нижним пределом не превышает 4/k3.
А сколько вообще можно ожидать надежных цифр от double? Там мантисса 53 бита, т.е. чуть-чуть не дотягивает до 16 десятичных. Получилось вымучать 20 цифр используя long double (в моем компиляторе gcc это 128 бит но арифметика, увы, 96 бит)
Суммирование сделал задом наперед, чтобы уменьшить эффект округления при сложении слишком разных чисел. ~/code$ ./a.out 3.14159265358979323843 3.14159265358979323851, sizeof(long double) = 16 1.00000000000000000000000000000000000000 00 Добавлено через 3 минуты Если вы ищете задачки по численным методам потренировать мозг, у меня скоро будут еще..
0
|
|||||||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
||||||
| 20.05.2022, 12:24 | ||||||
|
У double 15-16 значащих десятичных цифр, с представленным выше алгоритмом все они получились значимыми. В long double, (в Вашем 16 байтовом варианте), 33 значащих цифры. С учётом установленной ранее скорости сходимости, для получения 33 значащих цифр потребуется 1 трлн. итераций. Ожидаемое накопление ошибки при суммировании оценивается как
В случае с double терялось максимум 2-4 знака, а как показывает опыт - ещё меньше. Попробуйте вот такой вариант, точность должна быть хорошей
1
|
||||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||
| 20.05.2022, 17:56 [ТС] | ||
|
Мой 16-байтовый long double похоже не хранит 128-битовое число, просто выравнен на границе. Триллион итераций на моем компе займет несколько часов, но я попробовал 10 миллиардов. 3.14159265358979323846264338327950288419 716 <- известные числа Пи из справочника 3.14159265358979323851280895940619 <- распечатка из программы (10Г цикл), 19 верных цифр 5.000000e-31 <- оценка точности из программы, намекает что 30 цифр должны быть верны Запустил 100 млрд цикл, жду. Добавлено через 32 минуты Результат для 100Г цикла, первая строчка для сравнения 3.14159265358979323846264338327950288419 716 <- известные числа Пи из справочника 3.14159265358979323851280895940619 <-- то же число, что и для 10 млрд цикла 5.000000e-34 real 18m1.635s user 17m46.035s sys 0m1.651s Как я вижу из этих результатов, 19 значащих цифр это ограничение 80-битной арифметики х87, где мантисса 64+1 бит. Более длинных плавающих в моем компиляторе нет, поэтому это максимум. Можно выжать еще одну цифру как я сделал в примере, если не добавлять 3.0. Добавление этой константы убивает одну цифру точности.
0
|
||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
||||||
| 20.05.2022, 18:32 | ||||||
|
К большому соалению у меня VC++ и нет long duble. Но я попробовал через целочисленную арифметику, вот такой код:
Добавлено через 23 минуты Нашел проблему, идёт накопление ошибок при целочисленном сложении. Если в приведённом выше алгоритме уменьшить число итераций до 100 млн. и увеличить переменную u до 10 млрд., то точность возрастает до 28 знаков, а время работы уменьшается с 1 минуты до 6 сек. QueryMonkey, не нужно стремиться увеличить число итераций, с определённого момента из-за накопления ошибок начинает только падать.
1
|
||||||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
||
| 20.05.2022, 19:05 [ТС] | ||
|
Я согласен что через целочисленную арифметику можно сделать лучше, т.к. ошибки округления под контролем программиста.
1.0 + 1e-30 == 1.0, т.к. малый довесок к единице теряется без следа, если превосходит разрядность мантиссы. P.S. Да, я тоже прочитал что MSVC "схитрил" и поленился сделать более длинный тип.
0
|
||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
||
| 20.05.2022, 19:26 | ||
|
0
|
||
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|
| 20.05.2022, 20:07 [ТС] | |
|
Alexis333, я как раз писал с unsigned __int128 когда ударила молния и в моем хуторе пропал свет.
Упса хватило только чтоб сервак потушить.
0
|
|
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
|
| 20.05.2022, 20:38 | |
|
Жаль, на самом интересном месте ...
Кстати, unsigned для PiL лучше не используйте, по ходу работы он может быть и отрицательным.
0
|
|
|
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
|
|||||||
| 21.05.2022, 04:06 [ТС] | |||||||
|
В какой-то момент я обнаручил что монотонно растущий ряд (я преобразовал формулу что все члены положительные) превысил Пи из справочника. Поскольку у меня целочисленная int128 арифметика и нет округлений, такого быть не должно. Начал копать, перепроверять арифметику, докопал. Нашел вот такой сюрприз:
А попытка инициализировать через экспоненту не дала предупшреждений, но присвоила не то, что я ожидал: 1000000000000000042420637374017961984 Близко, но не совсем 1е36. Из-за этого у меня число Пи зашкаливало в районе 7 миллионного цикла.
0
|
|||||||
|
496 / 543 / 131
Регистрация: 31.10.2016
Сообщений: 4,397
|
|
| 21.05.2022, 06:24 | |
|
QueryMonkey, какая в итоге получилась точность?
0
|
|
| 21.05.2022, 06:24 | |
|
Путник двигался t1 часов со скоростью v1, затем t2 часов- со скоростью v2 и t3 часов со скоростью v3. За какое время он одолел первую половину пути Какой блок питания брать на замену? такой же как стоял или уже есть какой современный?
Посчитать число Pi используя разложения с заданной точностью
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|