Documente Academic
Documente Profesional
Documente Cultură
FACULTAD DE INGENIERA
DEPARTAMENTO DE COMPUTACIN
INTEGRANTES:
TRABAJO PRCTICO N 1
OBSERVACIONES FECHA
NOTA:
1. Introduccin
El presente trabajo expone la implementacin de mtodos numricos para el anlisis de
rentabilidad en un proyecto de inversin.
El objetivo principal es brindar, a los inversores, una herramienta simple para obtener el Valor
Actual Neto (V.A.N) en funcin de la tasa de descuento (i) y, a partir del clculo de races de la
funcin V AN (i) , obtener la Tasa Interna de Retorno (T.I.R) que define la tasa de descuento
mxima a partir de la cual la inversin deja de ser rentable. Con esta herramienta, se debe decidir
por s o por no, si es aconsejable realizar la inversin con un prstamo bancario cuya tasa de
inters anual es del 20%.
El proyecto consiste en la instalacin de una bloquera de premoldeados de hormign a cargo de la
cooperativa Vaca Aurora Ltda., y el anlisis se realiza a partir de dos parmetros de entrada
definidos por la cooperativa: monto de la inversin inicial (I0), en pesos; y capacidad mxima de
produccin anual (B), en unidades de ladrillos. Adems, se utilizan parmetros fijos inherentes al
proyecto, a saber: el costo de produccin prorrateado por unidad (c), en pesos; el precio unitario de
venta al pblico (p), tambin en pesos; y los volmenes pronosticados de ventas para los prximos
tres aos (Q1, Q2 y Q3),
en unidades de ladrillos.
De esta forma, la funcin V AN (i) queda definida en la ecuacin 1.
Para garantizar rentabilidad, el valor de la funcin debe ser mayor o igual a cero, de modo que la
raz de esta funcin se corresponde con la Tasa Interna de Retorno.
V AN (T IR) = 0 (2)
Se propone utilizar el mtodo de Newton-Raphson para encontrar la T.I.R en base a los parmetros
de entrada definidos por el usuario. Esto le permitir, al inversor, simular diferentes situaciones de
inversin inicial y capacidad productiva para decidir sobre la viabilidad del proyecto.
2. Desarrollo
A continuacin se detalla la informacin numrica disponible para realizar el anlisis. Luego, se
evala la admisibilidad de la funcin para aplicar el mtodo de Newton-Raphson y, por ltimo, se
describe el algoritmo de clculo.
Pg. 1 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
Por otro lado, los costos de produccin y el precio de venta unitarios son los siguientes.
c=2$ (5)
p = 10 $ (6)
Y, por ltimo, la proyeccin de unidades vendidas para los prximos tres aos es la siguiente.
Q1 = 10000 u (7)
Q2 = 15000 u (8)
Q3 = 20000 u (9)
Bajo estas condiciones, es posible aplicar el mtodo de Newton-Raphson para el clculo de raz
sobre la funcin V AN . Es decir, la sucesin definida en (11) converge a la raz de la funcin.
f (pn1 )
pn = pn1 f (pn1 )
n 1 (11)
Pg. 2 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
Luego, se define un vector Q que representa el valor de las proyecciones de venta para los
prximos tres aos, siendo Q = [Q1 Q2 Q3 ] definidas en (7 a 9). Tambin, se definen las
constantes c y p como costo de produccin (5) y precio de venta (6).
A partir de esos valores se obtiene el vector Flu, que representa el flujo de ingresos (diferencia
entre ganancia y costo) para los prximos tres aos, con el cual se construye la funcin VAN(i) (1).
Para construir la funcin se declara un objeto de tipo function_handle con variable
independiente i. Se utiliza una funcin secundaria, de tres parmetros de ingreso y uno de salida,
que devuelve el valor numrico de la funcin en el punto i. Este valor se identifica como van.
d
Para realizar el mtodo de N-R es necesario calcular el valor de dt V AN (i) (10). Para esto se
construye un segundo objeto del tipo function_handle con la misma variable independiente
i. Tambin se utiliza una funcin auxiliar que obtiene el valor de la derivada en el punto i
utilizando la expresin definida en (10).
Definidos f y f_deriv, se prosigue con la implementacin del mtodo de N-R para el clculo de
la raz de f=@(i). Se recuerda que el punto i para el cual la funcin es nula se corresponde con
la T.I.R del proyecto.
El mtodo se realiza por medio de una funcin auxiliar con tres parmetros de entrada: los objetos
f , f_deriv y la semilla de la iteracin, elegida como 0.2.
Esta funcin entrega tres parmetros: x0, la semilla elegida; ea, vector con el error absoluto en
cada iteracin; y tabla, matriz que incorpora en la primer columna las aproximaciones
Pg. 3 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
calculadas en cada iteracin, en la segunda columna el error absoluto y, por ltimo el error relativo
entre una iteracin y la anterior.
A continuacin se expone el mtodo y una breve explicacin.
if i =
= max_iter && not(ea(i) < abs_tol || er(i) < rel_tol);
disp('No hubo convergencia')
end
x = x(1:i);
ea = ea(1:i);
er = er(1:i);
x0 = x(end);
delta_abs = ea(end);
tabla = [x, ea, er];
end;
Se comienza por definir un mximo nmero de iteraciones para tener una ruta de escape por si el
mtodo no converge. Luego se definen el error relativo y absoluto deseado, al definir abs_tol =
Pg. 4 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
0 se establece como parmetro de paro al error relativo, esto es porque la condicin de detencin
implica un OR entre las dos condiciones, es decir, se detendr con el que suceda primero.
A continuacin se definen vectores de ceros que estn destinados a almacenar los valores
obtenidos en cada iteracin de errores y aproximaciones. En el vector de aproximaciones se define
la primer aproximacin como la semilla, x(1) = x1.
Luego se ingresa en un bucle del tipo for que realiza la sucesin definida en (11) hasta encontrar
un error relativo menor a la tolerancia establecida o hasta alcanzar un mximo de iteraciones. Si
sucede la primer condicin, entonces la sucesin convergi y la raz fue aproximada con el margen
de error establecido. Si la segunda condicin sucede, entonces la sucesin no logr aproximarse a
la raz con la tolerancia deseada.
Por ltimo, si hubo convergencia se despliegan los resultados en forma de tabla, se grafica la
funcin VAN(i) y se expresa el valor de la TIR junto con el error absoluto de la aproximacin.
2.4. Resultados
Al ejecutar el cdigo e ingresar dos valores iniciales se obtiene la siguiente informacin y el
grfico de la figura 1.
TP 1 - Anlisis numrico
os siguientes parmetros:
Ingrese l
Ingrese i nversion inicial I_0 (190000 a 200000): 1 90000
Ingrese p roduccin anual mxima (20000 a 35000): 2 0000
La TIR es:
0.280961528121599
delta_abs=
2.77555756156289e-16
Pg. 5 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
Con estos valores iniciales, s sera recomendable realizar la inversin utilizando un prstamo
bancario con inters anual del 20% anual, ya que la T.I.R es mayor a la tasa de inters impuesta
por el banco. Sin embargo, esta condicin no se satisface para todas las situaciones iniciales.
El consejo hacia el inversor sera pedir el prstamo para comenzar el proyecto pero no hacer
funcionar a la fbrica al 100% de su capacidad productiva, sino, producir acorde a la demanda
pronosticada. De este modo, su flujo de ingresos le permitir cubrir el prstamo y generar
ganancia.
3. Conclusin
Result de mucha ayuda realizar una implementacin en cdigo de mquina para asentar los
conceptos de mtodos numricos para hallar races vistos en clase. Contar con un cdigo de
ejemplo provisto por la ctedra simplific mucho el desarrollo y adems brind una forma de
comprobar que el algoritmo implementado por los integrantes del grupo devuelve la solucin
esperada.
La principal ventaja del mtodo Newton-Raphson consiste en la rpida convergencia, sin embargo
se requiere contar con la expresin de la derivada de la expresin a resolver. Si bien existe la
implementacin de este mtodo sin necesidad de la expresin de la derivada -en forma del mtodo
de la secante- (provisto a modo de ejemplo), el mismo requiere de ms operaciones por iteracin y
de dos semillas en lugar de una. Por este motivo se puede concluir que la expresin de N-R es ms
Pg. 6 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
eficiente que la secante, pero como desventaja requiere especificar la derivada de antemano. Esto
hace que sea ms difcil implementar N-R en forma genrica, si el objetivo fuera contar con un
algoritmo de resolucin de races no aplicado a un problema en particular, como en este caso fue al
clculo de una T.I.R. Una posible solucin sera que el programa o cdigo calcule primero la
derivada de la funcin en lenguaje simblico, algo que es realizable en Octave o Matlab. Dicha
operacin se hara por nica vez antes de comenzar con las iteraciones del mtodo.
Si llegado el caso, el clculo de la derivada fuera algortmicamente costoso o bien ineficiente, a la
hora de implementar un mtodo genrico de resolucin de races sera ms conveniente optar por
la implementacin de la secante y elegir correctamente las dos semillas.
4. Bibliografa
[1] John W. Eaton (1996), GNU Octave User Manual: Terminal Output. Recuperado de
https://www.gnu.org/software/octave/doc/v4.0.3/Terminal-Output.html
5. Anexo
Se presenta el cdigo principal junto con las funciones auxiliares.
clc;
ll;
close a
clear a ll;
format long;
Pg. 7 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
%Salida a archivo
csvwrite("salida_tp1.csv", tabla); %! Si el archivo existe lo pisa !
van = -
I0;
for j =
1:length(Flu);
van += Flu(j)./(1+i).^j;
Pg. 8 de 9
Anlisis Numrico - TP1 Ramn - Lpez Carbonaro
end
end;
van_deriv = 0;
for j = 1:length(Flu);
van_deriv += -1*j.*Flu(j)./(1+i).^(j+1);
end
end;
max_iter = 1000;
rel_tol = 1e-14;
abs_tol = 0;
for i =
2:max_iter+2 %Arranca en dos pues 1 es semilla
x(i) = x(i-1) - f(x(i-1)) / f_deriv(x(i-1));
ea(i) = abs(x(i) - x(i-1));
er(i) = ea(i) / abs(x(i));
I f ea(i) < abs_tol || er(i) < rel_tol
break %rompe el for
end%if
end%for
x = x(1:i);
ea = ea(1:i);
er = er(1:i);
x0 = x(end);
delta_abs = ea(end);
tabla = [x, ea, er];
end
Pg. 9 de 9