Эволюционные уравнения в частных производных
в чем можно убедится непосредственно. На рисунке 17.1 мы приводим графики точного решения (сплошной линией) и приближенного (точечной линией) при . Результат нашего вычислительного опыта не является удовлетворительным. Мы видим хорошее совпадение фазы решений, но амплитуда приближенного решения меньше точного. Наша схема оказалась весьма диссипативной, что делает ее непригодной. На рисунке 17.2 мы приведем погрешность приближенного решения.
Рис. 17.2. Погрешность приближенного решения уравнения линейного переноса с помощью кусочно-линейной интерполяции
Покажем как можно существенно повысить точность нашего метода. Для этого мы воспользуемся так называемыми аналитико-числовыми методами. Суть этих методов состоит в том, что ряд операций, можно выполнить точно. Например в известной нам уже задаче дифференцирования функции. Пусть нам нужно найти производную функции . При программировании нам выгодно задавать не поточечные значения этой функции, а всего четыре коэффициента - , , и . Обозначим эти коэффициенты четырьмя переменными:
Тогда производная функции имеет такой же вид и может быть также представлена такими же коэффициентами:
Вычислить коэффициенты производной можно следующим образом
При это, если не считать возможные ошибки округления при умножении, операция дифференцирования была выполнена безукоризненно.
С другой стороны гладкие (например, кусочно дифференцируемые и имеющие ограниченные производные) периодические функции могут быть разложены в ряд Фурье, а ряд Фурье представляет собой комбинацию рассмотренных выше функций. Поэтому, если задавать функцию коэффициентами Фурье, то такие операции как дифференцирование и интегрирование можно выполнять фантастически быстро. Чем более гладкая функция, тем быстрее коэффициенты Фурье сходятся к нулю. Следовательно, часто ряд Фурье удается аппроксимировать конечными тригонометрическими суммами.
Реализуем новый класс в котором мы будем применять численно-аналитические методы.
В этом классе мы добавили новые методы - для дифференцирования функции, а также для суммирования тригонометрической суммы. Заметим, что мы рассматриваем систему дифференциальных уравнений относительно коэффициентов Фурье. Испытаем наш класс.
На рисунке 17.3 мы приводим погрешность приближенного решения.