5. Пользовательский интерфейс программы

Тема №1 «Погрешности» на практике может осваиваться с помощью двух работ: №1а «Ряды» и №1б «Дифференцирование».

5.1. Погрешности вычислений: ряды

Окно данной лабораторной работы делится на две части (см. рис. 1) – панель редактирования входных параметров слева и панель графиков справа. На панели графиков сверху расположен график заданной функции (синим) и ее ряда Тейлора (красным), а снизу – график ошибки, которая вычисляется как разность кривых на верхнем графике (черным), а также оценивается по величине первого отброшенного члена ряда (красным). Под нижним графиком показывается максимальная (среди всех x) ошибка и ее оценка по максимуму модуля отброшенного члена.

Рис. 1

В списке «Разлагаемая функция» пользователь может не только выбрать одну из имеющихся там функций, но и ввести с клавиатуры свою сложную функцию, зависящую от x (так же устроен ввод функций и в следующих лабораторных работах). Следует только заметить, что далеко не все функции имеют «красивые» производные высоких порядков, поэтому вычисление, скажем, 20-ти членов ряда Тейлора для них может занимать существенное время и даже приводить к ошибкам (которые связаны с тем, что программа пытается упрощать получающиеся формульные выражения). Для иллюстрации того, насколько «красивые» производные имеет введенная функция, под ней показывает формульное представление ее разложения в ряд Тейлора до 6-го члена. (Если задана отличная от нуля точка разложения, формулы получаются намного длиннее, и поэтому показывается всего 3 члена ряда).

Примечание для преподавателей. Если расчет занимает слишком много времени, можно его остановить (нажав на Ctrl+Q). Однако этого нельзя сделать в процессе символьного вычисления и упрощения формулы ряда (сложной) функции. Если скорость вычислений (и возможность их остановить в любой момент) важнее возможности видеть формулу ряда, то можно в файле варианта сделать параметр hideComplexSeries равным true, и тогда формула будет показываться только для элементарных функций (для которых формула ряда до 6-го члена вычисляется почти мгновенно). Следует также заметить, что если формула ряда сложной функции показывается, то ради экономии времени она вычисляется в нуле (независимо от заданной пользователем точки разложения); впрочем, на графики это никак не влияет.

Основные параметры, которые пользователь обычно варьирует в процессе выполнения задания – это длина интервала x, число десятичных разрядов в числе и число членов ряда. Если включен режим «Обеспечивать заданную точность», то вместо числа членов ряда следует вводить точность, а число членов при каждом x программа автоматически подбирает по заданной точности (точность сравнивается с оценкой ошибки по модулю первого отброшенного члена). В этом режиме под нижним графиком показывается также максимальное (соответствующее точке x, наиболее удаленной от точки разложения) число членов ряда, потребовавшееся для обеспечения нужной точности. Если погрешности округления не влияют на результаты, то ошибка и ее оценка по величине отброшенного члена с хорошей точностью совпадают (как в максимуме, так и в каждой точке графика).

Рис. 2

На рис. 2 показана требуемая в задании ситуация, когда при некоторой длине интервала за счет увеличения числа членов ряда уже невозможно добиться нужной точности. Точнее, можно добиться того, чтобы оценка ошибки по отброшенному члену ряда была меньше заданной точности, но это лишь оценка. Видимый на рисунке случайный характер настоящей ошибки (т.е. разности между функцией и ее рядом Тейлора) свидетельствует о том, что причина этого эффекта – случайные по своей природе погрешности округления при суммировании ряда.

В такой ситуации (когда проявляются ошибки округления), на результаты можно повлиять с помощью выбора одного из 5 пунктов списка «Суммирование», определяющих последовательность суммирования членов ряда.

5.2. Погрешности: численное дифференцирование

Данная лабораторная работа, имеющая номер 1б, с точки зрения интерфейса лишь незначительно отличается от предыдущей работы по близкой теме (№1а). Принципиальные отличия проявляются только в отсутствии режима «Обеспечивать заданную точность» и в наличии третьего (нижнего) графика.

Третий график – это график зависимости ошибки (в середине указанного интервала x) от шага дифференцирования – в двойном логарифмическом масштабе. Соответственно, в число интегральных результатов (показываемых под графиками) в данной работе входит не только максимальная ошибка (среди всех значений x при данном шаге), но и оптимальный шаг – шаг, при котором погрешность минимальна (при вышеуказанном x, т.е. в середине интервала), а также минимальная ошибка, достигаемая при этом шаге. Другими словами, оптимальный шаг – это абсцисса и ордината точки минимума на третьем графике. Примечание. Значение минимальной ошибки, найденное таким графическим образом, имеет случайную составляющую, т.к. существенный вклад в него вносит случайная по своей природе погрешность округления. Вследствие этого иногда могут получаться значения минимальной ошибки, на несколько порядков меньшие, чем должно быть по теории (пример этого приведен рис. 3).

Для анализа зависимости погрешности от шага (для ее сравнения с теоретической зависимостью) также полезен пункт контекстного меню «Измерить наклон», который имеется только для третьего графика (наклон графика в двойном логарифмическом масштабе равен степени в данной зависимости).

Для выбора формулы численного дифференцирования достаточно ввести ее порядок аппроксимации n (1, 2, 3 или 4; для изменения порядка удобно также нажимать стрелку вверх или вниз на клавиатуре). При изменении n показывается формула дифференцирования n-го порядка, а также модуль (n+1)–й производной функции в середине заданного отрезка (для получения теоретических оценок с целью сравнения с третьим графиком).

Примечание для преподавателей. Для нечетных порядков, конечно, имеются по две формулы дифференцирования (и они симметричны относительно точки, в которой рассчитывается производная). По умолчанию используется «левая разность» (см. точный вид формулы, показываемый программой), но если по почему-либо нужно использовать «правую разность» – в файле варианта следует изменить на false значение параметра leftDifference.

Рис. 3

Для второго графика (зависимость погрешности от x) иногда полезным является пункт меню «Автомасштаб везде». Дело в том, что по умолчанию на этом графике ордината 0 входит в отображаемый на графике диапазон независимо от значений погрешности. Поэтому график может казаться странным (представлять собой горизонтальную прямую), если погрешность незначительно меняется в окрестности отличного от нуля значения (так бывает, если она определяется, в основном, погрешностью метода). И чтобы увидеть колебания погрешности (обусловленные погрешностью округления), в таком случае удобнее всего включить режим «Автомасштаб везде».

Примечание для преподавателей. Описанное поведение второго графика (когда значение 0 обязательно входит в диапазон ординат графика), а также возможность отмены этого поведения пользователем (с помощью пункта меню «Автомасштаб везде») имеет место только в том случае, если в файле варианта параметр plotErrorZero имеет значение true.


5. Пользовательский интерфейс программы

5.1. Погрешности вычислений: ряды

5.2. Погрешности. Численное дифференцирование