Anda di halaman 1dari 3

Segunda tarea

1. Implementar la funcin Humps

function [out1, out2] = humps(x)


%HUMPS A function used by QUADDEMO, ZERODEMO and FPLOTDEMO.
% Y = HUMPS(X) is a function with strong maxima near x=.3
% and x = .9.
%
% [X,Y] = HUMPS(X) also returns X.
% With no input arguments, HUMPS uses X= 0: .05:1.
if nargin==0
x=0:.05:1;
end

y= 1./((x-.3).^2+.01) + 1./ ((x-.9).^2+.04) -6;

if nargout==2
out1=x;
out2=y;
else
out1=y;
end

2. Aproximacin Takagi Sugeno de la funcin Humps


% UNAC-Maestria en control y automatizacion

% Curso: Control Inteligentes

% Tarea adicional: Aproximacin no lineal usando Takagi Sugeno

% Alumno: Jos Luis Muoz Meza jlmunozmeza@outlook.com.pe

% Profesor: Ricardo Rodriguez Bustinza

% Junio-2017

% Aproximacin de funciones no lineales aplicando lgica difusa

clear all, close all, clc

% Conforme al algoritmo de Takagi Sugeno se debe trabajar en regiones donde

% Sx se continua monotonicamente creciente o decreciente

% En este caso HUMP(x)/x tiene una indeterminacin en x=0

% Se procede a identificar dos regiones de Sx

x1=0.1:0.01:0.27;

x2=0.28:0.01:1.5;

x=0.1:0.01:1.5;

% Se obtiene humps en el rango de evaluacin completo (excluyendo x=0)

Fx= humps(x);

% Se calcular Sx para cada region


Sx1=(1./x1).*humps(x1);

Sx2=(1./x2).*humps(x2);

subplot(211);

plot(x1,Sx1), grid

subplot(212);

plot(x2,Sx2), grid

% minimos y maximos en cada rango

smin1=min(Sx1); smax1=max(Sx1);

smin2=min(Sx2); smax2=max(Sx2);

% Se muestran las funciones de pertenencia para cada rango

figure(2)

% primer rango

w11=(Sx1<smin1)+((Sx1-smax1)/(smin1-smax1)).* not((smax1<Sx1)+(Sx1<smin1));

w21=not((Sx1<smin1)+(smax1<Sx1)).*(Sx1-smin1)/(smax1-smin1)+(smax1<Sx1);

subplot(211)

plot(Sx1, w11), hold, plot(Sx1, w21), grid

% segundo rango

w12=(Sx2<smin2)+((Sx2-smax2)/(smin2-smax2)).* not((smax2<Sx2)+(Sx2<smin2));

w22=not((Sx2<smin2)+(smax2<Sx2)).*(Sx2-smin2)/(smax2-smin2)+(smax2<Sx2);

subplot(212)

plot(Sx2, w12), hold, plot(Sx2, w22), grid

% se defuzzifican ambos

f11=smin1*x1;

f21=smax1*x1;

fx1=w11.*f11+w21.*f21;

f12=smin2*x2;

f22=smax2*x2;

fx2=w12.*f12+w22.*f22;

% se agregan para construir la funcion completa aproximada

fx=[fx1 fx2];

figure;

%comparando la funcion HUMPS con la funcion aproximada


plot(x,Fx, x, fx, '--m'); grid

% los resultados son bastante ms que aceptables