Mínimos Quadrados: Estimação de Parâmetros e Análise de Erros
Classificado em Computação
Escrito em em português com um tamanho de 3,34 KB
Mínimos Quadrados (Objetiva minimizar o somatório dos erros)
Estimação de parâmetros de um modelo ARX
Definindo os dados de entrada [u(k)] e saída [y(k)]
y = [12.2 11.8 11.6 11.6 11.8 12.2 13.0 14.4 16.2 15.8];
u = [2.5 2.5 2.5 2.5 2.5 2.23 2.2 2.2 2.21 2.2];
O vetor de regressores é:
psi(k-1) = [y(k-1) y(k-2) u(k-3) u(k-1) u(k-2)]
e com isso é possível obter a seguinte matriz 'psi', utilizando como saída os 6 últimos elementos de y(k)
Y = y(4:end)';
Aplicando a equação matricial (5.43) [pág. 237, Aguirre], obtém-se o vetor de parâmetros 'Theta'
O vetor de resíduos será:
qsi = Y - psi*Theta;
E por fim, o produto interno de cada regressor com o vetor de resíduos, que será suficientemente pequeno, confirmando a característica da ortogonalidade do estimador de Mínimos Quadrados
-----------------------------------------------------
Mínimos Quadrados com uma entrada qualquer
un = [2 5 8 14 26 23 18 15 6 10];
yn = [0 0 0];
a1 = Theta(1);
a2 = Theta(2);
b1 = Theta(3);
b2 = Theta(4);
b3 = Theta(5);
for k = 4:1:length(un)
yn(k) = a1*yn(k-1) + a2*yn(k-2) + b1*un(k-3) + b2*un(k-1) + b3*un(k-2);
theta = inv(Psi'*Psi)*Psi'*Yn;
--------------------------------------------------------
Mínimos Quadrados (erro menor)
Passo 1 - Obter x e y (dados de um experimento)
x = (1:0.1:5)'; variável criada. Representa a obtida de um sistema
n = length(x);
y = (x-3).*(x-1).*(x-4).*(x-4.5).*(x+1) + 8*cos(x) + 5*rand(n,1); função para representar a curva do experimento. O 'rand' cria uma aleatoriedade na função
Passo 2 - Analisar os dados e decidir qual curva utilizar
plot(x,y,'.'); plotagem discreta
Passo 3 - Utilizar Método dos mínimos quadrados para encontrar os parâmetros (a,b,c...). Para não confundir, iremos chamá-lo de theta (th). Portanto, y_ap = A*th (no vídeo eu expliquei como y_ap = A*X): aproxima de uma reta
A = [x.^5 x.^4 x.^3 x.^2 x x.^0 cos(x)]; quanto mais parâmetros, menor é o erro
th = inv(A'*A)*A'*y
th2 = pinv(A)*y; pseudoinversa
y_ap = A*th; y_ap é o y aproximado
hold on
plot(x, y_ap,'r')
Passo 4 (Opcional) - Avaliar o erro.
e = y - y_ap; erro
E = (e'*e)/n soma(e.^2) = e'*e valor do erro médio quadrático, n=quantidade de elementos em x
Mínimos Quadrados (erro menor)
Passo 1 - Obter x e y (dados de um experimento)
x = (1:0.1:5)'; variável criada. Representa a obtida de um sistema
n = length(x);
y = (x-3).*(x-1).*(x-4).*(x-4.5).*(x+1) + 8*cos(x) + 5*rand(n,1); função para representar a curva do experimento. O 'rand' cria uma aleatoriedade na função
Passo 2 - Analisar os dados e decidir qual curva utilizar
plot(x,y,'.'); plotagem discreta
Passo 3 - Utilizar Método dos mínimos quadrados para encontrar os parâmetros (a,b,c...). Para não confundir, iremos chamá-lo de theta (th). Portanto, y_ap = A*th (no vídeo eu expliquei como y_ap = A*X): aproxima de uma reta
A = [x x.^0];
th = inv(A'*A)*A'*y
y_ap = A*th; y_ap é o y aproximado
hold on
plot(x, y_ap,'r')
Passo 4 (Opcional) - Avaliar o erro.
e = y - y_ap; erro
E = (e'*e)/n soma(e.^2) = e'*e erro médio quadrático, n=quantidade de elementos em x