Похожие презентации:
Лекция_Аппроксимация
1. Тема 4. Аппроксимация и интерполяция данных в Scilab
12. 1. Построение моделей по результатам эксперимента.
Любому специалисту в своей практическойдеятельности приходится изучать зависимости
между различными параметрами исследуемых
объектов, процессов и систем.
Из всех способов задания зависимостей наиболее
удобным является аналитический способ задания
зависимости в виде функции y=f(х).
2
3.
Однако на практике специалист чаще всегополучает зависимости между исследуемыми
параметрами экспериментально.
В этом случае ставится натурный эксперимент,
изменяются значения параметров на входе системы
и значения параметров на выходе системы.
Результаты измерений заносятся в таблицу.
В результате проведения натурного эксперимента
получается зависимость между исследуемыми
параметрами в виде таблицы, табличная функция.
3
4.
Затем с этой табличной функцией необходимовести
научно-исследовательские
расчеты.
Например, необходимо проинтегрировать или
продифференцировать табличную функцию и т.д.
При такой постановке задачи моделирования
нужно
заменить
табличную
функцию
аналитической.
Для
этой
цели
используются
аппроксимации и интерполяции.
методы
4
5. 2. Математические определения
Аппроксимация – это замена исходнойфункции f(x) функцией φ(x) так, чтобы отклонение
f(x) от φ(x) в заданной области было наименьшим.
Функция φ(x) называется аппроксимирующей.
5
6.
67.
30.5940
30
Y
20
g ( t)
10
7.3
0
1
1
1.5
2
2.5
3
3.5
4
X t
4.5
5
5
X, Y – экспериментальные данные
g(t) – аппроксимирующая функция
7
8.
Если исходная функция f(x) задана таблично(дискретным набором точек), то аппроксимация
называется дискретной.
Если
исходная
функция
f(x)
задана
аналитически (на отрезке), то аппроксимация
называется непрерывной или интегральной.
8
9.
При решении задач аппроксимациииспользуются функции регрессии.
часто
Регрессия – представление совокупности данных
некоторой функцией f(x).
Задачей
регрессии
является
вычисление
параметров функции f(x) таким образом, чтобы
функция
приближала
последовательность
исходных точек с наименьшей погрешностью.
9
10.
При этом функция f(x) называетсяуравнением регрессии.
При регрессии не требуется чтобы функция
проходила через все заданные точки, что
особенно важно при аппроксимации данных,
заведомо содержащих ошибки.
10
11.
Основной мерой отклонения функции φ(x) отфункции f(x) при аппроксимации является
величина, равная сумме квадратов разностей
между значениями аппроксимирующей и
исходной функций в заданных точках.
11
12.
Интерполяция – это замена исходной функцииf(x) функцией φ(x) так, чтобы φ(x) точно
проходила через заданные точки исходной
функции f(x).
Интерполяция
аппроксимацией.
еще
называется
точечной
Точки исходной функции f(x) называются
узлами интерполяции.
12
13.
Пример интерполяции.19.85
20
10
Yi
yy ( xx)
0
6.4 10
0
0
2
4
6
8
Xi xx
10
10
Xi, Yi – экспериментальные данные
yy(xx) – интерполирующая функция
13
14.
Экстраполяцией называется аппроксимациявне заданной области определения исходной
функции, т.е. для x < x0 и x > xn
14
15.
Найдя интерполирующую функцию, можновычислить
ее
значения
между
узлами
интерполяции, а также определить значение
функции за пределами заданного интервала
(провести экстраполяцию).
Простейшими видами интерполяции является
линейная и квадратичная.
При линейной интерполяции точки заданной
функции соединяются линейными отрезками, а
при квадратичной – отрезками парабол. Такая
интерполяция называется параболической
Распространенным
видом
интерполяции
является использование кубических сплайнфункций.
15
16.
1617.
Интерполяция может выполняться с помощьюмногочленов Ньютона, Эрмита, Лагранжа и т.д.
Наиболее
известными
методами
аппроксимации являются метод наименьших
квадратов, метод многочленов Чебышева, рядов
Тейлор и т.д.
17
18.
MatlabScilab
Линейная интерполяция
interp1
interpln
Сплайновая интерполяция
spline
splin interp
Полиномиальная регрессия
polyfit
datafit
Нелинейная регрессия
nlinfit
datafit
18
19. 3. Функции интерполяции в Scilab
3.1. Линейная интерполяцияДля проведения линейной интерполяции для
таблично заданной функции в Scilab используется
стандартная функция interpln следующего
общего вида:
y= interpln(Z,x)
Значения интерполирующей функции y будут
определены в точках x, и выходной массив будет
иметь ту же размерность, что и массив x.
19
20.
Матрица Z должна иметь две строки, в первойсодержатся значения абсцисс точек исходной
табличной функции, во второй – значения
ординат.
Если исходная функция задана в виде двух
векторов x и y, то их можно объединить в
матрицу так: [x;y].
20
21.
Пример 2. // линейная интерполяцияclear
x=0:0.5:4.5
y=[0 0.24 0.84 0.77 -0.75 -0.033 0.41 -0.31 -0.2 0.98]
xx=-0.1:0.05:4.6
yy=interpln([x;y],xx)
figure(1)
newaxes
plot(x,y,'ok',xx,yy,'k')
21
22.
2223.
2324.
3.2. Интерполяция кубическим сплайномДля того, чтобы найти значения сплайнфункции для аппроксимации, используется
функция interp.
Y=interp(X,x,y,k)
x, y – координаты исходных точек
X,Y – координаты точек сплайн-функции
k – коэффициенты кубического сплайна
Для определения коэффициентов сплайнинтерполяции используется стандартная функция
k= splin(x,y)
24
25.
Для выполнения сплайн-интерполяциинеобходимо:
создать два вектора (х,у) из заданных значений
координат точек
вычислить коэффициенты сплайна
задать вектор значений аргумента, для которых
нужно вычислить значения сплайн-функции
вычислить значения сплайн-функции
построить графики исходной и
интерполирующей функций
25
26.
Пример 2. // сплайн-интерполяцияclear
x=0:0.5:4.5
y=[0 0.24 0.84 0.77 -0.75 -0.033 0.41 -0.31 -0.2 0.98]
k=splin(x,y)
xx= -0.1:0.05:4.6
yy=interp(xx,x,y,k)
figure(1)
newaxes
plot(x,y,'ok',xx,yy,'k')
26
27.
2728. 4. Функции аппроксимации в Scilab
4.1. Метод наименьших квадратов (МНК)Для аппроксимации по методу наименьших
квадратов в Scilab используется функция datafit.
Общий вид функции:
datafit(F,Z,b0)
F – имя функции, которая вычисляет разность между
экспериментальными и теоретическими значениями
Z – матрица координат точек исходной функции,
можно использовать [x; y]
b0 – вектор-столбец начальных значений для
коэффициентов аппроксимирующей функции
28
29.
Обращение к функции имеет вид:[k,s]= datafit(F,[x; y],b0)
k – вектор коэффициентов аппроксимирующей
функции
s – сумма квадратов отклонений исходной
функции от аппроксимирующей в заданных точках
(погрешность вычислений)
Функция F может быть описана любым из двум
возможных способов.
29
30.
4.2. Использование функций в ScilabДля описания функции есть два способа:
с помощью оператора-функции deff
с помощью подпрограммы-функции function
30
31.
Общий вид оператора-функции deffdeff('y=f(x)','y=<выражение>')
<выражение> – арифметическое выражение,
включающее переменную х
f
–
имя
функции,
которое
использоваться для обращения к ней
будет
x- аргумент или входной параметр функции
y- выходной параметр функции (результат)
31
32.
Еслиу
оператора-функции
несколько
выходных параметров, то они объединяются в
вектор, например [y1,y2]
Примеры записи оператора-функции:
deff('y=f(x)','y=cos(x)-0.1*x')
deff('[y1,y2]=z(x)','y1=cos(x)-0.1*x;y2=sin(x)')
32
33.
Обратиться к оператору-функции можно излюбого оператора, например:
Описание функции
deff('y=f(x)','y=cos(x)-0.1*x')
Обращение к функции:
x=5
disp(f(x))
z=f(7)
33
34.
Подпрограмма-функция формируется как отдельнаяпрограммная единица и может располагаться в любом
месте в файле основной программы, так и в отдельном
файле.
Общий вид описания:
function <имя результата>= <имя функции>(СП),
операторы
endfunction
34
35.
имя результата – имя переменной, кудапомещается результат работы функции, выходной
параметр
имя функции – имя, по которому выполняется
обращение к функции из вызывающей программы
СП – список формальных
(аргументов) функции
параметров
Можно сохранять функции в отдельных файлах.
Тогда имя файла должно обязательно совпадать
с именем функции. Для ее использования она
должна быть загружена в Scilab командой exec.
exec F77.sce
[k,skv]=datafit(F77,[x;y],nach)
35
36.
Все параметры, указанные в скобках послеимени функции, называются входными, они
передают свои значения в функцию.
Выходной
параметр
или
параметры
указываются сразу после слова function, они
передают свои значения в вызывающую
программу.
36
37.
Функция с одним выходным параметромfunction s=summa (a, b, c)
function p=prim(x,y)
function k=kluch (d)
Функция с несколькими выходными
параметрами
function [s,n]=summa (a, b, c)
37
38.
Обращениек
подпрограмме-функции
выполняется так же, как и к оператору-функции,
например
disp (Summa(a,b,S))
A = Poisk (D,Y,X)
if sum(a,b)>0 r = r+1
38
39.
Параметры, используемые при описаниифункции, называются формальными.
Параметры, используемые при вызове
функции, называются фактическими.
function s=summa (a, b, c)
a, b, c – формальные параметры
z=summa(d,x,y)
d,x,y – фактические параметры
39
40.
Пример.Вычислить сумму квадратов двух заданных чисел.
Использование оператора-функции
deff('x=skv(a,b)','x=a^2+b^2') - описание
z=skv(3,2) - обращение
disp(z)
__________
13
- результат
40
41.
Использование подпрограммы- функцииfunction x=skv(a, b) - описание
x=a^2+b^2
endfunction
z=skv(3,2) - обращение
______________
13
- результат
41
42.
4.3. Пример использования МНКПри использовании МНК вид аппроксимирующей
функции заранее считается известным. Необходимо
только найти коэффициенты функции.
Выполнить аппроксимацию экспериментальных
данных полиномом третьей степени вида
Необходимо найти коэффициенты K1, K2, K3, K4
Тогда в Scilab функцию аппроксимации можно будет
записать в виде:
Y=k(1)*x.^3+k(2)*x.^2+k(3)*x+k(4),
где k – вектор коэффициентов
42
43.
Для аппроксимации используется функцияdatafit (F,Z,b0)
F – имя функции, которая вычисляет разность
между экспериментальными и теоретическими
значениями
х(2)- экспериментальные значения
х(1)- теоретические значения, вычисляемые в
соответствии с видом аппроксимирующей функции
43
44.
// Описание функции:deff('Y=F(k,x)','Y=x(2)-(k(1)*x(1)^3+k(2)*x(1)^2 +…
k(3)*x(1)+k(4))')
или
function y=F(k, x)
y=x(2)-(k(1)*x(1)^3+ k(2)*x(1)^2+k(3)*x(1) +k(4))
endfunction
44
45.
// создание векторов координат исходных точекx=[0 0.7 1.4 1.6 2.3 3 3.5 4.2 4.8 5.6 6.3]
y=[0.01 0.1 0.16 0.17 0.12 0.04 -0.04 -0.12 -0.1 -0.08 0]
// установка начальных значений коэффициентов
nach=[0;0;0;0]
// определение коэффициентов аппроксимирующей
//функции (k) и ошибки аппроксимации (skv)
[k,skv]=datafit(F,[x;y],nach)
45
46.
// определение координат точек аппроксимирующейфункции
X=0:0.01:6.5
Y=k(1)*X.^3+k(2)*X.^2+k(3)*X+k(4)
plot(x,y,'o',X,Y)
Вид аппроксимирующей функции:
Y(x)=-5.069e-4 x3+ 0.0182 x2-0.1373 x+0.2724
Среднеквадратичная ошибка аппроксимации
skv=0.003
46
47.
4748.
Для определения коэффициентов линейнойрегрессии для аппроксимации с помощью функции
вида y(x)=ax+b используется стандартная функция
regline.
Пример:
x=[0.5 0.6 0.7 1.19 1.5 2.2 2.23]
y=[1.6 1.66 1.72 2.014 2.2 2.62 2.638]
[a,b]=reglinе(x,y)
xx=0.5:0.01:2.3
yy=a*xx+b
plot(x, y, 'o',xx,yy)
48
49.
4950.
5051. 5. Пример обработки результатов компьютерного эксперимента
i1i2
R(t)
J
uC
51
52.
После реализации модели и проведенияэкспериментов с моделью получены вектора
U1,U2,…,U9 при различных значениях емкости С,
в которых содержатся значения напряжений в
разные моменты времени.
Вектор варьируемого параметра содержит
значения емкостей, при которых проводились
опыты по модели.
Необходимо
найти
аппроксимирующую
функцию
для
зависимости
максимумов
напряжений от емкости С.
52
53. Пример 1
5354.
Алгоритм расчета:сформировать
вектор
максимальные значения
векторов
Umax,
содержащий
элементов исходных
Umax=[Max1, Max2, …, Max11, Max12]
Мах1, Max2,… - максимумы напряжений U1, U2,…
сформировать вектор C значений емкостей, при
которых проводились эксперименты по модели
C=[0.01 0.02 0.04 0.05 … 0.011 0.12]
или С=0.01:0.011:0.12
54
55.
для аппроксимации применить функциюdatafit
В качестве аппроксимирующей функции
использовать полином второй степени
y Ax 2 Bx C
Описание функции:
function y=F(k,x)
y= x(2)-(k(1)*x(1)^2+k(2)*x(1)+k(3))
endfunction
55
56.
Аппроксимация и построение графикаnu=[0;0;0]
[k,skv]=datafit(F,[C;Umax],nu)
disp(k)
disp(skv)
x=0:0.001:0.13
y=k(1)*x.^2+k(2)*x+k(3)
plot(C,Umax,'o',x,y)
56
57.
Коэффициенты вектора k:- 432.29667
- 47.601046
79.048925
Аппроксимирующая функция:
Y(x)=-432.29 x2 - 47.6 x+79.05
Погрешность skv=1.506
57
58.
Графическая интерпретация аппроксимации:58
Математика