jueves, 20 de febrero de 2014

fprintf('                                    ------------------\n')
fprintf('                                    MÉTODO DE BISECIÓN\n')
fprintf('                                    ------------------\n')
fprintf('\n');
syms x
h=input('- Defina la función                   : ');
a=input('- Introduzca el valor de a            : ');
b=input('- Introduzca el valor de b            : ');
error=input('- Introduzca el valor de precisión    : ');
g=h;
fa=subs(g,a);
fb=subs(g,b);
if fa*fb < 0
   c=a+(b-a)/2;
   fc=subs(g,c);
   m=a;
   n=b;
   cont=1;
   fprintf('\n\n');
   fprintf(' |------------------------------------------------------------------------------------------|\n');
   fprintf(' | n= %3.0f  |  a= %0.9f  |  b= %0.9f  |  P= %0.9f  |  Error= %e |\n', cont,m,n,c,abs(fc))
   while abs(fc) > error
      cont=cont+1;
      if fa*fc > 0
         a=c;
      else
         b=c;
      end
      c=a+(b-a)/2;
      fc=subs(g,c);
      m=a;
      n=b;
      fprintf(' | n= %3.0f  |  a= %0.9f  |  b= %0.9f  |  P= %0.9f  |  Error= %e |\n', cont,m,n,c,abs(fc))
   end
end
   fprintf(' |------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                    : %10.9f\n',c);
fprintf('\n\n');




fprintf('                                   -----------------\n')
fprintf('                                   MÉTODO DE NEVILLE\n')
fprintf('                                   -----------------\n')
fprintf('\n');
syms x
res=input('- La Funcion le fue dada(Si=1,No=0)?     : ');
if res==1
   fun=input('- Introduzca la Funcion F(x)             : ','s');
end
Xi=input('- Introduzca la cantidad para aproximar  : ');
n=input('- Introduzca la cantidad de puntos dados : ');
fprintf('\n\n');
for i=0:(n-1),
   fprintf('- Introduzca X%1.0f ',i);
   X(i+1)=input    ('    =   ');
   if res==0
    fprintf('- Introduzca F(X%1.0f) ',i);
    FX(i+1)=input(' =   ');
    else
      FX(i+1)=funcion(X(i+1),fun);
   end
end

for i=1:n,
    Q(i,1)=FX(i);
end

for i=2:n,
   for j=i:n,
      Q(j,i)=(((Xi-X(j-i+1))*Q(j,i-1))-((Xi-X(j))*Q(j-1,i-1)))/(X(j)-X(j-i+1));
    end
end
fprintf('\n\n');
for i=2:n,
   for j=i:n,
      fprintf('- Q (%1.0f,%1.0f)  =  %3.8f\n ',j-1,i-1,Q(j,i));
      fprintf('\n');
   end
 
end




fprintf('                                 ------------------------\n')
fprintf('                                 MÉTODO DE NEWTON RAPHSON\n')
fprintf('                                 ------------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función                 : ');
Po=input('- Introduzca el valor de Xo         : ');
error=input('- Introduzca el valor de precisión  : ');
g=h;
i=subs(g,Po);
j=diff(g,x);
k=subs(j,Po);
P=Po-(i/k);
E=P-Po;
cont=1; 
fprintf('\n\n');
fprintf(' |--------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f  |  Xo= %0.9f  |  X= %0.9f  |  Error= %e |\n', cont,Po,P,abs(E))
while abs(E) > error
   cont=cont+1;
   Po=P;
   i=subs(g,Po);
   j=diff(g,x);
   k=subs(j,Po);
   P=Po-(i/k);
   E=P-Po;
   fprintf(' | n= %3.0f  |  Xo= %0.9f  |  X= %0.9f  |  Error= %e |\n', cont,Po,P,abs(E))
end
fprintf(' |--------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                  : %10.9f\n',P);
fprintf('\n\n');
fprintf('- El Error absoluto es              : %e\n',abs(E));
fprintf('\n\n');




fprintf('                                   --------------------\n')
fprintf('                                   MÉTODO DE PUNTO FIJO\n')
fprintf('                                   --------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función                 : ');
Po=input('- Introduzca el valor de Po         : ');
error=input('- Introduzca el valor de precisión  : ');
g=h;
P=subs(g,Po);
E=P-Po;
cont=1; 
fprintf('\n\n');
fprintf(' |-------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f  |  Po= %0.9f  |  P= %0.9f  |  Error= %e  |\n', cont,Po,P,abs(E))
while abs(E) > error
   cont=cont+1;
   Po=P;
   P=subs(g,Po);
   E=P-Po;
   fprintf(' | n= %3.0f  |  Po= %0.9f  |  P= %0.9f  |  Error= %e  |\n', cont,Po,P,abs(E))
end
fprintf(' |-------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                  : %10.9f\n',P);
fprintf('\n\n');





