Método del punto fijo con Python

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ธ.ค. 2024

ความคิดเห็น •

  • @1211Alejandro
    @1211Alejandro 5 ปีที่แล้ว +2

    Te juro que llevaba como 2 horas buscando como hacer este método por python y apenas logré encontrarte
    Fue exactamente lo que estaba buscando y me despejaste muchas dudas
    Muchísimas gracias

  • @santosvladimirchaveznolasc4435
    @santosvladimirchaveznolasc4435 4 ปีที่แล้ว

    Se supone que el programa debe recibir f(x) y posteriormente calcular g(x).

  • @bmxmotin
    @bmxmotin 6 ปีที่แล้ว

    Tienes el link del código?

    • @math4cheems
      @math4cheems  6 ปีที่แล้ว +1

      Hola, no. No lo tengo. De hecho por eso lo puse así, el código es totalmente visible para que cualquiera lo copie y modifique (además no es tan largo). No tengo respaldo de nada... y no porque no quisiera, sino porque en menos de un año se me dañaron 3 discos duros :(
      Feliz día.

  • @cristianpazu3413
    @cristianpazu3413 7 ปีที่แล้ว

    como lo hago para cualquier función como lo haría????

    • @math4cheems
      @math4cheems  7 ปีที่แล้ว

      Hola. Un problema del punto fijo es que toca despejar una "x" (o la variable incógnita) de alguna manera para formar una expresión de la forma x = g(x) siendo g(x) una función contractiva (creo que ese es el término). Si no lo es, buscar otro despeje... incluso a veces también ensayar varios valores de arranque. Esta parte del método es muy "artesanal", por lo que diría que es muy complicado crear una función que realice todo el proceso de manera automática (supongo que eso es lo que estás buscando). Sin embargo sí es posible crear una función de Python a la que le entregues como parámetros la función g, la variable incógnita (x, t, o la que sea), el valor de arranque y la tolerancia. Eso no tiene mayor complicación, pero te sugiero usar el módulo sympy para un manejo cómodo de las variables y las sustituciones.

    • @cristianpazu3413
      @cristianpazu3413 7 ปีที่แล้ว

      pero si ya digita la función despejada.yo pido la función despejada y me escribe 2x el x no me lo esta leyendo solo me lee. sabes q podria hacer hay

    • @cristianpazu3413
      @cristianpazu3413 7 ปีที่แล้ว

      import cmath,math,os,sys;
      def main():
      puntofijo();
      def puntofijo():
      x=float(input('Ingresa valor inicial(X0): '));
      tolerancia=float(input('Ingresa el porcentaje de error: '));
      N=int(input('Numero maximo de iteraciones: '));
      f=input('Ingrese la función f(x), ya despejada g(f(x)): ');
      er=100;
      i=0;
      print('#iteracion\tg(f(x))\t\terror')
      while(i=tolerancia):
      temp=x;
      x=eval(f);
      er=abs((x-temp));
      print("%d\t\t%.4f\t\t%.4f"%(i,x,er));
      i+=1;
      print("
      La solucion mas aproximada es: %.4f con un error de %.4f"%(x,er));
      if __name__=="__main__":
      main();

    • @math4cheems
      @math4cheems  7 ปีที่แล้ว

      Hola. MIra, le hice unos cambios menores (la mayoría relacionada con aspectos conceptuales... ej. una cosa es la tolerancia y otra es error porcentual, y el error verdadero no teóricamente no se conoce, sino que se estima un aproximado relacionado con el orden de magnitud, etc.) A mi me corrió sin problemas como te lo envío comparando los resultados con los obtenidos con otros programas matemáticos (ten cuidado cómo importas esas librerías, el orden de las iteraciones, etc.). No tengo mucho tiempo ahora para explicar más los detalles, así que ahí va:
      from math import *
      def puntofijo():
      print('Método del punto fijo: x=g(x)');
      x=float(input('Ingresa valor inicial(X0): '));
      tolerancia=float(input('Máxima tolerancia permitida: '));
      N=int(input('Numero maximo de iteraciones: '));
      f=input('Ingrese la función g(x): ');
      er=100;
      i=1;
      print('#iteracion\tg(f(x))\t\terror estimado')
      while(i=tolerancia):
      temp=x; x=eval(f);
      er=abs((x-temp));
      print("%d\t\t%.12f\t%.12f"%(i,x,er));
      i+=1;
      print("
      La solucion mas aproximada es %s con un error estimado inferior a %s."%(x,tolerancia));
      puntofijo()
      Una nota final: de nada sirve por ejemplo pedir un máximo error permitido de 1e-10 por ejemplo si vas a entregar la solución con apenas 4 decimales.
      Feliz día.

    • @math4cheems
      @math4cheems  7 ปีที่แล้ว

      Perdona la redacción... en serio escribí todo a las carreras. Ahora me percato de varios errores en mi explicación.