Система математических расчетов MATLAB

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

°йти функцию, которая описывает взаимосвязь между некоторыми наблюдаемыми (или найденными экспериментально) переменными. Оп-ределение коэффициентов такой функции ведет к решению задачи переопределенной систе-мы линейных уравнений, то есть системы, у которой число уравнений превышает число не-известных. Указанные коэффициенты можно легко найти с использованием оператора обрат-ного деления \ (backslash). Допустим, вы производили измерения переменной y при разных значениях времени t.

t = [0 0.3 0.8 1.1 1.6 2.3];

 

y = [0.5 0.82 1.14 1.25 1.35 1.40];

 

plot(t,y,o); grid on

 

 

В следующих разделах мы рассмотрим три способа моделирования (аппроксимации) этих данных:

  • Методом полиномиальной регрессии
  • Методом линейно-параметрической (linear-in-the-parameters) регрессии
  • Методом множественной регрессии

 

Полиномиальная регрессия

 

Основываясь на виде графика, можно допустить, что данные могут быть аппроксимированы полиномиальной функцией второго порядка:

 

y = a0 + a1t + a2t2

 

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

представляемых следующей матрицей 6х3:

 

X = [ones(size(t)) t t.^2]

 

X = 1.0000 0 0

1.0000 0.3000 0.0900

1.0000 0.8000 0.6400

1.0000 1.1000 1.2100

1.0000 1.6000 2.5600

1.0000 2.3000 5.2900

 

Решение находится при помощи оператора \ :

 

a = X\y

a =

0.5318

0.9191

- 0.2387

 

Следовательно, полиномиальная модель второго порядка наших данных будет иметь вид

 

y = 0.5318 + 0.9191t 0.2387 t2

 

Оценим теперь значения модели на равноотстоящих точках (с шагом 0.1) и нанесем кривую на график с исходными данными.

 

T = (0 : 0.1 : 2.5);

 

Y = [ones(size(T)) T T.^2]*a;

 

plot(T,Y,-,t,y,o); grid on

 

 

Очевидно, полиномиальная аппроксимация оказалась не столь удачной. Здесь можно или по-высить порядок аппроксимирующего полинома, или попытаться найти какую-либо другую функциональную зависимость для получения лучшей подгонки.

 

 

Линейно-параметрическая регрессия

 

Вместо полиномиальной функции, можно было-бы попробовать так называемую линейно-параметрическую функцию. В данном случае, рассмотрим экспоненциальную функцию

 

y = a0 + a1?-t + a2t?-t

 

Здесь также, неизвестные коэффициенты a0 , a1 и a2 могут быть найдены методом наимень-ших квадратов. Составим и решим систему совместных уравнений, сформировав регресси-онную матрицу X, и применив для определения коэффициентов оператор \ :

 

X = [ones(size(t)) exp(- t) t.*exp(- t)];

 

a = X\y

 

a =

1.3974

- 0.8988

0.4097

 

Значит, наша модель данных имеет вид

 

y = 1.3974 0.8988?-t + 0.4097t?-t

 

Оценим теперь, как и раньше, значения модели на равноотстоящих точках (с шагом 0.1) и на-несем эту кривую на график с исходными данными.

 

 

 

 

Как видно из данного графика, подгонка здесь намного лучше чем в случае полиномиальной функции второго порядка.

 

 

Множественная регрессия

 

Рассмотренные выше методы аппроксимации данных можно распространить и на случай бо-лее чем одной независимой переменной, за счет перехода к расширенной форме записи. До-пустим, мы измерили величину y для некоторых значений двух параметров x1 и x2 и полу-чили следующие результаты

 

x1 = [0.2 0.5 0.6 0.8 1.0 1.1] ;

 

x2 = [0.1 0.3 0.4 0.9 1.1 1.4] ;

 

y = [0.17 0.26 0.28 0.23 0.27 0.24] ;

 

Множественную модель данных будем искать в виде

 

y = a0 + a1x1 + a2x2

 

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

 

X = [ones(size(x1)) x1 x2];

 

a = X\y

 

a =

0.1018

0.4844

-0.2847

 

Следовательно, модель дающая минимальную среднеквадратическую ошибку аппроксима-ции имеет вид

 

y = 0.1018 + 0.4844x1 0.2847x2

 

Для проверки точности подгонки найдем максимальное значение абсолютного значения от-клонений экспериментальных и расчетных данных.

 

Y = X*a;

 

MaxErr = max(abs(Y - y))

 

MaxErr =

0.0038

 

Эта ошибка дает основание утверждать, что наша модель достаточно адекватно отражает ре-зультаты наблюдений.