fprintf('                                ---------------------------\n')
fprintf('                                MÉTODO DE LA POSICIÓN FALSA\n')
fprintf('                                ---------------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función                 : ');
Po=input('- Introduzca el valor de Po         : ');
P1=input('- Introduzca el valor de P1         : ');
error=input('- Introduzca el valor de precisión  : ');
g=h;
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
cont=1; 
fprintf('\n\n');
fprintf(' |----------------------------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f  |  Po= %0.9f  |  P1= %0.9f  |   P2= %0.9f  |  Error= %e |\n', cont,Po,P1,P2,abs(E))
while abs(E) > error
   cont=cont+1;
   i=subs(g,P1);
   k=subs(g,P2);
   if i*k < 0
      Po=P1;
      P1=P2;
   else
      Po=Po;
      P1=P2;
   end
   i=subs(g,P1);
   j=subs(g,Po);
   P2=P1-[(i*(P1-Po))/(i-j)];
   E=P2-P1;
   fprintf(' | n= %3.0f  |  Po= %0.9f  |  P1= %0.9f  |   P2= %0.9f  |  Error= %e |\n', cont,Po,P1,P2,abs(E))
end
fprintf(' |----------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                  : %10.9f\n',P2);
fprintf('\n\n');






fprintf('                                   --------------------\n')
fprintf('                                   MÉTODO DE LA SECANTE\n')
fprintf('                                   --------------------\n')
fprintf('\n');
syms x
h=input ('- Defina la función                 : ');
Po=input('- Introduzca el valor de Po         : ');
P1=input('- Introduzca el valor de P1         : ');
error=input('- Introduzca el valor de precisión  : ');
g=h;
i=subs(g,P1);
j=subs(g,Po);
P2=P1-[(i*(P1-Po))/(i-j)];
E=P2-P1;
cont=1; 
fprintf('\n\n');
fprintf(' |----------------------------------------------------------------------------------------------|\n');
fprintf(' | n= %3.0f  |  Po= %0.9f  |  P1= %0.9f  |   P2= %0.9f  |  Error= %e |\n', cont,Po,P1,P2,abs(E))
while abs(E) > error
   cont=cont+1;
   Po=P1;
   P1=P2;
   i=subs(g,P1);
   j=subs(g,Po);
   P2=P1-[(i*(P1-Po))/(i-j)];
   E=P2-P1;
   fprintf(' | n= %3.0f  |  Po= %0.9f  |  P1= %0.9f  |   P2= %0.9f  |  Error= %e |\n', cont,Po,P1,P2,abs(E))
end
fprintf(' |----------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                  : %10.9f\n',P2);
fprintf('\n\n');






fprintf('                                   ---------------------\n')
fprintf('                                   MÉTODO DE STEFFENSSEN\n')
fprintf('                                   ---------------------\n')
fprintf('\n');
syms x
Po=input('- Introduzca el valor de Po         : ');
error=input('- Valor de precisión             : ');
g=h;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
cont=1; 
fprintf('\n\n');
fprintf(' |-------------------------------------------------------------------------------------------|\n');
fprintf(' |n= %3.0f|Po= %0.9f|P1= %0.9f|P2= %0.9f|P3= %0.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
while abs(E) > error
   cont=cont+1;
   Po=P3;
   P1=subs(g,Po);
    P2=subs(g,P1);
    P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
   E=P3-Po;
   fprintf(' |n= %3.0f|Po= %0.9f|P1= %0.9f|P2= %0.9f|P3= %0.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
end
fprintf(' |-------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- El valor de x es                  : %10.9f\n',P3);
fprintf('\n\n');





EJERCICIO DE APLICACIÓN
fprintf('                                   ---------------------\n')
fprintf('                                   MÉTODO DE STEFFENSSEN\n')
fprintf('                                   ---------------------\n')
fprintf('\n');
syms x
a=input('- Valor del diámetro             : ');
b=input('- Constante de Stefan Boltzman   : ');
c=input('- Emisividad de la superficie    : ');
d=input('- Coeficiente de transferencia   : ');
e=input('- Temperatura ambiente           : ');
f=input('- Potencia eléctrica             : ');
h= input('- Función                        : ');
Po=input('- Valor de To                    : ');
error=input('- Valor de precisión             : ');
g=h;
P1=subs(g,Po);
P2=subs(g,P1);
P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
E=P3-Po;
cont=1; 
fprintf('\n\n');
fprintf(' |--------------------------------------------------------------------------------------------------|\n');
fprintf(' |n= %3.0f|To= %1.9f|T1= %1.9f|T2= %1.9f|T= %1.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
while abs(E) > error
   cont=cont+1;
   Po=P3;
   P1=subs(g,Po);
    P2=subs(g,P1);
    P3=Po-(((P1-Po)^2)/(P2-(2*P1)+Po));
   E=P3-Po;
   fprintf(' |n= %3.0f|To= %1.9f|T1= %1.9f|T2= %1.9f|T= %1.9f|Error= %e|\n', cont,Po,P1,P2,P3,abs(E))
end
fprintf(' |--------------------------------------------------------------------------------------------------|\n');
fprintf('\n\n');
fprintf('- La temperatura es                 : %10.9f\n',P3);
fprintf('\n\n');
fprintf('- El Error Absoluto es              : %e\n',P3);
fprintf('\n\n');