You are on page 1of 15

Instituto Politcnico Nacional

Escuela Superior De Ingeniera Qumica E Industrias Extractivas


Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Introduccin.

La derivacin numrica es una tcnica de anlisis numrico para calcular una


aproximacin a la derivada de una funcin en un punto utilizando los valores y
propiedades de la misma.

La ecuacin general de los polinomios de LaGrange es la siguiente:

Derivando con respecto a x:

Haciendo:

Tomando logaritmos

Pero el logaritmo de un producto es igual a la suma de los logarimos de los


factores, es decir:

Entonces:

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Realizando operaciones algebraicas y reacomodando para evitr divisiones


entre cero se llega a la siguiente expresin:

Que es la ecuacin par derivar con polinomios de LaGrange

Descripcin.

El siguiente programa esta diseado para el calculo numrico de una derivada


por el mtodo de LaGrange a partir de polinomios de segundo y tercer orden,
tambin puede realizar iteraciones por el mismo mtodo con polinomios de primer y
segundo orden en caso de que sean requeridos datos no tabulados por el usuario.
Todo esto en la interfas de Matlab.

Modo de uso.

Al iniciar el programa lo primero que se le preguntara al usuario es si


necesita realizar iteraciones para obtener datos en caso de que no se encuentren
tabulados los datos necesarios para la derivacin en su informacin bibliogrfica. Se
le presentan solo dos opciones (Si y No), en caso de necesitar realizar
interpolaciones el usuario deber presionar en su teclado el nmero 1 y ejecutar el
comando y en caso contrario presionar el numero 2.

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Si la opcin seleccionada fue aquella en la que solicita realizar


iteraciones, el programa preguntara al usuario que orden de polinomio desea usar
para realizar sus interpolaciones. Se presentan dos opciones, primer y segundo orden
los cuales se ejecutan oprimiendo en nmero correspondiente (1 o 2).

En cualquiera de los casos que seleccione el usuario el programa preguntara el


nmero de interpolaciones que el usuario desea realizar.

En cada caso el programa solicitara al usuario los datos necesarios para


calcular cada una de las interpolaciones tantas veces como las haya pedido el usuario
en la pregunta previa.

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Para el caso de un polinomio de orden 1 el programa solicitara:

Valor de x este se refiere al valor al cual el usuario desea realizar la


interpolacin.
Valor de x0, x1. Estos valores son valores que el usuario tiene tabulado
en su informacin bibliogrfica como tablas, grficos, etc. Estos se
seleccionan de modo que el valor de x quede en medio de ellos.
Valor de f(x0), f(x1). Estos valores estn en funcin de x0 y x1
respectivamente e igual son valores con los que el usuario debe contar.
En ocasiones deben ser calculados por el usuario si es que hay una
funcin matemtica de por medio.

Para el caso de un polinomio de orden 2 el programa solicitara:

Valor de x este se refiere al valor al cual el usuario desea realizar la


interpolacin.
Valor de x0, x1, x2. Estos valores son valores que el usuario tiene
tabulado en su informacin bibliogrfica como tablas, grficos, etc.

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Estos se seleccionan de modo que el valor de x quede en medio


de ellos.
Valor de f(x0), f(x1), f(x2). Estos valores estn en funcin de x0 y x1
respectivamente e igual son valores con los que el usuario debe contar.
En ocasiones deben ser calculados por el usuario si es que hay una
funcin matemtica de por medio.

Despus de realizadas las interpolaciones el programa proceder a la


parte del clculo de la derivada o en caso de seleccionar la opcin de no necesitar
iteraciones pasara directo a esta parte. En esta seccin empezara por preguntar al
usuario que orden de polinomio desea para su derivacin. Aqu hay dos opciones,
segundo y tercer orden, las cuales se seleccionan presionando y ejecutando su
correspondiente nmero en el teclado (2 o 3).

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

En cada caso el programa solicitara al usuario los datos necesarios para


calcular la derivada en el punto en que el usuario lo desee.

Para el caso de un polinomio de orden 1 el programa solicitara:

