domingo, 13 de marzo de 2016

Formulas y factores de conversión

  • Temperatura.          
      De F a K -------> (5/9)*(F - 32)+273.15


         De F a C------->(5/9)*(F - 32)


         De C a F-------->(9/5)*C + 32

  •  Masa.

         1kg = 2.2 lb

     
  •     Unidades Metricas
         1m = 100cm

         1Km = 1000m

         1pul = 1/12pies

           
Interpolacion y Extrapolacion a Travez de "interp1(..)"

  • Cubica sin función
Interpolacion:

X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X1,Y,valor a interpolar,'cubic')

Extrapolacion:


X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X1,Y,valor a interpolar,'cubic','extrap')

  • Cubica con función 
Interpolacion: 

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X1,Y,valor a interpolar,'cubic')

Extrapolacion:

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X1,Y,valor a interpolar,'cubic','extrap')
Interpolacion y Extrapolacion a Travez de "interp1(..)"

  • Lineal sin función
Interpolacion:

X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X1,Y,valor a interpolar,'linear')

Extrapolacion:


X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X1,Y,valor a interpolar,'linear','extrap')

  • Lineal con función 
Interpolacion: 

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X1,Y,valor a interpolar,'linear')

Extrapolacion:

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X1,Y,valor a interpolar,'linear','extrap')

Interpolacion y Extrapolacion a Travez de "interp1(..)"

  • Escalonada sin función
Interpolacion:

X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X,Y,valor a interpolar,'spline')

Extrapolacion:


X1=[Ingreso de datos de x];
Y=[Ingreso de los espejos Y];
interp1(X,Y,valor a interpolar,'spline','extrap')

  • Escalonada con función 
Interpolacion: 

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X,Y,valor a interpolar,'spline')

Extrapolacion:

syms x
X1=[Ingreso de datos de x];
f=función para interpolar en terminos de "x";
Y=subs(f,X1);
interp1(X,Y,valor a interpolar,'spline','extrap')

Interpolacion de Diferencias Divididas con Datos y Función 

clear all
clc
syms x
disp('MÉTODO DE LAS DIFERENCIAS DIVIDIDAS')
fprintf('-------------------------------------\n');
val=input('Valor a interpolar x: ');
dato=input('Datos Ordenados[X0 X1 X2 ... Xn]: ');
t=length(dato);
fprintf('Valores de la función:\n\t1-Utilizar una función.\n\t2-Ingresar valores\n');
opc=input('Opción: ');
switch opc
    case 1
        f=input('Función f(x): ');
        fun=zeros(1,t);
        fprintf('Valores de F(x): ');
        for i=1:t
            fun(i)=subs(f,dato(i));
            fprintf('%8.09f, ', fun(i));
        end
    case 2
        fun=input('Valores F(x) [F(X0) F(X1) ... F(Xn)]: ');
end
DD=zeros(t);
fprintf('\nObteniendo las diferencias divididas:');
DD(:,1)=fun';
%for i=1:t
%    DD(i,1)=fun(i);
%end
for j=2:t
    fprintf('\n - Columna %2.0f de diferencias divididas\n',j);
    for i=j:t
        DD(i,j)=(DD(i,j-1)-DD(i-1,j-1))/(dato(i)-dato(i-j+1));
        fprintf('(%8.15f-(%8.15f))/(%3.3f-(%3.3f)) = %8.09f\n',DD(i,j-1),DD(i-1,j-1),dato(i),dato(i-j+1),DD(i,j));
    end
end
DD %#ok<NOPTS>
fprintf('\nPolinomio grado %1.0f\n',t-1);
pol=DD(1,1);
fprintf('P%1.0f(x)= A0 + ',t-1);
for i=2:t
    fprintf('A%1.0f',i-1);
    for j=1:i
        fprintf('(x-x%1.0f)',j-1);
    end
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('P%1.0f(x)= %8.09f + ',t-1,DD(1,1));
for i=2:t
    factor=DD(i,i);
    fprintf('(%8.09f)*',DD(i,i));
    for j=1:i-1
        fprintf('(x-(%3.3f))',dato(j));
        factor=factor*(val-dato(j));
    end
    pol=pol+factor;
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('P%1.0f(%3.3f)= %9.15f\n\n',t-1,val,pol);
if opc==1
    fprintf('Valor Exacto de la Función: %9.15f',subs(f,val));
    fprintf('\nError: %e\n\n',abs(pol-subs(f,val)));

end



Interpolacion de Neville con Datos Y Función 


syms x;
vx = input('Ingrese el vector [X0 X1 X2 ......Xn]: ');
xint = input('Ingrese el punto a interpolar: ');
disp('Seleccione como trabajara el metodo');
opcion = input('1) Vector;  2) Funcion;  opcion: ');
vy=zeros(length(vx));
if(opcion == 1)
    vy = input('Ingrese el vector [f(x0) f(x1) f(x2).....f(xn)]: ');
elseif(opcion == 2)
    f = input('Ingrese la funcion de trabajo: ');
    for i = 1:length(vx)
        vy(i) = subs(f, vx(i));
    end
else
    disp('Opcion invalida :( .|.\n');
end
Q = zeros(length(vx), length(vx));
for i = 1 : length(vx)
    Q(i, 1) = vy(i);
    fprintf('Q(%1.0f,0) = %3.15f\n', i-1, vy(i));
end
disp('-------');
for j = 2:length(vx) %x
    for i = j: length(vx) %y
        Q(i, j) = ( (xint - vx(i-j+1))*Q(i, j-1) - (xint - vx(i) )*Q( i-1, j-1) ) / (vx(i) - vx(i-j+1));
        fprintf('Q(%1.0f,%1.0f) = ((x-x%1.0f)*Q(%1.0f,%1.0f)-(x-x%1.0f)*Q(%1.0f,%1.0f))/(x%1.0f-x%1.0f) = %3.15f \n',i-1,j-1, i-j, i-1, j-2, i-1, i-2, j-2, i-1, i-j, Q(i,j));%a todos se les rest -1 y lo demaa squeda igyal
    end
    disp('-------');
