Trabalho de Calculo Numérico
Por: Hugo.bassi • 21/3/2018 • 1.467 Palavras (6 Páginas) • 360 Visualizações
...
n=size(x,1);%Quantidade de pontos presentes no arquivo
syms p X %Variáveis simbólicas para o polinômio e sua variável
% AJUSTE POLINOMIAL %
z=1; %guardará a posição em que o gráfico do polinômio será plotado no subplot
grau=1; %grau inicial do polinômio
%laço criado para que em um mesmo programa o grau do polinômio varie e seja
%plotado os gráficos de seus diferentes graus do mesmo conjunto de pontos
while(grau
disp(['AJUSTE POLINOMIAL DE GRAU ', num2str(grau)])
%Matriz que guarda as operações feitas com a coordenada x dos pontos,
%resultante do método dos mínimos quadrados
A=zeros(grau+1);
for k=1:grau+1 %varia as linhas da matriz, será importante na definição do expoente inicial dos pontos em x
%a variável e controla os expoentes dos xi presentes nos somatórios
%a cada vez que uma linha for acrescentada o expoente fica com o
%número dessa linha
e=k;
for l=1:grau+1 %varia as colunas da matriz
for i=1:n %somatório dos xi cujos expoentes dependem da coluna e da linha que estão
A(k,l)=A(k,l)+x(i)^(e-1);
end
e=e+1;%imcremento nos expoentes cada vez que uma coluna for pulada
end
end
%Matriz que guarda as operações feitas com a coordenada y e x dos pontos,
%resultante do método dos mínimos quadrados
B=zeros(grau+1,1);
for k=1:grau+1 %varia as linhas da matriz
%somatório dos xi*yi cujos expoentes dos xi dependem da linha que estão
for i=1:n
B(k)=B(k)+(x(i)^(k-1)*y(i)); %o expoente ao qual o x é elevado depende do número da linha em que está
end
end
a=eliminacao(A, B); %encontrado os coeficientes resultantes do método dos mínimos quadrados
%o ' após a variável realiza a transposição do vetor (vetor coluna para vetor linha)
%a função fliplr inverte a ordem dos coeficientes da direita para esquerda
c=fliplr(a');
p=symfun(poly2sym(c, X),X)%cria um polinômio a partir da base canônica de acordo com os coeficientes presentes em c
%plotando o gráfico
subplot(2,ceil(n/4),z)
i=x(1):0.1:x(n); %intervalo do gráfico
ezplot(p,i)
hold on
grid on
plot(x,y, 'p r')
title(['AJUSTE POLINOMIAL DE GRAU ', num2str(grau)])
hold off
[e1 e2 e3]=erros(p, x, y); %calculando os erros pedidos a partir da função erros
%Informando os erros
fprintf('Erro relativo: %.4f\nDesvio relativo em relação a média: %.4f\n', e1,e2)
fprintf('Coeficiente de variação da amostra: %.4f\n\n\n', e3)
grau=grau+2; %incrementando o grau do polinômio em 2
z=z+1; %alterando a posição do gráfico no subplot
end
% AJUSTAMENTO POR UMA FUNÇÃO EXPONENCIAL %
disp('AJUSTAMENTO POR UMA FUNÇÃO EXPONENCIAL')
Y=log(y); %matriz de y resultante do processo de linearização de equações não-lineares
%As matrizes A e B resultantes do m. dos mínimos quadrados apresentam
%quatro somatórios distintos
sx=0; %somatórios com todos os x
sy=0; %somatório com todos os y (onde x é elevado a 0, =1)
sxy=0; %somatório com todos os x e y (onde x é elevado a 1)
sxx=0; %somatório dos x ao quadrado
for i=1:n %varre todos os pontos do arquivo
sx=sx+x(i);
sy=sy+Y(i); %o Y é o resultante da linearização
sxy=sxy+(x(i)*Y(i)); %o Y é o resultante da linearização
sxx=sxx+(x(i)*x(i));
end
%montando as matrizes
A=[n, sx; sx, sxx];
B=[sy; sxy];
a=eliminacao(A, B); %encontrado os coeficientes resultantes do método dos mínimos quadrados
b=exp(a(1)); %encontrando o coeficiente do polinômio
m=a(2);
p=symfun(b*exp(m*X),X) %contruindo um polinômio em função de X do ajuste exponencial
%plotando o gráfico
figure
i=x(1):0.1:x(n);
...