Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

4.2. Степенной базис

Выберем базисные функции в виде последовательности степеней аргумента х, которые линейно независимы,

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

Запишем расширенную матрицу системы нормальных уравнений для базиса (4.8):

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

Для решения систем уравнений с матрицей Грама разработаны методы сингулярного разложения [19]. Если же то такие системы можно решать и более простым методом исключения Гаусса.

Программы аппроксимации дискретных функций методом наименьших квадратов с использованием степенного базиса составлены в соответствии с блок-схемой рис. 4.1

Рис. 4.1. (см. скан) Блок-схема программы обработки данных методом наименьших квадратов

В основном блоке программы описываются массивы для размещения таблицы исходных данных, двумерный массив А - для

расширеннсй матрицы системы нормальных уравнений и массив С - для коэффициентов аппроксимирующей функции. В диалоговом режиме вводятся значения величин: номер последнего узла таблицы; номер последней базисной функции; интервал и шаг изменения текущих значений аргумента, при которых необходимо вычислить аппроксимирующую функцию При задании значений необходимо учитывать, что нумерация узлов и базисных функций ведется с нуля, поэтому каждое из значений берется на единицу меньше количества узлов и базисных функций соответственно.

В блоке 1 (строки 100-190) таблица данных вводится с клавиатуры ПЗВМ в диалоговом режиме последовательными парами узлов и значений аппроксимируемой функции. При обработке экспериментальных данных подобная таблица может быть сформирована при получении данных с интерфейса

В блоке 2 (строки 200-290) формируется расширенная матрица вида (4.9). С помощью вложенных циклов по переменным (строки 210-230) формируются "оригинальные” элементы нулевой строки и двух последних столбцов матрицы Грама Для накопления сумм, входящих в нулевую строку матрицы, введена переменная в последние столбцы - Эти переменные инициализируются в строке 200 после заголовка внешнего цикла по переменной Остальные элементы матрицы заполняются путем последовательного сдвига «оригинальных» элементов на следующую строку и предыдущий столбец (строки программы 240-260).

Блок 3 (строки 300-399) представляет собой переработанный вариант подпрограммы метода Гаусса (программа Здесь исключены операторы выбора главного элемента, а также учтено, что матрица решаемой системы уравнений имеет строку и столбец с нулевыми номерами.

В блоке 4 осуществляется вычисление аппроксимирующей функции по схеме Горнера (строки 400-490). Результат накапливается в цикле с отрицательным шагом и присваивается переменной

При выполнении программы значения каждой из переменных задаются на единицу больше, чем для программы Это обусловлено тем, что в языке Фортран нумерация массивов начинается с единицы. Блоки 1-4 в программе реализованы в виде подпрограммы типа SUBROUTINE с именами и

В языке Паскаль отсутствует стандартная функция возведения в степень, для выполнения этой операции в программе введена процедура-функция осуществляющая возведение вещественной переменной А в целую степень путем последовательного умножения в цикле.

В программах 4.2 реализован способ формирования элементов матрицы Грама без использования операции возведения в степень. Для получения степеней узлов используется операция умножения, массив введен для размещения последовательных степеней узлов и является локальным в подпрограммах GRAM (программы Все элементы массива инициализируются единицей (строка 200 программы

При тестировании программ 4.1 и 4.2 можно использовать примеры

гл 3, При получаем те же результаты, что и при лагранжевой интерполяции полиномом степени При получим для функции заданной в точках

(см. скан)

(см. скан)

(см. скан)

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление