Ajuste de curva

função de ajuste de curva

Informações iniciais:

  1. Copie e cole o código abaixo em um m.file do MATLAB;

  2. Dúvida sobre o uso da função: digite >> " help ajusteSolucao " irá aparecer informações sobre a função bem como entrada e saída;

  3. preste atenção na importância do formado de dados: matriz de m linhas e n colunas em que as colunas estão associados aos parâmetros de interesse, sendo necessariamente a primeira coluna uma base de tempo;

  4. Em função do modo que esteja ajustando é interesante que o chute inicial (linha 24 do código abaixo) seja ajustada para um valor mais próximo do resultado.

código operacional em MATLAB 2014a

function ajusteSolucao(DADOS, coluna)

%% função que apresenta um ajute de curva ao modelo de solução de segunda

% ordem do tipo:

% "180/pi*A*exp(-xsi*omega.*tempo).*cos(omega*sqrt(1-xsi.^2).*tempo+B)+C"

% o ajuste é feito com dados de ensaio

%%INPUT:

% DADOS: matriz de m linhas e n colunas em que as colunas estão associados

% aos parâmetros de interesse, sendo necessariamente a primeira coluna uma

% base de tempo.

% coluna: número inteiro que representa a coluna da matriz DADOS que possui

% o parâmetro cujo ajuste deve ser feito.

%%OUTPUT:

% PARAM: parâmetros A, xsi, omega, B e C do modelo ajustado.

% REDISUO: residuo advindo do ajuste de curvas

% plot dos gráficos do ensaio e do ajuste com legenda para pré julgamento

% da informação recebida

%% AUTOR

%Guilherme Soares e Silva

%primeira versão: 10/2017

%última versão : 09/2018

%%

parametro = DADOS(:,coluna);

tempo = DADOS(:,1)-DADOS(1,1);

X0 = [6 .01 2.603 0.0708 4.214];

% Y = @(vetor)solucaoSegOrdem(vetor, tempo);

[PARAM,RESIDUO] = lsqcurvefit(@solucaoSegOrdem,X0,tempo, parametro)

Y = solucaoSegOrdem(PARAM, tempo);

figure;

plot(tempo,Y,'k','linewidth',2); hold on;

plot(tempo,parametro,'k-o');

legend('ajuste de curva','dado de ensaio')

ylabel('parâmetro de interesse')

xlabel('[s]')

grid minor;

end

function Y = solucaoSegOrdem(vetor, tempo)

A = vetor(1);

xsi = vetor(2);

omega = vetor(3);

B = vetor(4);

C = vetor(5);

Y = 180/pi*A*exp(-xsi*omega.*tempo).*cos(omega*sqrt(1-xsi.^2).*tempo+B)+C;

end