Организация параллельных потоков. Часть 2 | страница 29



На досуге можно попробовать сделать пакетный файл более компактным. При этом придётся учесть такие условия:

— количество итераций — целое число;

— шаг приращения счётчика цикла — постоянный;

— шаг приращения числа итераций растёт логарифмически.

Конечно, это будет задачей повышенной сложности.

Нам сейчас пока что нужно просто посмотреть на поведение программы. Мы обойдёмся таким грубым решением, как шесть строчек, прописанных вручную.


Рис. 6.4. Пакетный файл


Задание. Составьте пакетный файл (рис. 6.4) и запустите его в командной строке.


Запустим пакетный файл и перенаправим вывод в файл.

Загрузим файл в пакет Excel и проведём анализ полученных результатов.

Начнём с оценки интеграла.

Построим график в логарифмическом масштабе. Находим десятичный логарифм числа итераций.

Рассмотрим полученный график (рис. 6.5).

Значение быстро растёт от 1 до 10 прямоугольников.

Затем значение стабилизируется.

Затем значение начинает падать после миллиона прямоугольников (то есть 10 в шестой степени). Это соответствует нашим прогнозам погрешности.


Рис. 6.5. Значение интеграла


Задание. Запустите пакетный файл, загрузите данные в Excel и постройте график (рис. 6.5)


Продолжим наш анализ результатов многократных прогонов.

Построим график продолжительности вычислений в зависимости от числа итераций (прямоугольников). Зависимость практически линейная (рис. 6.6).


Рис. 6.6. Время вычислений


Задание. Постройте график (рис. 6.6) и опишите его в отчёте.


Теперь рассмотрим погрешность вычислений.

Сравним полученные оценки с аналитическим решением (рис. 6.7).

Построим график погрешности в зависимости от логарифма числа итераций (прямоугольников).

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


Рис. 6.7. Погрешность расчётов


Задание. Постройте график погрешности (рис. 6.7) и опишите его в отчёте.


Если внимательно рассмотреть таблицу значений погрешности, можно обнаружить ещё кое-что.

Особенно хорошо видна закономерность в логарифмическом масштабе. На таких графиках экспонента превращается в прямую линию.

Задание. Постройте график логарифма ошибки от логарифма числа итераций и найдите число итераций, начиная с которого начинает возрастать погрешность.

6.3.2. Двойная точность

Повторим исследование погрешности вычислений.

Определим наши переменные как вещественные с двойной точностью double.

Повторим наше исследование и построим такие графики, как и в предыдущем разделе (рис. 6.8).