Тема исследования: Как выбор пути решения влияет на результат?
Составили компьютерную программу , включающую различные схемы вычисления
Анализируя полученные результаты, делаем выводы, что вычисление слева направо дает более точный результат. Т.е. схема вычисления влияет на результат.
Гипотеза: вычисление значения суммы или произведения конечных числовых рядов более точно при схеме вычисления "слева направо"
Проверили наше предположение еще на одном примере. Пример ряда взят из задачи про Ахилла и черепаху.
1 +1/2 + 1/4 + 1/8 +1/16 +...+1/(2^n)
Проведенный компьютерный эксперимент показал, что и при работе с данным рядом более точные результаты получаются при схеме "слева направо"
Вывод: полученные эксперименты нашей команды, показывают преимущества схемы "слева направо". Пока у нас нет ни одного результата, где лучшей бы была схема "справа налево", что никак не доказывает, что таких случаев нет.
Познакомившись с результатами работы других команд, видим, что при работе с другими рядами, лучшей является схема "справа налево"
На данном этапе, еще не удалось установить, почему схема вычисления "слева направо" в рассмотренных нами случаях работает точнее, а при других ситуациях преимущество у схемы "справа налево".
Гипотеза о преимуществе схемы "слева направо" не подтвердилась.
Правила получения точного результата:
(в разработке)
Я обнаружил, что многие на самом деле не вникают, что такое числа с плавающей запятой, поэтому есть смысл вкратце объяснить. Я пропущу здесь мельчайшие детали о битах, INF, NaN и поднормалях, а вместо этого покажу несколько примеров чисел с плавающей запятой в base-10. Всё то же самое применимо к двоичным числам.
Вот несколько примеров чисел с плавающей запятой, все с семью десятичными разрядами (это близко к 32-битному
1.875545 · 10^-18 = 0.000 000 000 000 000 001 875 545
3.141593 · 10^0 = 3.141593
2.997925 · 10^8 = 299 792 500
6.022141 · 10^23 = 602 214 100 000 000 000 000 000
Выделенная жирным часть называется мантиссой, а выделенная курсивом — экспонентой. Вкратце, точность хранится в мантиссе, а величина в экспоненте. Так как с ними работать? Ну, умножение производится просто: перемножаем мантисссы и складываем экспоненты:
1.111111 · 10^42 · 2.000000 · 10^7
= (1.111111 · 2.000000) · 10^(42 + 7)
= 2.222222 · 10^49
Сложение немного хитрее: чтобы сложить два числа разной величины, сначала нужно сдвинуть меньшее из двух чисел таким образом, чтобы запятая находилась в одном и том же месте.
3.141593 · 10^0 + 1.111111 · 10^-3 =
3.141593 + 0.0001111111 =
3.141593 + 0.000111 =
3.141704
Заметьте, как мы сдвинули некоторые из значимых десятичных знаков, чтобы запятые совпадали. Другими словами, мы теряем точность, когда складываем числа разных величин.
Ссылка на источник
Вывод: при сложении нужно использовать схему - справа налево, а при умножении - слева направо.
Бонусное задание
Объект исследования: компьютерная арифметика.
Цель исследования: Выявить влияние пути решения на результат компьютерных вычислений.
Задачи исследования:
- Развить навыки выбора метода решения задачи.
- Научиться составлять план проведения экспериментальной работы.
- Научиться проводить компьютерный эксперимент.
- Научиться анализировать результаты экспериментальной работы.
Действуем согласно, заданному плану
Составили компьютерную программу , включающую различные схемы вычисления
Анализируя полученные результаты, делаем выводы, что вычисление слева направо дает более точный результат. Т.е. схема вычисления влияет на результат.
Гипотеза: вычисление значения суммы или произведения конечных числовых рядов более точно при схеме вычисления "слева направо"
Проверили наше предположение еще на одном примере. Пример ряда взят из задачи про Ахилла и черепаху.
1 +1/2 + 1/4 + 1/8 +1/16 +...+1/(2^n)
Проведенный компьютерный эксперимент показал, что и при работе с данным рядом более точные результаты получаются при схеме "слева направо"
Вывод: полученные эксперименты нашей команды, показывают преимущества схемы "слева направо". Пока у нас нет ни одного результата, где лучшей бы была схема "справа налево", что никак не доказывает, что таких случаев нет.
Познакомившись с результатами работы других команд, видим, что при работе с другими рядами, лучшей является схема "справа налево"
На данном этапе, еще не удалось установить, почему схема вычисления "слева направо" в рассмотренных нами случаях работает точнее, а при других ситуациях преимущество у схемы "справа налево".
Гипотеза о преимуществе схемы "слева направо" не подтвердилась.
Правила получения точного результата:
(в разработке)
- Упростить выражение, если возможно.
- Разработать не менее двух схем вычисления
- Проанализировать работу каждой схемы
- Выбрать "лучшую" схему для данной задачи
Как же выбрать правильную схему?
Приложение: Что такое число с плавающей запятой?
Я обнаружил, что многие на самом деле не вникают, что такое числа с плавающей запятой, поэтому есть смысл вкратце объяснить. Я пропущу здесь мельчайшие детали о битах, INF, NaN и поднормалях, а вместо этого покажу несколько примеров чисел с плавающей запятой в base-10. Всё то же самое применимо к двоичным числам.
Вот несколько примеров чисел с плавающей запятой, все с семью десятичными разрядами (это близко к 32-битному
float
).1.875545 · 10^-18 = 0.000 000 000 000 000 001 875 545
3.141593 · 10^0 = 3.141593
2.997925 · 10^8 = 299 792 500
6.022141 · 10^23 = 602 214 100 000 000 000 000 000
Выделенная жирным часть называется мантиссой, а выделенная курсивом — экспонентой. Вкратце, точность хранится в мантиссе, а величина в экспоненте. Так как с ними работать? Ну, умножение производится просто: перемножаем мантисссы и складываем экспоненты:
1.111111 · 10^42 · 2.000000 · 10^7
= (1.111111 · 2.000000) · 10^(42 + 7)
= 2.222222 · 10^49
Сложение немного хитрее: чтобы сложить два числа разной величины, сначала нужно сдвинуть меньшее из двух чисел таким образом, чтобы запятая находилась в одном и том же месте.
3.141593 · 10^0 + 1.111111 · 10^-3 =
3.141593 + 0.0001111111 =
3.141593 + 0.000111 =
3.141704
Заметьте, как мы сдвинули некоторые из значимых десятичных знаков, чтобы запятые совпадали. Другими словами, мы теряем точность, когда складываем числа разных величин.
Ссылка на источник
Вывод: при сложении нужно использовать схему - справа налево, а при умножении - слева направо.
Бонусное задание
Хорошая работа, важные выводы. Однако, пример суммирования в команде TheBestTeam показывает, что лучшей является схема вычислений справа налево. Есть над чем подумать... Успешной работы! Новых открытий!
ОтветитьУдалитьДа, да, как-то не внимательно изначально прочитала. Исправила.
УдалитьУважаемые Экспериментаторы, большое спасибо за своевременное, качественное и 100%-е выполнение заданий проекта. Вы являете собой пример добросовестного отношения к работе, умения взаимодействовать в команде, спланировать и организовать свою деятельность.
ОтветитьУдалитьСпасибо!
Удалить