А. С. Попова Кафедра информационных технологий Основные принципы работы в системе Matlab Методические указания



бет26/29
Дата06.02.2022
өлшемі3,15 Mb.
#80626
түріМетодические указания
1   ...   21   22   23   24   25   26   27   28   29
Байланысты:
матлаб

Лабораторное задание

1. Составить и отладить программы для нахождения корней уравнения f1(x) = 0 и f2(x) = 0 и вывести графики функции на основании задания из табл.5.1.


2. Найти определенный интеграл для подинтегральной функции, заданной в табл. 5.2.
Таблица 5.1– Варианты заданий для нахождения корней уравнения

варианта

полином 3-ей степени с коэффициентами a



1

2

3

4

5

6

1

0

-1

4

-1



2

0

2

-2

-15



3

0

1

4

-1



4

0

9

-8

-70



5

0

-4

4

50



6

1

-5

4

40



7

2

-3

2

30



8

3

-6

1

50



9

4

-9

1

70



10

5

-7

5

60



11

-1

-4

9

60



12

-2

-6

-7

55



13

-3

-9

-8

75



14

-4

7

8

-75



15

-5

1

4

-1



Таблица 5.2 – Варианты функций для нахождения значения интеграла

варианта

Функция

Интервал интегрирования

начало интервала

конец
интервала

1

2

3

4

1



-2

2

2



-2

2

3



-2

2

4



-2

2

5



-0.5

4.5

6



-1.4

1.4

7



-5

5

8



-5

15

9



-4

2

10



-2

2

11



-2

2

12



-2

5

13



-1

1

14



-2

2

15



-2

2

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




6. Аппроксимация и интерполяция данных.
Методы решения обыкновенных дифференциальных уравнений


Основные теоретические сведения

Аппроксимацией называют описание некоторой, порой не заданной явно, зависимости или совокупности представляющих ее данных с помощью другой, более простой или более единообразной зависимости. Часто данные находятся в виде отдельных узловых точек, координаты которых задаются таблицей данных. Результат аппроксимации может не проходить через узловые точки. Для обработки данных Matlab использует различные функции интерполяции и аппроксимации данных.


Одна из наиболее известных аппроксимаций — полиномиальная. В системе Matlab определены функции аппроксимации данных полиномами по методу наименьших квадратов – полиномиальной регрессии. Это выполняет функция, приведенная ниже:
polyfit(x, y, n) – возвращает вектор коэффициентов полинома р(х) степени n, который с наименьшей среднеквадратичной погрешностью аппроксимирует функцию у(х).
Результатом является вектор–строка длиной n+1, содержащий коэффициенты полинома в порядке уменьшения степеней х и у равно n+1, то реализуется обычная полиномиальная аппроксимация, при которой график полинома точно проходит через узловые точки с координатами (х. у), хранящиеся в векторах х и у. В противном случае точного совпадения графика с узловыми точками не наблюдается;

  • [p.S] = polyflt(x.y.n) – возвращает коэффициенты полинома р и структуру S для использования вместе с функцией polyval с целью оценивания или предсказания погрешности;

  • [p.S] = polyf1t(x,y,n,mu) возвращает коэффициенты полинома р и структуру S для использования вместе с функцией polyval с целью оценивания или предсказния погрешности, но так, что происходит центрирование (нормирование) и масштабирование х, xnorm = (х - mu(l))/mu(2), где mu(l) = mean(x) и mu(2) = std(x). Центрирование и масштабирование не только улучшают свойства степенного многочлена, получаемого при помощи polyval, но и значительно повышают качественные характеристики самого алгоритма аппроксимации.

