Hola Alvaro, la fórmula que publiqué en ese entonces la tenía anotada de un libro de matemáticas financieras - y confieso que se la envié con la seguridad de que aplicaba para pagos mediante metodo francés porque así la tenía marcada - pero da una diferencia pequeña, de modo que no es exacta. Como Elkin reportó en su momento que le sirvió .. pues no lo revisé. Ciertamente no he encontrado otra formula mas, así que es simple iterar para hallar el resultado, tal como también lo propone Victor.
Para enmendar el asunto les hago llegar otra función, con un ejemplo esta ves si.
Saludos.
*******************************************************************
* obtener tasa de interes anual para un financiamiento por metodo de pago francés
* a partir de la cuota, monto del préstamo y plazo
********************************************************************
clear
tasaAnual = 13.09
prestamo = 100000
numerodePagos = 36
pagosAnuales = 12
pago = Payment(prestamo,tasaAnual/100/pagosAnuales,numerodePagos)
? 'La funcion debe devolver ',tasaAnual,' para cuotas de ',pago
tasaInt = tasa( prestamo , pago, numerodePagos, pagosAnuales )
if tasaInt = -1
? 'Datos suministrados no son válidos '
else
? ' La función devuelve ', tasaInt
endif
*-------------------------------
Function tasa( d,m,n,f )
*-------------------------------
*d = deuda ( monto financiado )
*m = monto del pago ( valor de la cuota )
*n = numero de pagos ( plazo )
*f = numero de pagos en un año ( ej 12 o 24 )
*------------------------------------
Local difAnter,i,tasa
difAnter = m.d
i = 0
#define maxTasaValida 80
Do While m.i < maxTasaValida
cuotac = Payment(m.d,m.i/m.f/100,m.n)
estadif = m.cuotac - m.m
If m.estadif > 0
tasa = m.i-Iif(m.difAnter < m.estadif,0.01,0)
Return tasa
Endif
difAnter = m.estadif
i = m.i+0.01
Enddo
return -1