Visual Basic - anualidades: auxilio

Life is soft - evento anual de software empresarial
 
Vista:

anualidades: auxilio

Publicado por rosti (2 intervenciones) el 03/09/2004 03:05:29
como despejo i

m= a *(( ( 1+i )^n - 1) / i )




Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:anualidades: auxilio

Publicado por bla (230 intervenciones) el 12/09/2004 16:30:50
Supongo que lo que buscas es un valor de i conociendo los valores de a de m y de n.
Cuando no podemos despajar, lo mejor es utilizar un método iterativo que nos devuelva una solución aproximada (tan aproximada como queramos)

Sub main()
m = 50: n = 3: a = 5
x1 = 2 ' Valor inicial (solución aproximada)
Do
x0 = x1
x1 = x0 - f(x0, a, m, n) / f1(x0, a, m, n)
Loop While Abs(x1 - x0) > 0.000001 ' Error admisible
Debug.Print "Solución: " & x1
End Sub
' Función de la que queremos encontrar un cero
Private Function f(x, a, m, n) As Double
f = (1 + x) ^ n - 1 - x * m / a
End Function
' Función derivada de la función anterior
Private Function f1(x, a, m, n) As Double
f1 = n * (1 + x) ^ (n - 1) - m / a
End Function

Devolverá: Solución: 1,54138126514911
Observa que si en lugar de x=2 ponemos otro valor, por ejemplo x=-5 nos devolverá otra solución "Solución: -4,54138126514941"

Es evidente también que 0 es una solución para cualquier m, a, n

Lo mejor es que pruebes con varios x iniciales y muestres todas las soluciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar