Autor Tema: Interés Compuesto  (Leído 4185 veces)

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Interés Compuesto
« en: 09 de Junio 2022, 20:25 »
Hola soy muy nuevo y leyendo un libro del interés compuesto pone el ejemplo de: "¿Qué prefieres 3 millones de euros hoy o una moneda mágica que duplica su valor cada día durante 31 días?". Yo estoy usando Raptor para iniciarme con la ayuda de unos vídeos de YouTube pero no sé hacer lo de duplicar el valor por 31 veces. he buscado y he encontrado una web donde dice como se hace es esta https://algoritmosurgentes.com/algoritmo-en-diagrama-de-flujo-raptor/interes-compuesto, pero no me aclaro. No sé que pretendo con este mensaje ya que tal vez este muy bien explicado y me falten conocimientos, pero si me podéis guiar os estaría agradecido, un saludo! ;D
« Última modificación: 09 de Junio 2022, 21:48 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #1 en: 10 de Junio 2022, 21:17 »
No soy matemático, y aún menos financiero.
Pero creo que puedo explicar lo que hace esa línea de código donde se ejecuta la fórmula.

La fórmula lo que hace es por un lado calcular la tasa de interés, que es un tanto por ciento

(1.0 + tasa/100)

Esta tasa, es la que hay duplicar 31 veces, así que para ello, hacemos una potencia, es decir, la elevamos a 31
(1.0 + tasa/100)^31

Eso va a dar un resultado, y ahora dicho resultado, lo multiplicamos por el capital inicial
((1.0 + tasa/100)^31) * capitalInicial


Todo eso nos da la suma del dinero que habíamos puesto, más el interés compuesto que ha generado.
Es decir, el monto total que tendríamos una vez transcurridos los 31 días.
MONTO = ((1.0 + tasa/100)^31) * capitalInicial

Pero si queremos conocer solamente el interés compuesto que esto ha generado, no el monto de dinero que tenemos, pues ahora simplemente le restaríamos el capital inicial.

INTERES_COMPUESTO = MONTO - capitalInicial


No se si así explicado y con colorines, es más fácil de entender.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #2 en: 11 de Junio 2022, 05:21 »
Sí, así explicado lo entiendo mejor, Esto: "(1.0 + tasa/100)^31" no debería ser x2 o algo así? me pondré a ello y os cuento que tal, muchísimas gracias!  :)
« Última modificación: 11 de Junio 2022, 05:27 por ToniLuckyFive »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #3 en: 11 de Junio 2022, 10:03 »
El "por qué" de la fórmula ya tendría que explicárnoslo alguien con conocimientos de matemáticas financieras.

Supongo que la diferencia entre interés simple y compuesto radica en eso.
El simple se calcula con multiplicaciones y el compuesto aplicando potencias.

Pero vamos, las mates nunca han sido lo mío... :-[
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #4 en: 11 de Junio 2022, 11:42 »
Ok bueno... se agradece  :P yo tampoco estoy muy puesto en esta materia (creo que se nota)

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #5 en: 14 de Junio 2022, 08:32 »
Me voy a dejar de usar Raptor ya que es un poco confuso, ahora estoy viendo un curso de HTML y CSS y voy a usar VisualStudioCode, pero aun no he empezado a hacerlo servir, muchas gracias por los consejos!

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #6 en: 16 de Junio 2022, 11:17 »
Hola, estoy viendo vídeos de Python y hay un ciclo o bucle que empieza así:
x=20
while x < 35:
      print (x)
      x += 3
Pero no es lo que busco aunque es muy parecido, ¿sabéis cómo se podría hacer lo de doblar el valor por 31 veces con los bucles? ya sea en Python o en otro lenguaje...  Gracias de nuevo y un saludo!

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #7 en: 17 de Junio 2022, 11:08 »
¿Hablamos de "doblar" o de "potenciar"?

Doblar sería multiplicar x2 varias veces un valor.

Potenciar es multiplicar un valor por sí mismo, varias veces.

Lo que vimos en la fórmula del interés compuesto, era una potencia
Citar
((1.0 + tasa/100)^31)

Es decir, ese valor no se dobla 31 veces. Si no que se multiplica por sí mismo, 31 veces
valor * valor * valor * valor  * valor * valor  ........ así 31 veces

En una potencia, tenemos una base (valor inicial) y un exponente (las x veces que la base  se multiplica por ella misma.

Así que para hacerlo con un bucle, lo que haremos dentro del bucle será multiplicar la base por sí misma tantas veces como diga el exponente.

Esto sería un ejemplo completo escrito en Java.
El proceso de potenciar se hace en una función escrita separada del programa principal, el cuál lo único que hace es pedir base y exponente para luego mostrar el resultado.
Código: [Seleccionar]
import java.util.Scanner;

public class Potencia {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

System.out.print("Indique valor: ");
int valor = teclado.nextInt();
System.out.print("Indique exponente: ");
int exponente = teclado.nextInt();

System.out.println("\nResultado de la potencia: " + potenciar(valor, exponente));

teclado.close();

}

/*
* Función que recibe una base y un exponente
* y realiza la potencia mediante un bucle.
*/
public static int potenciar(int base, int exp) {

int valorPotenciado = base;

for (int i = 1; i < exp; i++)
valorPotenciado = valorPotenciado * base;

return valorPotenciado;
}

}

Ese código puedes probarlo online en esta URL

Está escrito en Java, pero el proceso sería el mismo para cualquier lenguaje.
Lo único que hay que tener en cuenta son las limitaciones de los tipos de datos.

Ese ejemplo lo he escrito para trabajar con enteros (int), lo cuál sirve para potencias pequeñas.
Citar
Indique valor: 4
Indique exponente: 5

Resultado de la potencia: 1024
Pero una potencia de exponente grande, como puede ser 31, puede dar resultados enormes que sobrepasan las capacidades del tipo de dato int, así que nos dará resultados que no son válidos, incluso incongruentes:
Citar
Indique valor: 4
Indique exponente: 31

Resultado de la potencia: 0

Así que habría que escoger otros tipos de datos con capacidades más amplias.

Para tipos de datos primitivos, tenemos el double, pero incluso este puede no ser suficiente.
Nos dará resultados válidos y correctos, pero usando notación científica para las cifras muy grandes, y puede que no sea esto lo que queramos:
Citar
Indique valor: 4
Indique exponente: 31

Resultado de la potencia: 4.6116860184273879E18

Si queremos seguir trabajando con valores enteros, en Java tenemos la clase BigInteger, que al ser una clase y no un tipo primitivo, hay que modificar la sintaxis del código para operar con él.
Citar
import java.math.BigInteger;
import java.util.Scanner;

public class Potencia {

   public static void main(String[] args) {
      Scanner teclado = new Scanner(System.in);
      
      System.out.print("Indique valor: ");
      BigInteger valor = new BigInteger(teclado.nextLine());
      System.out.print("Indique exponente: ");
      int exponente = teclado.nextInt();
      
      System.out.println("\nResultado de la potencia: " + potenciar(valor, exponente));
      
      teclado.close();

   }
   
   /*
    * Función que recibe una base y un exponente
    * y realiza la potencia mediante un bucle.
    */
   public static BigInteger potenciar(BigInteger base, int exp) {
      
      BigInteger valorPotenciado = base;
      
      for (int i = 1; i < exp; i++)
         valorPotenciado = valorPotenciado.multiply(base);
      
      return valorPotenciado;
   }

}

Ahora sí podemos hacer potencias grandes:
Citar
Indique valor: 4
Indique exponente: 31

Resultado de la potencia: 4611686018427387904

Si quisiéramos, lo mismo, pero trabajando con números reales (más apropiado para cálculos financieros) en lugar de enteros, tenemos la clase BigDecimal


Pero bueno, esto ya es en lo que respecta a Java. Cada lenguaje tendrá sus tipos de datos, sus clases y sus limitaciones propias.

Al margen de esto, la lógica a aplicar para hacer una potencia mediante un bucle, es la misma para cualquier lenguaje:
Citar
   public static int potenciar(int base, int exp) {
      
      int valorPotenciado = base;
      
      for (int i = 1; i < exp; i++)
         valorPotenciado = valorPotenciado * base;
      
      return valorPotenciado;
   }
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #8 en: 17 de Junio 2022, 11:35 »
Primero que nada gracias por la currada de mensaje  :) y segundo pedir disculpas porque me he estado haciendo un lio. Yo lo que quiero es saber el calculo de doblar el valor de una "moneda mágica" que dice en un libro (o bueno mejor dicho un resumen) titulado el interés compuesto pero a lo mejor no es un interés compuesto lo que busco por lo que dices tú y por mi ignorancia de las matemáticas, (estoy en ello).

"¿Hablamos de "doblar" o de "potenciar"?

Doblar sería multiplicar x2 varias veces un valor."

