Учебное пособие: Matlab Пособие

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

.

Частным случаем задачи аппроксимации является задача интерполяции функции. В этом случае также имеем набор узловых точек xk (где k=1,2,…,n) и значения функции yk в этих точках. Однако, в соответствии с критерием интерполяции, требуется построить такую функцию f(x), которая в узловых точках x1, x2,…,xn принимала бы значения y1, y2, …,yn, то есть f(xk) = yk для всех k от 1 до n.Чаще всего функцию f(x) ищут в виде полинома, степень которого n-1. Поэтому задача сводится к определению коэффициентов интерполяционного полинома на основании значений функции в базовых точках.

На практике для решения задачи интерполяции (вычисления значений функции в точках, несовпадающих с узлами интерполяции) используются интерполяционные формулы Ньютона и формула Лагранжа [1].

Для выполнения полиномиальной аппроксимации в MatLab используется функция polyfit(). Эта функция предназначена для выполнения аппроксимации методом наименьших квадратов. Функция polyfit(x,y,n) возвращает вектор коэффициентов полинома степени n, который с наименьшей среднеквадратичной погрешностью аппроксимирует функцию, заданную таблично. Результатом является вектор ­строка длиной n+1, содержащий коэффициенты полинома в порядке уменьшения степеней. Аргументами функции являются список узловых точек, список значений интерполируемой функции в этих точках и степень интерполяционного полинома. Как правило, степень полинома много меньше количества узлов (m<<n). В качестве результата возвращается список коэффициентов аппроксимирующего полинома.

Ниже приведены пример линейной и кубической аппроксимации функции, заданной таблицей (рис. 2.2.1-1), и графики аппроксимирующих функций (рис. 2.2.1-2).

Рис. 2.2.1-1. Пример линейной и кубической аппроксимации функции

Рис. 2.2.1-2. Графики исходной и аппроксимирующих функций

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

Пример 2.2.1-1. Используя в качестве узлов интерполяции
x=-5,-4…5, построить полином, интерполирующий функцию .

Выполняя команды Matlab в окне Command Window, получим таблицу значений функции и проведем ее интерполяцию с использованием функции Matlab polyfit() (рис. 2.2.1-3). Графики интерполяционных узлов и интерполяционного полинома приведены на рис. 2.2.1-4.Здесь для вычисления значений полинома в точках используется функция polival(p,z), где вектор z покрывает интервал интерполяции и даже выходит за его пределы.

Рис. 2.2.1-3. Интерполяция таблично заданной функции

с использованием функции Matlab polyfit()

Рис. 2.2.1-4. Графики интерполируемой и интерполирующей функций

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

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

Таблица 2.2.1-1

Имя функции

Описание

nearest()

Интерполяция полиномами нулевой степени – график имеет ступенчатый вид

linear()

Интерполяция полиномами первой степени – базовые точки соединяются отрезками прямой

spline()

Интерполяция полиномами третьей степени

Рассмотрим пример использования функции Matlab interp1().

x

-1

0

1

2

y(x)

4

2

0

1

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

выполнить сплайн-интерполяцию с использованием полиномов нулевой, первой и третьей степени, и получить значения функции в точке х=0.58.

Рис. 2.2.1-5. Вычисление функции в точке х=0.58

На рис. 2.2.1-6 и 2.2.1-7 приведены команды, необходимые для проведения интерполяции таблично заданной функции и построения графиков интерполируемой функции и интерполирующих ее интерполяционных многочленов различных степеней.

Рис. 2.2.2-6. Команды построения графиков интерполяционных функций


Рис. 2.2.2-7. Графики интерполирующих функций

2.2.2. Лабораторная работа по теме
«Технология аппроксимации интерполяции функций»

        1. Вопросы, подлежащие изучению

  1. Задание векторов и матриц в пакете Matlab.

  2. Технология аппроксимации функции, заданной таблично, с использованием функций polyfit().

  3. Технология линейной, кубической и сплайн-интерполяции таблично заданной функции с использованием функций interp1().

  4. Получение интерполяционных многочленов в явном виде.

  5. Построение графиков аппроксимирующих и интерполирующих функций.

        1. Общее задание

  1. Изучите материал Темы 2.2. (п. 2.2.1).

  2. Выберите индивидуальное задание: номера узлов и номер аппроксимируемой функции из табл. 2.2.2-1; узлы аппроксимации и значения функции в узлах из табл. 2.2.2-2.

  3. Задайте в виде векторов значения узлов и значения функции в выбранных узлах.

  4. Вычислите коэффициенты аппроксимирующих функций для линейной, квадратичной и кубической аппроксимации с использованием функции polyfit() и получите три аппроксимирующие функции в явном виде.

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

  6. Постройте графики табличной и трех аппроксимирующих функций в одном шаблоне, снабдив их легендой.

  7. Проведите линейную и кубическую интерполяцию функции с использованием функции interp1(), заданной таблично. Получив значения интерполирующей функции в точке, не совпадающей с узлами интерполяции, сравните полученные результаты.

  8. Постройте графики табличной и двух интерполирующих функций в одном шаблоне, снабдив их легендой.

  9. Представьте результаты работы преподавателю, ответьте на поставленные вопросы.

  10. Выполните команду clear all.

  11. Оформите отчет по выполненной работе.

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

