Лабораторная работа № 2. Интерполирование и экстраполирование данных. Интерполяционный многочлен Лагранжа

В практических расчетах чаще всего используют интерполяционные многочлены невысоких степеней. Из формулы (2.3.4) видно, что единственный, восстанавливаемый без дополнительных условий многочлен Лагранжа должен иметь степень, на единицу меньшую числа точек интерполяционной таблицы. Обычно по исходным данным именно такой многочлен и восстанавливается. По найденному многочлену находят приближенные значения функции для любых значений аргумента, лежащих между узлами заданной сетки.

Пример. Найти многочлен наименьшей степени, принимающий в данных точках заданные значения:

     
1.45 1.36 1.14
3.14 4.15 5.65

Здесь заданы лишь три узла сетки. Следовательно, можно восстановить многочлен Лагранжа второго порядка: Вычислим вначале коэффициенты Тогда

Для вычисления лагранжевых коэффициентов удобно применить следующую таблицу разностей (2.9.1):

 

на главной диагонали которой стоят разности вида Если обозначить произведение элементов -й строки через , а произведение элементов главной диагонали через , то

(2.9.2)

Для рассмотренного выше примера таблица разностей будет иметь вид

Тогда, например, для получим , что совпадает с выражением, найденным по формуле (2.3.4).

Теперь по найденному интерполяционному многочлену Лагранжа можно посчитать приближенное значение функции для любого значения аргумента . Вычислим, например, Результат необходимо округлить до второго знака после запятой. Итак,

Если требуется найти не общее выражение , а лишь его значения при конкретных значениях аргумента, то удобно пользоваться интерполяционной схемой Эйткена по формулам (2.8.1) и (2.8.2). Вычислим еще раз , расположив данные по схеме Эйткена в удобной таблице (2.9.3):

     
   
 

Вычисления по схеме Эйткена обычно ведут до тех пор, пока последовательные значения и не совпадут в пределах заданной точности.

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

  1.45 3.14 0.035    
  1.36 4.15 -0.055 3.5328  
  1.14 5.65 -0.275 3.7750 3.5601

Итак,

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

Задание № 1. По образцу разобранного примера восстановить многочлен Лагранжа, удовлетворяющий приведенным исходным данным.

1.

       
       
       

2.

       
-2      
  -8 -15 -23

3.

         
-2 -1      
         

4.

       
       
       

5.

       
-2      
  -7 -14 -22

6.

         
-2 -1      
         

7.

       
-1      
       
       
       
       

9.

       
-3      
  -8 -15 -23

10.

       
-1      
  -8 -15 -23

11.

         
-3 -2 -1    
         

12.

         
-1        
         

13.

       
       
       

14.

       
-2 -1    
       

15.

       
-4 -1    
  -8 -15 -23

16.

       
       
  -8 -15 -23

17.

       
-1      
       

18.

       
       
       

19.

       
-3      
  -7 -14 -22

20.

       
-1      
  -7 -14 -22

21.

         
-3 -2 -1    
         

22.

         
-1        
  -1   -1  

23.

         
-1        
         

24.

       
-2 -1    
       

25.

       
-3 -2 -1  
       

26.

         
-2 -1      
-27 -4 -1 -6 -7

27.

       
-1      
-5 -10 -1  

28.

         
-2 -1      
  -1      

29.

         
-2 -1      
-23 -6   -2  

30.

       
       
       

Задание № 2. Используя схему Эйткена, вычислить приближенное значение функции , заданной таблично при данном значении аргумента .

I.

№ варианта
  1.020 0.20 10.2316
  1.140 0.80 10.9590
  1.785 1.20 11.4725
  2.031 1.70 12.1483
  3.255 2.35 13.0120
  3.512 3.00 14.0976
    3.14 16.2134
    3.61 19.0218

II.

№ варианта
  0.616 0.45 2.5742
  0.478 0.47 2.3251
  0.665 0.52 2.0934
  0.537 0.61 1.8620
  0.749 0.66 1.7493
  0.528 0.70 1.6210
    0.74 1.3418
    0.79 1.1212

III.

№ варианта
  3.140 1.11 9.0542
  2.351 1.59 6.6166
  3.329 2.10 4.6917
  2.756 2.96 3.3511
  1.316 3.54 2.7995
  5.555 4.00 2.3652
    5.36 1.9418
    5.78 1.8291

IV.

№ варианта
  0.702 0.43 1.6360
  0.512 0.48 1.7323
  0.645 0.55 1.8769
  0.736 0.62 2.0335
  0.608 0.70 2.2285
  0.762 0.75 2.3597
    0.77 2.4103
    0.83 2.6978

V.

№ варианта
  8.960 6.81 8.0866
  7.675 7.35 8.9492
  9.490 8.00 10.2964
  10.000 8.85 12.0966
  8.125 9.34 13.4087
  10.777 9.95 15.2368
    10.25 18.1109
    11.00 21.5445

Выполним теперь те же действия в пакете Мathcad, освоив простейшие символьные вычисления, панель программирования, а также действия с векторами и матрицами. Рассмотрим и решим две задачи, аналогичные заданиям № 1 и № 2: построим многочлен Лагранжа по заданной таблице и вычислим приближенное значение функции по схеме Эйткена. Для выполнения обеих этих задач удобно воспользоваться аппаратом матричной алгебры пакета.

 
 

Кнопка -Vector and Matrix Palette (Панель векторных и матричных опе-раций) открывает панель, изображенную чуть ниже, кнопки которой соответствуют следующим операциям:

- определение размеров матрицы;

- численное вычисление определителя матрицы;

- поэлементные операции с матрицами (режим векторизации);

