martes, 28 de febrero de 2012

Método de Punto Fijo en Matlab

clear all; 
 clc;  
  fprintf('\nCalculo de la raizde una ecuacion por el metodo del Punto Fijo\n\n'); 
   f=input('Dame la funcion f(x):','s'); 
     xi=input('Dame el valor inicial de x : '); 
       e=input('Dame el porciento del error : '); 
     ea=1000; 
   c=1; 
 x=xi; 
  while ea>e 
    g=eval(f); 
      ea=abs((g-x)/g*100); 
     x=g; 
   c=c+1; 
  end 
 fprintf('\n\n\n\nLa raiz exacta es: %d',g) 
    fprintf('\n\nNumero de iteraciones: %d',c);

domingo, 26 de febrero de 2012

Metodo de Simpson 1/3 en matlab

clear all;
 clc;
    fprintf('Calculo de la integral por el metodo de Simpson de 1/3\n\n');
     f=input('introduce la funcion:','s');
       a=input('lime inferior:');
     b=input('limite superior:');
   c=input('numero de segmentos a dividir (numero par):');
  h=(b-a)/c;
 z=0;
x=a;
for i=1:c;
if (-1)^i==1

k=eval(f);

z=z+k;

end

x=h*i;
end
 zz=0;
x=a;
for i=2:c;
 if (-1)^i==-1
   k=eval(f);
  zz=zz+k;
 end
x=h*i;
end
  x=a;
  if x==a
    d=eval(f);
  end
 x=b;
   if x==b
     e=eval(f);
   end
     z=z*4;
       v=zz*2;
        z=z+v+d+e;
      z=z/(3*c);
  z=z*(b-a)
fprintf('Resultado ');

viernes, 24 de febrero de 2012

Interpolacion Polinomial Simple en matlab

clear  all; 
    clc;
      fprintf('Interpolacion con el Metodo de Aproximacion Polinomial Simple\n\n'); 
   n=input('Numero de puntos que se tienen: ');

for i=1:n 
    x(1,i)=input('dame los valores de xi:'); 
end

for i=1:n 
    xi(1,i)=input('dame los valores de f(xi):'); 
end
%imprimiendo los Valores x, xi
x 
xi 
xint=input('Numero para el que desea interpolar x: '); 
%determinando los parametros a0,1,2
i=1; 
while i<=n 
    a(i,1)=1; 
    j=2;

    while j<=n 
        a(i,j)=a(i,j-1)*x(1,i); 
        j=j+1; 
    end 
    a(i,n+1)=xi(1,i); 
    i=i+1; 
end 
%Resolviendo mediante el metodo de Gauss-jordan
c=n+1; 
f=n; 
for k=1:c-1 
    a(k,:)=a(k,:)/a(k,k); 
    for j=k+1:f 
        a(j,:)=a(j,:)-a(k,:)*a(j,k); 
        j=j+1; 
    end 
    k=k+1; 
end
for k=f:-1:2 
    for j=k-1:-1:1 
        a(j,:)=a(j,:)-a(k,:)*a(j,k); 
        j=j-1; 
    end 
    k=k-1; 
end
r=0; 
for m=1:n-1 
    r=r+(a(m+1,n+1))*xint^m; 
end
  r=r+a(1,n+1); 
   fprintf('\n\nresultado xi: %d\n',r);
%Graficando Resultados
    plot(x,xi) 
  grid 
xlabel('x');ylabel('y')

Detección de Rostro en matlab

vid = videoinput('winvideo',1,'YUY2_640x480');
 set(vid, 'FramesPerTrigger', Inf);
  set(vid, 'ReturnedColorspace', 'rgb')
    vid.FrameGrabInterval = 5;
     start(vid)
while(vid.FramesAcquired<=100)
   data = getsnapshot(vid);
     diff_im = imsubtract(data(:,:,1), rgb2gray(data));  
           diff_im = medfilt2(diff_im, [3 3]);
        diff_im = imadju  st(diff_im);
     level = graythresh(diff_im);
   bw = im2bw(diff_im,level);
 BW5 = imfill(bw,'holes');
bw6 = bwlabel(BW5, 8);
 stats = regionprops(bw6,['basic']);
   [N,M]=size(stats);
if (bw==0)
        break;
else
     tmp = stats(1);
for i = 2 : N
      if stats(i).Area > tmp.Area
        tmp = stats(i);
      end
end
  bb = tmp.BoundingBox;
   bc = tmp.Centroid;
    imshow(data)
     hold on
   rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
 hold off
end
end
 stop(vid);
  flushdata(vid);

martes, 21 de febrero de 2012

Método de la Secante en Matlab (Version 2 )

%USANDO EL COMANDO eval() lo cual evita que se vectorize demasiado el código

clear all;
  clc;
   fprintf('\nCalculo de la raiz de una ecuacion por el metodo de la Secante\n\n');
    f=input('Dame la funcion f(x) : ','s');
      x0=input('Dame el valor del intervalo inferior de x : ');
    x1=input('Dame el valor del intervalo superior de x : ');
  e=input('Dame el porciento del error : ');
 ea=1000;
c=1;  
   while ea>e
    x=x0;
    g=eval(f);
      x=x1;
        gg=eval(f);
          xi=x1-((gg*(x0-x1))/(g-gg));
            ea=abs((xi-x1)/xi)*100;
          x0=x1;
        x1=xi;
      c=c+1;
   end
fprintf('\n\n\n\nLa raiz exacta es: %d',xi)
fprintf('\n\nNumero de iteraciones: %d\n',c);                                                                                                                    

domingo, 19 de febrero de 2012

Regresión Lineal en Matlab

clear all; 
 clc;
  fprintf('Metodo de Regresion Lineal \n\n'); 
  n=input('Numero de puntos: ');

   for i=1:n 
      x(1,i)=input('dame los valores de x: '); 
   end

      for i=1:n 
        y(1,i)=input('dame los valores de y: '); 
     end
% se nota extraño pero asi se mostraran los resultados
%en forma de Vector. 
 x 
   y 
 
    plot(x,y) 
      grid 
        xlabel('x');ylabel('y') 
          pause
         a=0; 
       for i=1:n 
     a=a+x(1,i)*y(1,i); 
       end

 b=0; 
for i=1:n 
    b=b+x(1,i)*x(1,i); 
end

  c=0; 
  for i=1:n 
      c=c+x(1,i); 
  end

       e=0; 
for i=1:n 
    e=e+y(1,i); 
end

d=0; 
   d=c/n; 
     f=0; 
       f=e/n; 
         a1=(n*a-c*e)/(n*b-c*c); 
       a0=f-a1*d;
     clc; 
  fprintf('Ecuacion con la que se encuentran los nuevos valores de y \n\n'); 
fprintf(' y = %d + %d x',a0,a1);

for i=1:n 
    y(1,i)=a0+a1*x(1,i); 
end
    fprintf('\n\nPresiona enter para ver la nueva grafica\n\n'); 
      pause
        %Grafica con los Datos Ajustados
      plot(x,y) 
    grid 
  xlabel('x');ylabel('y') 
pause

Método de la Regla Falsa en Matlab

xai=input('Ingrese limite inferior: ');
 xbi=input('Ingrese limite superior: ');
  tol=input('Ingrese el porcentaje de Error: ');
   syms x;
    f=input('Ingrese la Funcion: ');
     f1=subs(f,x,xai);
   f2=subs(f,x,xbi);
  i=1;
 ea(1)=100;
if f1*f2 < 0
    xa(1)=xai;f1=subs(f,x,xa(1));
     xb(1)=xbi;f2=subs(f,x,xb(1));
     xr(1)=xa(1)-f1*(xb(1)-xa(1))/(f2-f1); f3=subs(f,x,xr(1));
      fprintf('It.              Xa           Xr            Xb            Error aprox \n');
     fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));
    while abs(ea(i))>=tol,
      if f1*f3 < 0
         xa(i+1)=xa(i);f1=subs(f,x,xa(i+1));
           xb(i+1)=xr(i);f2=subs(f,x,xb(i+1));
      end
      if f1*f3> 0
          xa(1)=xr(i);
         xb(1)=xb(i);
      end
        xr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);
         ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1)))*100;
         fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...
              i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));
      i=i+1;
   end
else
    fprintf('No existe una raíz en ese intervalo');
end