Лабораторное задание
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-го порядка. Эти функции имеют следующие параметры:
Достарыңызбен бөлісу: |