Hablo de doblar durante 31 veces (el caso que cuenta en el libro es de una moneda mágica que dobla su valor cada día que pasa por un total de 31 días y te da a elegir entre tres millones ahora o la moneda (el libro ya me lo leí) pero quería hacer el calculo por mí porque creo recordar que daba dos resultados o había visto un resultado diferente del que ponía el libro en otra parte (ya que es un ejemplo que se pone para ver el potencial del interés compuesto) y al no estar muy puesto en matemáticas y menos en programación no sé hacerlo, podría hacerlo con la calculadora multiplicar por 2 31 veces pero ya que he visto lo que puede hacer un programa quería aprenderlo.
Gracias de nuevo y un saludo Kabuto!

Edito: el libro se titula "el efecto compuesto", no "el interés compuesto". Llevo una liada...
« Última modificación: 17 de Junio 2022, 13:09 por ToniLuckyFive »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #9 en: 19 de Junio 2022, 00:11 »
Bueno, ese título se presta a confusión  ;)

En cualquier caso, el código en realidad es muy similar. Un bucle donde lo que hacemos es multiplicar por 2 un valor, tantas veces como queramos.

Y como antes, el tipo de dato puede limitar resultados. Porque aunque no lo parezca, doblar 31 veces incluso un valor de 1, nos puede dar una cifra enorme.

Puedes probar el código aquí

Código: [Seleccionar]
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

System.out.print("Indique valor: ");
int valor = teclado.nextInt();
System.out.print("Indique veces quiere doblar: ");
int vecesDoblar = teclado.nextInt();

System.out.println("\nResultado: " + doblar(valor, vecesDoblar));

teclado.close();

}

public static long doblar(int valor, int veces) {

long valorDoblado = valor;

for (int i = 0; i < veces; i++)
valorDoblado = valorDoblado * 2;

return valorDoblado;
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #10 en: 19 de Junio 2022, 08:49 »
Muchas gracias! he probado de correrlo pero la primera vez salía una barra como de "cargando" y la segunda me da error, no me deja cambiar nada del código en la web que me has pasado, no sé que probar... Me sale esto: "error: Class names, 'Sin, titulo3', are only accepted if anntation precessing is explicitly requested
1 error
** Proceso salido - Código de retorno: 1**"

He probado de cambiar el valor 0 del código a 1 pero no me deja.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #11 en: 19 de Junio 2022, 10:57 »
Que raro, a mi me funciona.
No se porque te sale lo de "SinTitulo3", debería salir como "Main.java".

Pero bueno, entra la página de inicio, elige Java en el selector de lenguaje de la parte de arriba y copia el código de aquí abajo.

Código: [Seleccionar]
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

System.out.print("Indique valor: ");
int valor = teclado.nextInt();
System.out.print("Indique veces quiere doblar: ");
int vecesDoblar = teclado.nextInt();

System.out.println("\nResultado: " + doblar(valor, vecesDoblar));

teclado.close();

}

public static long doblar(int valor, int veces) {

long valorDoblado = valor;

for (int i = 0; i < veces; i++)
valorDoblado = valorDoblado * 2;

return valorDoblado;
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #12 en: 19 de Junio 2022, 11:15 »
Perdona porque hay muchas cosas que desconozco pero no me funciona, me sale este error ahora: "Archivo "principal.py", línea 7
               clase pública Principal {
                         ^
Error de sintaxis: sintaxis invalida


** Proceso salido - Código de retorno: 1 **"
Busco pero no encuentro la línea 7, desconozco porque no sale...

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #13 en: 19 de Junio 2022, 11:38 »
Ahí ocurren dos cosas.

Una, que lo estás poniendo en el editor de Python. Tienes que cambiarlo a Java.
Arriba a la derecha, hay un desplegable para elegir lenguaje




Dos, que no se por qué...., te ha traducido el texto del código al español  :o
Te ha puesto "clase pública Principal", cuando el código original es "public class Main"

No se por qué te ha hecho una traducción al español, quizás ha sido tu navegador que ha pensado que estabas copiando un texto en inglés y te ha hecho una traducción automática.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #14 en: 19 de Junio 2022, 11:51 »
He cambiado a Java y de Chrome a Opera GX, ya que el primero tengo traductor y normalmente me traduce las webs, y me da este error:
" Main. java:10: error: class, interface, or enum expected
import java.util.scanner;
^
1 error


** Process exited - Return code: 1 ** "

Seguimos avanzando jeje gracias y saludos!

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #15 en: 19 de Junio 2022, 18:18 »
La s de Scanner debe ir en mayúscula, ya que es el nombre de una clase

Citar
import java.util.Scanner;
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #16 en: 19 de Junio 2022, 18:29 »
No sé como pasar captura por aquí para que veas que la s está en mayúscula. He hecho un copiar y pegar del código  :o lol
Le doy al error que me da y me marca que está aquí: "import java.util.Scanner;" la línea 10

ToniLuckyFive

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re: Interés Compuesto
« Respuesta #17 en: 19 de Junio 2022, 18:46 »
Conseguido! tenía que borrar lo que había escrito en el código antes de hacer el copia y pega, muchas gracias por tu paciencia!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".