Пример (полиномиальная регрессия для функции s

  • » х=(-3:0.2:3)':

  • y=sin(x);

  • p=polyflt(x.y,3)

  • р =

  • -0.0953 0.0000 0.8651 -0.0000

  • »x=(-4:0.2:4)';y=sin(x);

  • » f=polyval(p,x);plot(x.y.'o',x,f)




  • Рисунок 6.1Пример использования функции polyfit

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


Интерполяция функций

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



  • interpft(x.n) – возвращает вектор у, содержащий значения периодической функции, определенные в п равномерно расположенных точках.

  • Если length(x) = rr; и х имеет интервал дискретизации dx, то интервал дискретизации для у составляет dy=dx*m/n.

  • Если X – матрица, то interpft оперирует столбцами X, возвращая матрицу Y с таким же числом столбцов, как и у X, но с n строками. Функция y=interpft(x.n.dim) работает либо со строками, либо со столбцами в зависимости от значения параметра dim.


  • Пример с использованием функции interpft(x.n):


  • » x=0:10:y-sin(x).^3:

  • » xl-0:0.1:10;yl=interpft(y,101);

  • » x2=0:0.01:10;y2=sin(x2).^3;

  • » plot(xl,yl, '--');hold on plot(x,y, 'o' ,x2,y2)




  • Рисунок 6.2Пример использования функции interpft


  • Рис. 6.2 иллюстрирует эффективность данного вида интерполяции на примере функции sin(x).^3, которая представляет собой сильно искаженную синусоиду. Исходная функция на рис. 6.2 представлена сплошной линией с кружками, а интерполирующая функция — штрих–пунктирной линией.

В ряде случаев очень удобна сплайновая интерполяция и аппроксимация таблично заданных функций. При ней промежуточные точки ищутся по отрезкам полиномов третьей степени – это кубическая сплайновая интерполяция.
При этом обычно такие полиномы вычисляются так, чтобы не только их значения совпадали с координатами узловых точек, но также, чтобы в узловых точках были непрерывны производные первого и второго порядков. Такое поведение характерно для гибкой линейки, закрепленной в узловых точках, откуда и происходит название spline (сплайн) для этого вида интерполяции (аппроксимации).
Для одномерной табличной интерполяции используется функция interpl:
yi = interp1(x, y, xi) — возвращает вектор yi, содержащий элементы, соответствующие элементам xi и полученные интерполяцией векторов х и y. Вектор х определяет точки, в которых задано значение y.
yi = interp1(x, y, xi, method) — позволяет с помощью параметра method задать метод интерполяции:
–'nearest' – ступенчатая интерполяция;
–'linear' – линейная интерполяция (принята по умолчанию);
–'spline' – кубическая сплайн-интерполяция;
–'cubic' или 'pchip' – интерполяция многочленами Эрмита.
Сплайн – интерполяция используется для представления данных отрезками полиномов невысокой степени – чаще всего третьей. При этом кубическая интерполяция обеспечивает непрерывность первой и второй производных результата интерполяции в узловых точках. Реализуется сплайн-интерполяция следующей функцией:
yi = spline(x, y, xi) – использует векторы х и у, содержащие аргументы функции и ее значения, и вектор xi, задающий новые точки.
Пример:Зададим синусоиду всего 10 точками и проведем интерполяцию, используя мелкую сетку.

x = 0:10; y = sin(x);


xi = 0:.25:10;
yi = interp1(x, y, xi);
plot(x, y, 'o', xi, yi, ‘g’), hold on
yi = interp1(x, y, xi, ‘spline’ );
plot(x, y, 'ob', xi, yi, ‘m’), grid, hold off



Решение большинства задач интерполяции и аппроксимации функций и табличных данных обычно сопровождается их визуализацией. Она, как правило, заключается в построении узловых точек функции (или табличных данных) и в построении функции аппроксимации или интерполяции (рис.6.3).
В Matlab совмещение функций аппроксимации с графической визуализацией доведено до логического конца – предусмотрена аппроксимация рядом методов точек функции, график которой построен. И все это выполняется прямо в окне редактора графики Property Editor. Для этого в позиции Tools графического окна имеются две новые команды:

Рисунок 6.3 – Пример визуализации процесса интерполяции


Basic Fitting – основные виды аппроксимации (регрессии);
Команда Basic Fitting открывает окно, дающее доступ к ряду видов аппроксимации и регрессии: сплайновой, эрмитовой и полиномиальной со степенями от 1 (линейная аппроксимация) до 10. В том числе со степенью 2 (квадратичная аппроксимация) и 3 (кубическая аппроксимация) (рис.6.4).



Рисунок 6.4 – Окно доступа к видам аппроксимации и регрессии




Data Statistics – статистические параметры данных.
Команда Data Statistics открывает окно с результатами простейшей статистической обработки данных (рис.6.5).



Рисунок 6.5 – Окно результатов статистической обработки


Анализ поведения многих систем и устройств в динамике базируются на решении систем обыкновенных дифференциальных уравнений (ОДУ). Их, как правило, представляют в виде системы из дифференциальных уравнений первого порядка в форме Коши:


(1)
где – начальные и конечные точки интервалов.
Параметр t не обязательно означает время, хотя чаще всего решение дифференциальных уравнений ищется во временной области. Вектор b задает начальные и конечные условия.
Для решения систем ОДУ в MatLab реализованы различные методы. Их реализации названы решателями ОДУ. Решатели реализуют следующие методы решения систем дифференциальных уравнений, причем для решения жестких систем уравнений рекомендуется использовать, только специальные решатели ode45, ode23:
ode45 – одношаговые явные методы Рунге-Кутта 4-го и 5-го порядка. Это классический метод, рекомендуемый для начальной пробы решения.
ode23 – одношаговые явные методы Рунге-Кутта 2-го и 4-го порядка.
Синтаксис:
[t, X] = ode23(‘<имя функции>‘, t0, tf, x0)
[t, X] = ode23(‘<имя функции>‘, t0, tf, x0, tol, trace)
[t, X] = ode45(‘<имя функции>‘, t0, tf, x0)
[t, X] = ode45(‘<имя функции>‘, t0, tf, x0, tol, trace)


Описание:
Любая система нелинейных ОДУ может быть представлена как система дифференциальных уравнений 1-го порядка в явной форме Коши:


,
где x - вектор состояния;
t - время;
f - нелинейная вектор-функция от переменных x, t.
Функции:
[t, X] = ode23(‘<имя функции>‘, t0, tf, x0, tol, trace) и
[t, X] = = ode45(‘<имя функции>‘, t0, tf, x0, tol, trace)
интегрируют системы ОДУ, используя формулы Рунге - Кутты соответственно 2-го и 3-го или 4-го и 5-го порядка. Эти функции имеют следующие параметры:


Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   29




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет