Fórmulas Ing. Económica

Para hacer diagramas de flujo, click aquí.

Factores

Factor fundamental: Interés compuesto $(P/F)$

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, F: { name: 'Valor futuro (F)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'P/F', value: (p, o) => { let { n } = p; let { i } = o; return i_factor = 1 / (1 + i) ** n; }, format: ff, }, P: { name: 'Valor presente (P)', value: (p, v) => p.F * v.factor, format: f$, }, }, formula: { tex: '$$\\textrm{P} = \\textrm{F}\\cdot\\frac{1}{(1+i)^n}$$', dynamic: (p, v) => { let exp = (p.n === 1) ? '' : `^{${p.n}}`; return { 'factor': `\\frac{1}{(1 + ${v.i})${exp}}`, 'val * factor': `${p.F}\\frac{1}{(1 + ${v.i})${exp}}`, 'val * factor (num)': `${p.F}*${v.factor}`, default: `$$ P = (${p.F})\\frac{1}{(1 + ${v.i})${exp}} = ${v.P}$$` } }, }, }

Factor fundamental: Interés compuesto $(F/P)$

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, P: { name: 'Valor presente (P)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'F/P', value: (p, o) => { let { n } = p; let { i } = o; return i_factor = (1 + i) ** n; }, format: ff, }, F: { name: 'Valor futuro (F)', value: (p, v) => p.P * v.factor, format: f$, }, }, formula: { tex: '$$\\textrm{F} = \\textrm{P}\\cdot(1+i)^n$$', dynamic: (p, v) => { let exp = (p.n === 1) ? '' : `^{${p.n}}`; return { 'factor': `(1 + ${v.i})${exp}`, 'val * factor': `${p.P}(1 + ${v.i})${exp}`, 'val * factor (num)': `${p.P}*${v.factor}`, default: `$$ F = (${p.P})(1 + ${v.i})${exp} = ${v.F}$$` } }, }, }

Factor de valor presente de serie uniforme (FVPSU o $P/A$)

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, A: { name: 'Anualidad (A)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'P/A', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return (i_factor - 1) / (i * i_factor); }, format: ff, }, P: { name: 'Valor presente (P)', value: (p, v) => p.A * v.factor, format: f$, }, }, formula: { tex: '$$P = A\\left[\\frac{(1+i)^n-1}{i(1+i)^n}\\right]$$', dynamic: (p, v) => { return { 'factor': `\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}(1+${v.i})^{${p.n}}}\\right]`, 'val * factor': `${p.A}\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}(1+${v.i})^{${p.n}}}\\right]`, 'val * factor (num)': `${p.A}*${v.factor}`, default: `$$P = ${p.A}\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}(1+${v.i})^{${p.n}}}\\right]=${v.P}$$` } }, }, }

Factor de recuperación de capital (FRC o $A/P$)

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, P: { name: 'Valor presente (P)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'A/P', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return (i * i_factor) / (i_factor - 1); }, format: ff, }, A: { name: 'Anualidad (A)', value: (p, v) => p.P * v.factor, format: f$, }, }, formula: { tex: '$$A = P\\left[\\frac{i(1+i)^n}{(1+i)^n-1}\\right]$$', dynamic: (p, v) => { return { 'factor': `\\left[\\frac{${v.i}(1+${v.i})^{${p.n}}}{(1+${v.i})^{${p.n}}-1}\\right]`, 'val * factor': `${p.P}\\left[\\frac{${v.i}(1+${v.i})^{${p.n}}}{(1+${v.i})^{${p.n}}-1}\\right]`, 'val * factor (num)': `${p.P}*${v.factor}`, default: `$$A = ${p.P}\\left[\\frac{${v.i}(1+${v.i})^{${p.n}}}{(1+${v.i})^{${p.n}}-1}\\right]=${v.A}$$` } }, }, }

Factor de cantidad compuesta de una serie uniforme (FCCSU o $F/A$):

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, A: { name: 'Anualidad (A)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'F/A', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return (i_factor - 1) / i; }, format: ff, }, F: { name: 'Valor futuro (F)', value: (p, v) => p.A * v.factor, format: f$, }, }, formula: { tex: '$$F = A\\left[\\frac{(1+i)^n-1}{i}\\right]$$', dynamic: (p, v) => { return { 'factor': `\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}}\\right]`, 'val * factor': `${p.A}\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}}\\right]`, 'val * factor (num)': `${p.A}*${v.factor}`, default: `$$F = ${p.A}\\left[\\frac{(1+${v.i})^{${p.n}}-1}{${v.i}}\\right]=${v.F}$$` } }, }, }

Factor de fondo de amortización $(A/F)$:

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 1, step: 1 }, F: { name: 'Valor futuro (F)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'A/F', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return i / (i_factor - 1); }, format: ff, }, A: { name: 'Anualidad (A)', value: (p, v) => p.F * v.factor, format: f$, }, }, formula: { tex: '$$A = F\\left[\\frac{i}{(1+i)^n-1}\\right]$$', dynamic: (p, v) => { return { 'factor': `\\left[\\frac{${v.i}}{(1+${v.i})^{${p.n}}-1}\\right]`, 'val * factor': `${p.F}\\left[\\frac{${v.i}}{(1+${v.i})^{${p.n}}-1}\\right]`, 'val * factor (num)': `${p.F}*${v.factor}`, default: `$$A = ${p.F}\\left[\\frac{${v.i}}{(1+${v.i})^{${p.n}}-1}\\right]=${v.A}$$`, } } }, }

Factor de valor presente de gradiente aritmético $(P_G/G)$

Recordar que el primer gradiente siempre se localiza en t=2.
(se asume que el primer gradiente es multiplo n=0)

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 5, step: 1 }, G: { name: 'Gradiente (G)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'P/G', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return (1 / i) * ((i_factor - 1) / (i * i_factor) - n / i_factor); }, format: ff, }, P: { name: 'Presente (P)', value: (p, o) => p.G * o.factor, format: f$, }, }, formula: { tex: '$$P_G = \\frac{G}{i}\\left[\\frac{(1+i)^n-1}{i(1+i)^n}-\\frac{n}{(1+i)^n}\\right]$$', dynamic: (p, v) => { let { G, n } = p; let { i } = v; return { 'factor': `\\frac{1}{${i}}\\left[\\frac{(1+${i})^{${n}}-1}{${i}(1+${i})^{${n}}}-\\frac{${n}}{(1+${i})^{${n}}}\\right]`, 'val * factor': `\\frac{${G}}{${i}}\\left[\\frac{(1+${i})^{${n}}-1}{${i}(1+${i})^{${n}}}-\\frac{${n}}{(1+${i})^{${n}}}\\right]`, 'val * factor (num)': `${G}*${v.factor}`, default: `$$P_G = \\frac{${G}}{${i}}\\left[\\frac{(1+${i})^{${n}}-1}{${i}(1+${i})^{${n}}}-\\frac{${n}}{(1+${i})^{${n}}}\\right]=${v.P}$$` } }, }, }

Factor de valor anual de gradiente aritmético $(A_G/G)$

Recordar que el primer gradiente siempre se localiza en t=2.

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, n: { name: 'Periodo (n)', value: 5, step: 1 }, G: { name: 'Gradiente (G)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, factor: { name: 'A/G', value: (p, o) => { let { n } = p; let { i } = o; let i_factor = (1 + i) ** n; return 1 / i - n / (i_factor - 1); }, format: ff, }, A: { name: 'Anualidad (A)', value: (p, o) => p.G * o.factor, format: f$, }, }, formula: { tex: '$$A_G = G\\left[\\frac{1}{i}-\\frac{n}{(1+i)^{n}-1}\\right]$$', dynamic: (p, v) => { let { G, n } = p; let { i } = v; return { 'factor': `\\left[\\frac{1}{${i}}-\\frac{${n}}{(1+${i})^{${n}}-1}\\right]`, 'val * factor': `${G}\\left[\\frac{1}{${i}}-\\frac{${n}}{(1+${i})^{${n}}-1}\\right]`, 'val * factor (num)': `${G}*${v.factor}`, default: `$$A_G = ${G}\\left[\\frac{1}{${i}}-\\frac{${n}}{(1+${i})^{${n}}-1}\\right]=${v.A}$$` } }, }, }

Factor de valor presente de gradiente geométrico $(P_g/A)$

Recordar que el primer gradiente siempre se localiza en t=2.

{ param: { i: { name: 'Interes (i%)', 'data-type': 'interes', value: 10 }, g: { name: 'Gradiente (g%)', value: 5 }, n: { name: 'Periodo (n)', value: 5, step: 1 }, A: { name: 'Flujo inicial (A)', value: 100 }, }, out: { i: { display: false, value: (p) => ffe(p.i * 0.01), }, g: { display: false, value: (p) => ffe(p.g * 0.01), }, subfactor: { name: 'i/g ratio', format: ff, value: (p, o) => { let { n } = p; let { i, g } = o; return ((1 + g) / (1 + i)) ** n; }, }, factor: { name: 'Pg/A1', format: ff, value: (p, o) => { let { n } = p; let { subfactor, i, g } = o; if (subfactor === 1) { return n / (n + i); } else { return (1 - subfactor) / (i - g); } }, }, P: { name: 'Presente (P)', value: (p, o) => p.A * o.factor, format: f$, }, }, formula: { tex: '$$P_G = A_1\\left[\\frac{1-(\\frac{1+g}{1+i})^{n}}{i-g}\\right] \\quad g \\neq i$$' + '$$P_G = \\frac{nA_1}{(1+i)} \\quad g = i$$', dynamic: (p, v) => { let { n, A } = p; let { i, g } = v; let { subfactor } = v._UNFORMATTED; a = subfactor; if (subfactor === 1) { return { 'factor': `\\left[\\frac{${n}}{1+${i}}\\right]`, 'val * factor': `\\frac{(${n})(${A})}{(1+${i})}`, 'val * factor (num)': `${A}*${v.factor}`, default: `$$P_G = \\frac{(${n})(${A})}{(1+${i})} = ${v.P}$$` } } else { return { 'factor': `\\left[\\frac{1-(\\frac{1+${g}}{1+${i}})^{${n}}}{${i}-${g}}\\right]`, 'val * factor': `${A}\\left[\\frac{1-(\\frac{1+${g}}{1+${i}})^{${n}}}{${i}-${g}}\\right]`, 'val * factor (num)': `${A}*${v.factor}`, default: `$$P_G = ${A}\\left[\\frac{1-(\\frac{1+${g}}{1+${i}})^{${n}}}{${i}-${g}}\\right] = ${v.P}$$` } } }, }, }

Tasas de interes

F/P:

{ param: { F: { name: 'Futuro (F)', value: 15 }, P: { name: 'Presente (P)', value: 10, }, n: { name: 'Periodo (n)', value: 1, step: 1 }, }, out: { i: { name: 'Interes (i%)', value: (p) => 100 * ((p.F / p.P) ** (1 / p.n) - 1), }, }, formula: { tex: '$$i = \\left(\\frac{F}{P}\\right)^{\\frac{1}{n}}-1;\\ \\ \\ \\ i_{n=1}=\\frac{F-P}{P}$$', dynamic: (p, v) => { switch (p.n) { case 1: return `$$i=\\frac{${p.F}-${p.P}}{${p.P}}=${v.i}\\%$$`; case 0: return `$$i=${v.i}$$`; default: return `$$i=\\left(\\frac{${p.F}}{${p.P}}\\right)^{\\frac{1}{${p.n}}}=${v.i}\\%$$` } }, }, }

A/P:

Se calcula mediante Método de Newton en casos de n > 2.

{ param: { P: { name: 'Presente (P)', value: 10, }, A: { name: 'Anualidad (A)', value: 5 }, n: { name: 'Periodo (n)', value: 3, step: 1 }, }, out: { i: { name: 'Interes (i%)', value: (p) => tryFindPARate(p.P, p.A, p.n).map(x => ffe(100 * x)), }, }, formula: { tex: '$$f(i)=\\frac{\\left(1+i\\right)^{-n}-1}{-i}-\\frac{P}{A}$$', dynamic: (p, v) => { if (p.n === 0) { return '$$\\textrm{No es posible determinar interés en n=0.}$$' } if (p.n === -1) { return '$$\\textrm{No es posible determinar interés en n=-1.}$$' } if (v.i.length === 0) return '$$\\textrm{No se pudo determinar interés que satisfaga las condiciones.}$$'; if (v.i.length === 1) return `$$i=${v.i[0]}\\%$$`; let t = []; for (let i = 0; i < v.i.length; i++) t.push(`$$i_{${i}}=${v.i[i]}\\%$$`); return t.join(' '); }, }, }

Periodos

F/P:

{ param: { F: { name: 'Futuro (F)', value: 30 }, P: { name: 'Presente (P)', value: 10, }, i: { name: 'Tasa de Interés (i%)', value: 15, }, }, out: { n: { name: 'Periodo (n)', value: (p) => Math.log(p.F / p.P) / Math.log(1 + p.i * 0.01), }, }, formula: { tex: '$$n=\\frac{\\ln\\left(\\frac{F}{P}\\right)}{\\ln\\left(1+i\\right)}$$', dynamic: (p, v) => { let t = `$$n=\\frac{\\ln\\left(\\frac{${p.F}}{${p.P}}\\right)}{\\ln\\left(1+${p.i * 0.01}\\right)}=`; let a = format(v.n, 4); let b = format(Math.ceil(v.n)); if (a === b) return t + a + '$$'; return t + a + '\\approx ' + b + '$$'; }, }, }

A/P:

{ param: { P: { name: 'Presente (P)', value: 10, }, A: { name: 'Anualidad (A)', value: 5 }, i: { name: 'Tasa de Interés (i%)', value: 15, }, }, out: { n: { name: 'Periodo (n)', value: (p) => (p.i === 0) ? p.P / p.A : -Math.log(1 - p.P * (p.i * 0.01) / p.A) / Math.log(1 + p.i * 0.01), }, }, formula: { tex: '$$n=-\\frac{\\ln\\left(1-\\frac{P}{A}\\cdot i\\right)}{\\ln\\left(1+i\\right)}$$', dynamic: (p, v) => { let x = p.P / p.A * p.i * 0.01; if (x > 1) return '$$\\textrm{Imposible pagar!}$$ Intente reducir el interés o presente o aumentar la anualidad.'; let t = (p.i === 0) ? `$$n=\\lim_{i\\to0}{\\left(-\\frac{\\ln\\left(1-\\frac{P}{A}\\cdot i\\right)}{\\ln\\left(1+i\\right)}\\right)}=\\frac{P}{A}=\\frac{${p.P}}{${p.A}}=` : `$$n=-\\frac{\\ln\\left(1-\\frac{${p.P}}{${p.A}}\\cdot\\left(${p.i * 0.01}\\right)\\right)}{\\ln\\left(1+${p.i * 0.01}\\right)}=`; let a = format(v.n, 4); let b = format(Math.ceil(v.n)); if (a === b) return t + a + '$$'; return t + a + '\\approx ' + b + '$$'; }, }, }

Otros

Interpolacion:

{ param: { x: { name: 'x deseado', value: 10.5, }, x1: { name: 'x1', value: 10, }, x2: { name: 'x2', value: 11, }, f1: { name: 'f1', value: 40, }, f2: { name: 'f2', value: 200, }, }, out: { f: { name: 'f deseado', value: (p) => { let { f1, f2, x1, x2, x } = p; return f1 + (x - x1) * (f2 - f1) / (x2 - x1); }, }, }, formula: { tex: '$$f=f_1+\\frac{\\left(x-x_1\\right)}{\\left(x_2-x_1\\right)}\\left(f_2-f_1\\right)$$' } }