Sei sulla pagina 1di 4

Aluno: talo Bruni Oliveira Rodrigues DRE: 116176616

(Lista de Exerccios 1 Tpicos Especiais em Teoria de Circuitos) Professor: Mesquita

Aluno: talo Bruni Oliveira Rodrigues DRE: 116176616


(Lista de Exerccios 1 Tpicos Especiais em Teoria de Circuitos) Professor: Mesquita
(CDIGO FONTE NA PROGRAMAO MATLAB R2013a)
% Exerccio 2.5
clear all % apaga contedo de todas as variveis
clc % Limpa a tela do terminal de visualizao
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp('# EXERCCIO 2.5
#')
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp('# Encontre os timos de cada funo objetivo. Observe que um timo #')
disp('# de uma funo no timo de para outras funes.
#')
disp('# MIN x pertencente R^n f(x) = [f1(x), f2(x), f3(x)]
#')
disp('# f1(x) = (x^2) + (y-1)^2
#')
disp('# f2(x) = (x-1)^2 + (y^2)+ 2
#')
disp('# f3(x) = (x^2) + ((y+1)^2) + 1
#')
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp(' ')
disp(' ')
disp('# MINIMIZAO DA FUNES f1(x), f2(x) e f3(x) COM MTODO DE NELDER-MEAD #')
disp(' ')
disp('* CONSIDERANDO COMO PONTO INICIAL X0=0 e Y0=0, TEMOS OS RESULTADOS ABAIXO:')
disp(' ')

% FUNO f1(x):
% Faamos b1(1)=x e b1(2)=y
% Usando como ponto inicial para f1(x) [0,0]
fun1=@(b1)(b1(1).^2)+(b1(2)-1)^2; % Funo f1(x)
% Minimizao de f1(x) usando funo fminsearch
% Varivel z1(1) retorna o valor de x no ponto de mnimo de f1(x)
% Varivel z1(2) retorna o valor de y no ponto de mnimo de f1(x)
% Varivel fval1 retorna o valor de da funo no eixo z de f1(x)
% Varivel status_final_minimizacao1 retorna status no final da minimizao
% de f1(x)
% Varivel output1.iterations retorna nmero de iteraes em f1(x)
% Varivel output1.funcCount retorna nmero de execues em f1(x)
[z1,fval1,status_final_minimizacao1,output1]=fminsearch(fun1,[0,0]);

% FUNO f2(x):
% Faamos b2(1)=x e b2(2)=y
% Usando como ponto inicial para f2(x) [0,0]
fun2=@(b2)((b2(1)-1).^2)+(b2(2).^2)+2; % Funo f2(x)
% Minimizao de f2(x) usando funo fminsearch
% Varivel z2(1) retorna o valor de x no ponto de mnimo de f2(x)
% Varivel z2(2) retorna o valor de y no ponto de mnimo de f2(x)
% Varivel fval2 retorna o valor de da funo no eixo z de f2(x)
% Varivel status_final_minimizacao2 retorna status no final da minimizao
% de f2(x)
% Varivel output2.iterations retorna nmero de iteraes em f2(x)
% Varivel output2.funcCount retorna nmero de execues em f2(x)
% Minimizao de f2(x) usando funo fminsearch
[z2,fval2,status_final_minimizacao2,output2]=fminsearch(fun2,[0,0]);

% FUNO f3(x):
% Faamos b3(1)=x e b3(2)=y
% Usando como ponto inicial para f3(x) [0,0]
fun3=@(b3)(b3(1)^2)+((b3(2)+1)^2)+1; % Funo f3(x)
% Minimizao de f1(x) usando funo fminsearch

% Varivel z3(1) retorna o valor de x no ponto de mnimo de f3(x)


% Varivel z3(2) retorna o valor de y no ponto de mnimo de f3(x)
% Varivel fval3 retorna o valor de da funo no eixo z de f1(x)
% Varivel status_final_minimizacao3 retorna status no final da minimizao
% de f3(x)
% Varivel output3.iterations retorna nmero de iteraes em f3(x)
% Varivel output3.funcCount retorna nmero de execues em f3(x)
% Minimizao de f3(x) usando funo fminsearch
[z3,fval3,status_final_minimizacao3,output3]=fminsearch(fun3,[0,0]);
% Grfico 3D com localizao dos pontos de mnimo das funes f1(x)
%f2(x) e f3(x).
x=-10:1:10; % Configura faixa de valores do eixo x do grfico
y=-10:1:10; % Configura faixa de valores do eixo y do grfico
[X,Y]=meshgrid(x,y); % plota os eixos do grfico 3D
title('PONTOS DE MNIMO DA FUNES f1(x), f2(x) e f3(x)','fontweight','bold')
ylabel('Eixo (y)','fontweight','bold')
xlabel('Eixo (x)','fontweight','bold')
zlabel('Eixo (z) f(x)','fontweight','bold')
hold on % Mantm no grfico
% Plotagem do ponto de mnimo da funo f1(x)
plot3(z1(1),z1(2),fval1,'O', 'MarkerSize',10, 'MarkerFaceColor','red')
text(z1(1),z1(2),fval1+0.2,'Mnimo(f_1(x))','fontweight','bold')
hold on % Mantm no grafico
% Plotagem do ponto de mnimo da funo f2(x)
plot3(z2(1),z2(2),fval2,'O', 'MarkerSize',10, 'MarkerFaceColor','blue')
hold on % Mantm no grfico
text(z2(1),z2(2),fval2+0.2,'Mnimo(f_2(x))','fontweight','bold')
hold on
% Plotagem do ponto de mnimo da funo f2(x)
plot3(z3(1),z3(2),fval3,'O', 'MarkerSize',10, 'MarkerFaceColor','green')
hold on % Mantm no grfico
grid on % Coloca linhas de grade
view(15,30) % Configura perspectiva de visualizao do grfico 3D
text(z3(1),z3(2),fval3+0.2,'Mnimo(f_3(x))','fontweight','bold')
hold on % Mantm no grfico

% Imprimir na tela do terminal os resultados da f1(x)


disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp('# RESULTADOS DA MINIMIZAO DA FUNO f1(x)
#')
disp('#
#')
disp('# * Funo f1(x) convergiu para uma soluo, onde:
#')
disp('# Zmin1 = f1 (Xmin1 , Ymin1) = >>
#')
fprintf('# %d = f (%d , %d)
',fval1,z1(1),z1(2))
disp('#
#')
disp('#
#')
fprintf('# * Nmero total de iteraes: %d
#',output1.iterations)
disp('
')
fprintf('# * Nmero total de execues da funo: %d
#',output1.funcCount)
disp('
')
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp(' ')
disp(' ')
% Imprimir na tela do terminal os resultados da f2(x)
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp('# RESULTADOS DA MINIMIZAO DA FUNO f2(x)
#')
disp('#
#')
disp('# * Funo f2(x) convergiu para uma soluo, onde:
#')
disp('# Zmin2 = f2 (Xmin2 , Ymin2) = >>
#')
fprintf('# %d = f (%d , %d)
',fval2,z2(1),z2(2))
disp('#
#')
disp('#
#')

fprintf('# * Nmero total de iteraes: %d


#',output2.iterations)
disp('
')
fprintf('# * Nmero total de execues da funo: %d
#',output2.funcCount)
disp('
#')
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp(' ')
disp(' ')
% Imprimir na tela do terminal os resultados da f3(x)
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')
disp('# RESULTADOS DA MINIMIZAO DA FUNO f3(x)
#')
disp('#
#')
disp('# * Funo f3(x) convergiu para uma soluo, onde:
#')
disp('# Zmin3 = f3 (Xmin2 , Ymin2) = >>
#')
fprintf('# %d = f (%d , %d)
',fval3,z3(1),z3(2))
disp('#
#')
disp('#
#')
fprintf('# * Nmero total de iteraes: %d
#',output3.iterations)
disp('
')
fprintf('# * Nmero total de execues da funo: %d
#',output3.funcCount)
disp('
#')
disp('# # # # # # # # # # # # # # # # # # # # # # # # # # # #')

Potrebbero piacerti anche