Valor de x este se refiere al valor al cual el usuario desea calcular la


variacin de una propiedad con respecto de otra (derivada).
Valor de x0, x1, x2. Estos valores son valores que el usuario tiene
tabulado en su informacin bibliogrfica como tablas, grficos, etc.
Estos se seleccionan de modo que el valor de x quede en medio de
ellos.
Valor de f(x0), f(x1),f(x2). Estos valores estn en funcin de x0 y x1,
x2, respectivamente e igual son valores con los que el usuario debe
contar. O son el resultado de las interpolaciones realizadas
previamente.

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Para el caso de un polinomio de orden 3 el programa solicitara:

Valor de x este se refiere al valor al cual el usuario desea calcular la


variacin de una propiedad con respecto de otra (derivada).
Valor de x0, x1, x2, x3. Estos valores son valores que el usuario tiene
tabulado en su informacin bibliogrfica como tablas, grficos, etc.
Estos se seleccionan de modo que el valor de x quede en medio de
ellos.
Valor de f(x0), f(x1), f(x2) f(x3). Estos valores estn en funcin de x0 y
x1, x2, x3 respectivamente e igual son valores con los que el usuario
debe contar. O son el resultado de las interpolaciones realizadas
previamente.

Al finalizar el clculo de la derivada de la funcin el programa finaliza.

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

Codificacin.

% Programa para calcular la derivada de una funcion por el metodo de


% Lagrange (Orden 1,2,3)
%
%

fprintf('Bienvenido al programa que calcula la derivada de una funcion co


el metodo de Lagrange.\n')
opcion=input('Su derivacion requiere de una interpolacion? Opciones:
Si(pres 1), No(pres 2). ');
if opcion==1
fprintf('\n\nLa interpolacion se llevara a cabo con el metodo de
Lagrange.\n')
fprintf('Las interpolacion se puede realizar con polinomios de orden
1 y 2.\n\n')
interpolacion=input('Que orden de polinomio desea para su
interpolacion? Opciones:1 y 2. ');

if interpolacion==1
fprintf('\n\nPara este calculo se requieren valores de x, x0, x1,
f(x0) y f(x1) \n')
fprintf('"x" sera el valor al cual se requiere hacer la
interpolacin. \n')
fprintf('x0 y x1 son los valor independientes en la funcin \n')
fprintf('estos deben ser valores que entre los cuales se
encurntre el valor de x. \n')
fprintf('Mientras que f(x0)y f(x1) son los valores dependientes
en la funcion.\n\n')
nu_int=input('Cuantas interpolaciones desea realizar?: ');
i=1;
while i<=nu_int
x=input('Ingrese el valor de x sobre el cual desea
interpolar: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
fx0=input('Ingrese el valor de f(x0): ');
fx1=input('Ingrese el valor de f(x1): ');
% Calculo de L0
L0=((x-x1))/((x0-x1));

% Calculo de L1
L1=((x-x0))/((x1-x0));

% Calculo de fx
fx=(fx0)*(L0)+(fx1)*(L1);
fprintf('El valor de fx para x= ')
disp(x)
fprintf('es:\n')
disp(fx)
i=i+1;
end

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

orden=input('Con que orden de polinomio desea calcular su


deribada? Opciones: 2, 3: ');
if orden==2
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2) ')
fprintf('\n Para este calculo se requieren los valores de x,
x0, x1, x2, f(x0), f(x1) y f(x2)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1 y x2 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0), f(x1) y f(x2) son los valores
dependientes en la funcion.\n\n')
x=input('Ingrese el valor de x sobre el cual quiere calcular
la derivada: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');

% Calculo de L0
L0=((x-x1)+(x-x2))/((x0-x1)*(x0-x2));

% Calculo de L1
L1=((x-x0)+(x-x2))/((x1-x0)*(x1-x2));

% Calculo de L2
L2=((x-x0)+(x-x1))/((x2-x0)*(x2-x1));

% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end

if orden==3
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3) ')
fprintf('\n Para este calculo se requieren los valores de x,
x0, x1, x2, x3, f(x0), f(x1), f(x2) y f(x3)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1, x2 y x3 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

fprintf('mientras que f(x0), f(x1), f(x2) y f(x3) son


los valores dependientes en la funcion.\n\n')
x=input('Ingrese el valor de x sobre el cual quiere calcular
la derivada: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
x3=input('Ingrese el valor de x3: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');
f(x3)=input('Ingrese el valor de f(x3): ');

% Calculo de L0
L0=((x-x1)+(x-x2)+(x-x3))/((x0-x1)*(x0-x2)*(x0-x3));

% Calculo de L1
L1=((x-x0)+(x-x2)+(x-x3))/((x1-x0)*(x1-x2)*(x1-x3));

% Calculo de L2
L2=((x-x0)+(x-x1)+(x-x3))/((x2-x0)*(x2-x1)*(x2-x3));

% Calculo de L3
L3=((x-x0)+(x-x1)+(x-x2))/((x3-x0)*(x3-x1)*(x3-x2));

% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end
if orden>3
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end
if orden<2
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end
end

if interpolacion==2
fprintf('Para este calculo se requieren valores de x, x0, x1, x2,
f(x0), f(x1) y f(x2) \n')
fprintf('"x" sera el valor al cual se requiere hacer la
interpolacin \n')

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

fprintf('x0, x1 y x2 son los valor independientes en la


funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0, f(x1) y f(x2) son los valores
dependientes en la funcion.\n\n')
nu_int=input('Cuantas interpolaciones desea realizar?: ');
i=1;
while i<=nu_int
x=input('Ingrese el valor de x sobre el cual desea
interpolar: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
fx0=input('Ingrese el valor de f(x0): ');
fx1=input('Ingrese el valor de f(x1): ');
fx2=input('Ingrese el valor de f(x2): ');
% Calculo de L0
L0=((x-x1)*(x-x2))/((x0-x1)*(x0-x2));

% Calculo de L1
L1=((x-x0)*(x-x2))/((x1-x0)*(x1-x2));

% Calculo de L1
L2=((x-x0)*(x-x1))/((x2-x0)*(x2-x1));

% Calculo de fx
fx=(fx0)*(L0)+(fx1)*(L1)+(fx2)*(L2);

fprintf('El valor de fx para x= ')


disp(x)
fprintf('es:\n')
disp(fx)
i=i+1;
end

orden=input('Con que orden de polinomio desea calcular su


deribada? Opciones: 2, 3: ');
if orden==2
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2) ')
fprintf('\n Para este calculo se requieren los valores de x, x0,
x1, x2, f(x0), f(x1) y f(x2)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1 y x2 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0), f(x1) y f(x2) son los valores
dependientes en la funcion.\n\n')
x=input('Ingrese el valor de x sobre el cual quiere calcular la
derivada: ');

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

x0=input('Ingrese el valor de x0: ');


x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');
% Calculo de L0
L0=((x-x1)+(x-x2))/((x0-x1)*(x0-x2));

% Calculo de L1
L1=((x-x0)+(x-x2))/((x1-x0)*(x1-x2));

% Calculo de L2
L2=((x-x0)+(x-x1))/((x2-x0)*(x2-x1));
% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end
if orden==3
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3) ')
fprintf('\n Para este calculo se requieren los valores de x, x0,
x1, x2, x3, f(x0), f(x1), f(x2) y f(x3)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1, x2 y x3 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0), f(x1), f(x2) y f(x3) son los valores
dependientes en la funcion.\n\n')
x=input('Ingrese el valor de x sobre el cual quiere calcular la
derivada: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
x3=input('Ingrese el valor de x3: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');
f(x3)=input('Ingrese el valor de f(x3): ');

% Calculo de L0
L0=((x-x1)+(x-x2)+(x-x3))/((x0-x1)*(x0-x2)*(x0-x3));

% Calculo de L1
L1=((x-x0)+(x-x2)+(x-x3))/((x1-x0)*(x1-x2)*(x1-x3));

% Calculo de L2

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

L2=((x-x0)+(x-x1)+(x-x3))/((x2-x0)*(x2-x1)*(x2-x3));

% Calculo de L3
L3=((x-x0)+(x-x1)+(x-x2))/((x3-x0)*(x3-x1)*(x3-x2));

% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end

end

if orden>3
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end
if orden<2
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end

if interpolacion>3
fprintf('Este programa interpola a partir de polinomios de orden
1 y 2')
end
if interpolacion<1
fprintf('Este programa interpola a partir de polinomios de orden
1 y 2')
end
end

if opcion==2
orden=input('Con que orden de polinomio desea calcular su deribada?
Opciones: 2, 3: ');
if orden==2
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2) ')
fprintf('\n Para este calculo se requieren los valores de x, x0,
x1, x2, f(x0), f(x1) y f(x2)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1 y x2 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0), f(x1) y f(x2) son los valores
dependientes en la funcion.\n\n')

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

x=input('Ingrese el valor de x sobre el cual quiere calcular


la derivada: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');
% Calculo de L0
L0=((x-x1)+(x-x2))/((x0-x1)*(x0-x2));

% Calculo de L1
L1=((x-x0)+(x-x2))/((x1-x0)*(x1-x2));

% Calculo de L2
L2=((x-x0)+(x-x1))/((x2-x0)*(x2-x1));
% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end
if orden==3
fprintf('\n\n La fomula para el calculo de la derivada sera
f,x=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3) ')
fprintf('\n Para este calculo se requieren los valores de x, x0,
x1, x2, x3, f(x0), f(x1), f(x2) y f(x3)\n')
fprintf('"x" sera el valor en el cual se requiere calcular la
derivada.\n')
fprintf('x0, x1, x2 y x3 son los valor independientes en la
funcin. \n')
fprintf('Estos deben ser valores que entre los cuales se
encurntre el valor de x \n')
fprintf('mientras que f(x0), f(x1), f(x2) y f(x3) son los valores
dependientes en la funcion.\n\n')
x=input('Ingrese el valor de x sobre el cual quiere calcular la
derivada: ');
x0=input('Ingrese el valor de x0: ');
x1=input('Ingrese el valor de x1: ');
x2=input('Ingrese el valor de x2: ');
x3=input('Ingrese el valor de x3: ');
f(x0)=input('Ingrese el valor de f(x0): ');
f(x1)=input('Ingrese el valor de f(x1): ');
f(x2)=input('Ingrese el valor de f(x2): ');
f(x3)=input('Ingrese el valor de f(x3): ');

% Calculo de L0
L0=((x-x1)+(x-x2)+(x-x3))/((x0-x1)*(x0-x2)*(x0-x3));

% Calculo de L1
L1=((x-x0)+(x-x2)+(x-x3))/((x1-x0)*(x1-x2)*(x1-x3));

Jonathan Ramrez Villa 1IV44


Instituto Politcnico Nacional
Escuela Superior De Ingeniera Qumica E Industrias Extractivas
Departamento de Ingeniera Qumica Industrial
Mtodos Numricos

% Calculo de L2
L2=((x-x0)+(x-x1)+(x-x3))/((x2-x0)*(x2-x1)*(x2-x3));

% Calculo de L3
L3=((x-x0)+(x-x1)+(x-x2))/((x3-x0)*(x3-x1)*(x3-x2));

% Calculo de la derivada.
dfxdx=(f(x0))*(L0)+(f(x1))*(L1)+(f(x2))*(L2)+(f(x3))*(L3);

fprintf('\nEl valor de la derivada para una x=')


disp(x)
fprintf('es:\n')
disp(dfxdx)
end
if orden>3
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end
if orden<2
fprintf('Este programa solo calcula deribadas a partir de
polinomios de orden 2 y 3')
end
end

fprintf('Programa finalizado. Gracias :)\n')

Diagrama de flujo.

Jonathan Ramrez Villa 1IV44

You might also like