- скалярное произведение двух векторов;

- векторное произведение;

- вычисление суммы компонент вектора ;

- определение столбца матрицы: -й столбец матрицы;

- транспонирование матрицы;

- визуализация цифровой информации, сохраненной в матрице.

Три действия: транспонирование, обращение матрицы и вычисление определите-
ля - можно выполнить и из меню символьных операций (Symbolics).

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

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

-1        
         

Введем исходные данные и матрицу, соответствующую таблице (2.9.1). Для того чтобы определить вектор или матрицу, введем с клавиатуры имя вектора и знак присваивания. Затем щелкнем по кнопке и откроем окно диалога определения размеров матрицы:

 
 

После этого заполним массив пустых полей, получим на экране монитора

Переменная ORIGIN определяет начало нумерации строк и столбцов матрицы в пакете Mathcad, она описана в предыдущей лабораторной работе. Для определения таблицы (2.9.1) нужно задать функциональную, а не числовую матрицу, поэтому набираем

 
 

Далее вычисляем лагранжевы коэффициенты по формуле (2.9.2). Для этого необходимо преобразовать символьное выражение. Кнопка - Calculus Palette (Панель операций математического анализа) открывает панель, с помощью которой можно суммировать, дифференцировать, интегрировать, вычислять произведения и находить пределы как числовых, так и символьных выражений. Введем выражение

.

Щелчком по строке Simplify (Упростить) меню Symbolics (Символьные вычисления) символьному процессору передается выражение, выделенное в рабочем документе, а преобразованное выражение отображается в рабочем документе ниже или справа от исходного выражения в зависимости от задания стиля выражения (Evaluation Style).

 
 

В нашем случае получим на экране

Аналогично вычисляются знаменатели формулы (2.9.2):

 
 

Далее таким же образом вычисляем лагранжевы коэффициенты:

Наконец, получим сам многочлен Лагранжа:

По найденной формуле можно приближенно рассчитывать значения функции в любых точках как внутри, так и вне табличного интервала с точностью, определяемой теоремой 2.2 (подразд. 2.4), например,

Решим теперь задачу задания № 2. Пусть задана таблицей и

0.05 0.10 0.17 0.25 0.30 0.36 0.43 0.49
0.0500 0.1003 0.1717 0.2553 0.3093 0.3767 0.4218 0.4536

 
 

Построим сначала, как описано в предыдущей лабораторной работе, график этой зависимости:

Далее последовательно строим числовую матрицу (2.9.3) схемы Эйткена при помощи дискретного аргумента:

Во всех приведенных таблицах задано пять знаков после запятой в данных, выводимых на дисплей. Это сделано таким образом. После двойного щелчка левой мыши открывается окно ввода параметров настройки отображения чисел, затем выставляется цифра 5 в верхнем окошке.

К сожалению, записать двойной цикл и вычислить все в одну строку с помощью дискретного аргумента здесь не удастся, так как, во-первых, нельзя в пакете Mathcad определять простую переменную через дискретный аргумент, во-вторых, переменные, определяющие дискретный диапазон, также не могут определяться через предыдущий дискретный аргумент. Однако эту задачу можно легко решить, составив коротенькую программу вычисления таблицы схемы Эйткена.

 
 

Воспользуемся кнопкой -Programming Palette (Панель программи-рования). Она открывает следующую панель:

Кнопки этой панели вызывают операторы, во многом аналогичные основным операторам распространенных языков программирования. Язык Mathcad очень напоминает черты языка С. В этом нет ничего удивительного, так как сам Mathcad написан на этом языке. Основными составными операторами являются операторы выбора (if), повторения (until) и цикла (for) с заранее известным числом повторений. Кроме того, введено понятие локальной переменной, операторы досрочного выхода из цикла (break) и (continue) и оператор досрочного выхода из программы (return).

Кнопка - это команда добавления строки в программу или в тело цикла.

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

операторы в операторный блок с одним входом и одним выходом, выполняющийся как единый оператор. Кнопка -это оператор присваивания значения локальной переменной.

Кнопка вводит в программы альтернативу с одним плечом

(неполная альтернатива). В первый квадратик (левее if) записывается выполняемый оператор, в правый - булево выражение. Выполняемый оператор исполнится, если булево выражение возвращает значение «Да» (в среде Mathcad – любое числовое значение, отличное от нуля). Для организации полной альтернативы используется кнопка с оператором
otherwise. Кнопка -это кнопка цикла с проверкой.

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

лом, в нижний – тело цикла. Кнопка вводит в программы цикл с параметром.

В первый квадрат вводится переменная цикла, в правом (после знака Î) указываются пределы изменения этого параметра. Эти пределы можно просто перечислять через запятую или указывать в том виде, как для дискретной переменной: В нижний квадрат помещается тело цикла.

Кнопки и позволяют досрочно выходить из

циклов while и for, а кнопка - из всей программы. При этом оператор break

передает управление обязательно в конец цикла, а оператор continue - в любое место цикла.

Наконец, кнопка вводит оператор обработки ошибок. Если при выполнении

оператора в правом квадрате возникнет ошибка, то будет выполняться оператор из левого квадрата. Оператор on error полезен в тех случаях, когда ошибку сложно локализовать, тем более что в программах пакета Mathcad, к сожалению, невозможно выводить на дисплей промежуточные результаты расчета.

Итак, программа расчета матрицы схемы Эйткена может быть, например, такой:

Параметрами программы являются вектора исходных данных . Компоненты вектора равны: , - число точек табличного задания функции . Для получения матрицы по схеме Эйткена необходимо определить лишь вектор и саму матрицу :

 
 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: