Matlab  |  Mathcad  |  Maple  |  Mathematica  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Банк задач  |  Консультации & Форум  |  Download  |  Ссылки  |  Конкурсы
Научно-практический журнал "Exponenta Pro. Математика в приложениях". Вышел 1/2004 номер журнала
 
ЛАБОРАТОРНЫЙ ПРАКТИКУМ по математическому моделированию и методам в расчетах на ЭВМ

А.А. ХАНОВА, И.Г. МАКАРОВА

Вернуться на страницу <Методические разработки>
В начало | Л.р.1 | Л.р.2 | Л.р.4 | Л.р.5 | Л.р.6 | Л.р.7 | Л.р.8

 

Лабораторная работа 3
Интерполяция и предсказание

 

Интерполяция ~ Предсказание ~ Порядок выполнения работы

 

Аппроксимация функций заключается в приближенной замене заданной функции f(x) некоторой функцией j (x) так, чтобы отклонение функции j (x) от f(x) в заданной области было наименьшим. Функция j (х) при этом называется аппроксимирующей. Типичной задачей аппроксимации функций является задача интерполяции. Необходимость интерполяции функций в основном связана с двумя причинами:

  1. Функция f(x) имеет сложное аналитическое описание, вызывающее определенные трудности при его использовании (например, f(x) является спецфункцией: гамма-функцией, эллиптической функцией и др.).
  2. Аналитическое описание функции f(x) неизвестно, т.е. f(x) задана таблично. При этом необходимо иметь аналитическое описание приближенно представляющее f(x) (например, для вычисления: значений f(x) в произвольных точках, определения интегралов и производных от f(x) и т. п.)

Интерполяция

Простейшая задача интерполяции заключается в следующем. Для заданных n + 1 точек xi = х0, х1, . . ., хn, которые называются узлами интерполяции, и значений в этих точках некоторой функции f(xi) = y0, y1, . . ., yn построить полином j (х) (интерполяционный полином) степени n вида

(1)

принимающий в узлах интерполяции хi те же значения yi, что и функция f(xi):

i = 0, 1, ..., n.

(2)

Глобальная интерполяция

Простейшим видом глобальной интерполяции является параболическая интерполяция, когда, используя описанные выше условия (2), для отыскания неизвестных n + 1 коэффициентов а0, а1, . . ., аn выражения (1) получают систему из n + 1 уравнений:

.

(3)

Интерполяционная формула Лагранжа:

(4)

Для построения интерполяционной формулы Лагранжа в Mathcad удобно использовать функцию if

if(cond, tval, fval) Возвращает значение tval, если cond отличен от 0 (истина). Возвращает значение fval, если cond равен 0 (ложь).

Часто интерполирование ведется для функций, заданных таблично с равноотстоящими значениями аргумента (hi = xi+1 - xi = const). Введем предварительно понятие конечных разностей:

С учетом введенных обозначений первая интерполяционная формула Ньютона имеет вид:

(5)

Вторая интерполяционная формула имеет вид:

(6)

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

Локальная интерполяция

При локальной интерполяции между различными узлами выбираются различные многочлены невысокой степени. В среде Mathcad есть для этого инструментарий: средства линейной интерполяции (функция linterp) и интерполяции сплайном (функция interp) - линейным (lspline), параболическим (pspline) и кубическим (cspline). Рисунок 4 показывает некоторые примеры локальной интерполяции.

 

Рисунок 4. Локальная интерполяция

 

linterp(vx, vy, x) Использует векторы данных vx и vy, чтобы возвратить линейно интерполируемое значение у, соответствующее третьему аргументу x.
lspline(vx, vy) pspline(vx, vy) cspline(vx, vy) Все эти функции возвращают вектор коэффициентов вторых производных, который мы будем называть vs. Вектор vs, используется в функции interp:
interp(vs, vx, vy, x) Возвращает интерполируемое значение у, соответствующее аргументу х.

Предсказание

Если необходимо оценить значения функции в точках не принадлежащих отрезку [x0, xn], используйте функцию predict (Рисунок 5).

 

Рисунок 5. Экстраполяция функций

 

predict(v, m, n) Возвращает n предсказанных значений, основанных на m последовательных значениях вектора данных v.

 

Порядок выполнения лабораторной работы 3

 

Задание 1. Вычислить значения заданной функции уi = f(xi) в узлах интерполяции хi = a + h i, где h = (b - a)/10, i = 0, 1, ..., 10, на отрезке [a, b].

 

Варианты заданий

 

варианта

f(x)

[a, b]

варианта

f(x)

[a, b]

1

[0, 2]

9

[1, 5]

2

[0, 2]

10

[1, 5]

3

[0, 5]

11

[0, 3]

4 1/(0.5 + x2)

[0, 2]

12

[0, 2]

5 e -(x + sin x)

[2, 5]

13 cos(x + e cos x)

[3, 6]

6 1/(1 + e -x)

[0, 4]

14

[0, 1]

7 sin(x + e sin x)

[0, 3]

15 e cos x? cos x2

[0, 2]

8 e -(x + 1/x)

[1, 3]

     

Задание 2. По вычисленной таблице (xi, yi) провести параболическую интерполяцию.

Для нахождения коэффициентов искомого полинома (1) необходимо составить систему линейных алгебраических уравнений (3).

Систему уравнений решить матрично с использованием функции lsolve.

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

Задание 3. Для вычисленной табличной функции составить формулу интерполяционного многочлена Лагранжа, используя операторы суммирования и перемножения по дискретному аргументу, а также функцию if.

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

Задание 4. Провести интерполирование заданной функции с помощью 1ой и 2ой интерполяционных формул Ньютона.

Построить графики интерполяционных многочленов и отметить на нем узловые точки (xi, yi).

Задание 5. Провести линейную интерполяцию заданной функции с помощью встроенной интерполяционной функции linterp.

Построить график функции linterp и отметить на нем узловые точки (xi, yi).

Задание 6. Провести сплайн-интерполяцию с помощью функций lspline, pspline, сspline и interp.

Построить график функции interp и отметить на нем узловые точки (xi, yi).

Задание 7. Вычислить значения заданной функции уi = f(xi) в точках хi = a + i/10, где, i = 0, 1, ..., 10(b - a), на отрезке [a, b].

С использованием функции predict выполнить предсказание (экстраполяцию) полученного вектора данных yi в последующих 10 точках по последним 7 значениям функции.

Отобразить графически имеющиеся данные, предсказанные данные и истинный вид функции f(x).

 

Решение в Mathcad

В начало | Л.р.1 | Л.р.2 | Л.р.4 | Л.р.5 | Л.р.6 | Л.р.7 | Л.р.8

Вернуться на страницу <Методические разработки>

Карта сайта | На первую страницу | Поиск |О проекте |Сотрудничество |
Exponenta Pro | Matlab.ru

Наши баннеры


Copyright © 2000-2003. Компания SoftLine. Все права защищены.

Дата последнего обновления информации на сайте: 11.05.04
Сайт начал работу 1.09.00

Программное обеспечение Microsoft, Macromedia, VERITAS, Novell, Borland, Symantec, Oracle и др.