end
fprintf('La respuesta es: %3.15f \n', Q(length(vx), length(vx)));




Interpolacion de Hermite con Diferencias Divididas con Datos y Función 

clc;
syms x
disp('INTERPOLACION DE HERMITE POR DIFERENCIAS DIVIDIDAS')
fprintf('----------------------------------------------------------\n');
val=input('Valor a interpolar x: ');
vars=input('Datos Ordenados[X0 X1 X2 ... Xn]: ');
t=2*length(vars);
dato=zeros(1,t);
for i=1:t/2
    dato(2*i-1)=vars(i);
    dato(2*i)=vars(i);
end
fprintf('Valores de la función:\n\t1-Utilizar una función.\n\t2-Ingresar valores\n');
opc=input('Opción: ');
switch opc
    case 1
        f=input('Función f(x): ');
        fundif=zeros(1,t/2);
        fun=zeros(1,t/2);
        fprintf('Valores de F(x): ');
        for i=1:t/2
            fun(i)=subs(f,vars(i));
            fprintf('%0.15f,', fun(i));
        end
        fprintf('\nValores de F´(x): ');
        for i=1:t/2
            fundif(i)=subs(diff(f,x),vars(i));
            fprintf('%f,', fundif(i));
        end
    case 2
        fun=input('Valores F(x) [F(X0) F(X1) ... F(Xn)]: ');
        fundif=input('Valores F´(x) [F´(X0) F´(X1) ... F´(Xn)]: ');
end
DD=zeros(t);
fprintf('\nObteniendo las diferencias divididas:');
for i=1:t/2
    DD(2*i-1,1)=fun(i);
    DD(2*i,1)=fun(i);
end
for j=2:t
    for i=j:t
        if dato(i)~=dato(i-j+1)
            DD(i,j)=(DD(i,j-1)-DD(i-1,j-1))/(dato(i)-dato(i-j+1));   
        else
            DD(i,j)=fundif(i/2);
        end
    end
end
DD %#ok<NOPTS>
fprintf('\nPolinomio grado %1.0f\n',t-1);
h=DD(1,1);
fprintf('H%1.0f(x)= A0 + ',t-1);
for i=2:t
    fprintf('A%1.0f',i-1);
    for j=1:i
        fprintf('(x-x%1.0f)',j-1);
    end
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('H%1.0f(x)= %8.15f + ',t-1,DD(1,1));
for i=2:t
    factor=DD(i,i);
    fprintf('%8.15f*',DD(i,i));
    for j=1:i-1
        fprintf('(x-(%3.15f))',dato(j));
        factor=factor*(val-dato(j));
    end
    h=h+factor;
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('H%1.0f(%3.15f)= %9.15f\n\n',t-1,val,h);
if opc==1
    fprintf('Valor Exacto de la Función: %9.15f',subs(f,val));
    fprintf('\nError: %e\n\n',abs(h-subs(f,val)));

end

Interpolacion por Langrange con Datos y Función 

clc
syms x
disp('INTERPOLACIÓN Y POLINOMIO DE LAGRANGE')
fprintf('-------------------------------------\n');
val=input('Valor a interpolar x: ');
dato=input('Datos [X0 X1 X2 ... Xn]: ');
t=length(dato);
fprintf('Valores de la función:\n\t1-Utilizar una función.\n\t2-Ingresar valores\n');
opc=input('Opción: ');
switch opc
    case 1
        f=input('Función f(x): ');
        fun=zeros(1,t);
        fprintf('Valores de F(x): ');
        for i=1:t
            fun(i)=subs(f,dato(i));
            fprintf('%f,', fun(i));
        end
    case 2
        fun=input('Valores F(x) [F(X0) F(X1) ... F(Xn)]: ');
end
fprintf('\nGrado del Polinomio: %2.0f\n',t-1);
fprintf('\nObteniendo las Funciones de Lagrange\n');
L=zeros(1,t);
for i=1:t
    num=1;
    fprintf('\t   ')
    for j=1:t       
        if j~=i
            fprintf('(x-%3.3f)',dato(j));
            num=num*(val-dato(j));
        end
    end
    fprintf('\nL%1.0f(x)=',i-1);
    for j=1:t
        fprintf('------------');
    end
    fprintf('\n\t   ');
    den=1;
    for j=1:t
        if j~=i
            fprintf('(%3.3f-%3.3f)',dato(i),dato(j));
            den=den*(dato(i)-dato(j));
        end
    end
    L(i)=num/den;
    fprintf('\nL%1.0f(%3.3f)=%3.8f\n\n',i-1,val,L(i));
end
fprintf('Polinomio:\n');
fprintf('P%1.0f(x)=',t-1);
pol=0;
for i=1:t
    fprintf('L%1.0f(x)*F(X%1.0f)',i-1,i-1);
    pol=pol+(L(i)*fun(i));
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('P%1.0f(%3.3f)=',t-1,val);
for i=1:t
    fprintf('(%9.15f)*(%9.15f)',L(i),fun(i));
    if i==t
        fprintf('\n');
    else
        fprintf(' + ');
    end
end
fprintf('P%1.0f(%3.3f)= %9.15f\n\n',t-1,val,pol);
if opc==1
    fprintf('Valor Exacto de la Función: %9.15f',subs(f,val));
    fprintf('\nError: %e\n\n',abs(pol-subs(f,val)));
end