Таблица 2.2.2-1

Вариант №

Номера узлов xi

Номер функции

1

1 3 5 7 9 10 13

2

1 2 4 5 7 10 12

3

1 3 6 7 10 11 13

4

1 2 4 7 9 11 13

5

3 6 7 9 10 11 12

6

2 3 6 8 9 10 13

7

1 4 5 7 9 11 12

8

1 2 4 7 9 12 13

9

2 3 5 7 8 11 12

10

1 3 6 7 9 10 13

11

1 3 7 8 10 11 13

12

1 2 5 6 7 10 12

13

1 4 5 8 10 12 13

14

1 3 5 7 9 10 13

15

1 3 6 7 8 10 13

16

1 4 5 7 9 11 12

17

2 4 5 6 8 12 13

18

1 4 5 7 9 11 12

19

1 4 5 8 10 11 12

20

2 4 5 6 8 12 13

21

1 4 5 8 10 12 13

22

2 3 6 8 9 10 13

23

1 3 5 8 10 12 13

24

1 4 5 7 9 11 12

25

2 4 5 6 8 12 13

26

3 4 5 7 8 9 12

27

3 5 8 10 11 12 13

28

2 4 7 9 10 11 13

29

2 4 5 7 8 10 12

30

1 4 5 7 9 11 13

Таблица 2.2.2-2

i

xi

1

-5

1.38

2.44

1.676

2

-4.5

1.221

2.359

2.025

3

-4

1.511

1.751

1.736

4

-3.5

1.501

2.13

1.203

5

-3

1

1.455

1.511

6

-2.5

0.728

1.482

1.362

7

-2

0.976

1.437

0.75

8

-1.5

1.065

0.803

0.976

9

-1

0.599

1.175

0.957

10

-0.5

0.192

0.49

0.272

11

0

0.3

0.375

0.3

12

0.5

0.319

-6.51*10-3

0.165

13

1

-0.405

-1.965

-1.185


        1. Содержание отчета

  1. В форме комментариев:

  • Название лабораторной работы

  • ФИО студента, номер группы

  • № варианта

  • Индивидуальное задание

  1. Протокол вычислений (сессии) в окне Command Window, снабженный необходимыми комментариями.

2.2.3. Контрольные вопросы по теме

  1. Что такое аппроксимация функции и в каких случаях она используется?

  2. В чем отличие аппроксимации от интерполяции?

  3. Какой метод аппроксимации реализован в функции polyfit()?

  4. Что служит результатом выполнения функции polyfit()?

  5. Для чего предназначена функция polyval()?

  6. Назначение и формат функции interp1()?

  7. Каким параметром определяется тип интерполяции в функции interp1()?

Тема 2.3. Технология интегрирования
в среде MatLab

2.3.1. Вычисление неопределенных и определенных интегралов

2.3.2. Лабораторная работа по теме «Технология интегрирования

в среде MatLab»

2.3.3. Контрольные вопросы по теме

2.3.1. Вычисление неопределенных и
определенных интегралов

При вычислении определенных интегралов первообразную функцию F(x) не всегда удается выразить аналитически, а кроме того иногда подынтегральная функция f(x) задана в виде таблицы (xi и yi, где i = 1, 2, …, n). Это приводит к необходимости использования численных методов интегрирования.

Существует ряд методов численного интегрирования. Во всех этих методах вычисление осуществляется по приближенным формулам, называемым квадратурами.

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

Формулы прямоугольников:

где:

h – шаг интегрирования;

yi – значение подынтегральной функции от аргумента xi, k=0, 1, …,n;

n – число разбиений интервала интегрирования a, b.

Формула трапеций:

где:

h – шаг интегрирования;

y0 – значение подынтегральной функции при х = a;

yn – значение подынтегральной функции при х = b;

Формула Симпсона:

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

  • int(S) – возвращает символьное значение неопределенного инте­грала от символьного выражения или массива символьных выражений S по переменной, которая автоматически определяется функцией findsym(). Если S – скаляр или матрица, то вычисляется интеграл по переменной 'х'.

  • int(S, v) – возвращает неопределенный интеграл от S по символьной перемен­ной v.

  • int(S, a, b) – возвращает определенный интеграл от S с пределами интегрирования от а до b, причем пределы интегрирования могут быть как символьными, так и числовыми.

  • int(S, v, a, b) – возвращает определенный интеграл от S по пере­менной v с пределами от а до b.

Ниже приведены примеры использования функции Matlabint()
(рис. 2.3.1-1).

Рис. 2.3.1-1. Примеры вычисления интегралов

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

Для вычисления интеграла по формуле трапеции в MatLab используется функция trapz(x,y). Эта функция возвращает значение интеграла от функции y(x), которая может быть представлена вектором или матрицей. Если y(x) – матрица, то функция возвращает вектор значений интеграла каждого столбца матрицы. Если вектор узлов не задан - trapz(y), то в качестве ординат x используются индексы вектора y(x=1:length(y)), где функция определяет длину вектора y. Важно, что узлы по оси x могут быть как равноотстоящими, так и неравноотстоящими.

Источник: https://files.student-it.ru/previewfile/529