Programa para el método iterativo de Picard | Matemáticas Computacionales

El método de Picard es un método iterativo y se utiliza principalmente para aproximar soluciones a ecuaciones diferenciales.

Este método de resolución aproximada de una ecuación diferencial es de aproximación sucesiva; es decir, es un método iterativo en el que los resultados numéricos se vuelven cada vez más precisos cuantas más veces se utilice.

El método iterativo de Picard da una secuencia de aproximaciones Y1(x), Y2(x), …Yk(x) a la solución de ecuaciones diferenciales tal que la n-ésima aproximación se obtiene a partir de una o más aproximaciones previas.

La serie iterativa de Picard es relativamente fácil de implementar y las soluciones obtenidas a través de este análisis numérico son generalmente series de potencias .

Fórmula del método de iteración de Picard:

Fórmula de iteración de Picard.

Pasos involucrados:

  • Paso 1: Un valor aproximado de y (tomado, al principio, como una constante) se sustituye en el lado derecho de la ecuación diferencial:
    dy/dx= f(x, y).
  • Paso 2: Luego, la ecuación se integra con respecto a x dando y en términos de x como una segunda aproximación, en la que se sustituyen los valores numéricos dados y el resultado se redondea a un número asignado de lugares decimales o cifras significativas.
  • Paso 3: El proceso iterativo continúa hasta que dos soluciones numéricas consecutivas son iguales cuando se redondean al número requerido de lugares decimales.

Ejemplo de iteración de Picard:
Dado que: y que y = 0 cuando x = 0 , determine el valor de y cuando x = 0.3 , correcto hasta cuatro decimales.

Solución:
Podemos proceder como sigue:
donde x0 = 0. Por lo tanto:
donde y0 = 0. que se convierte en:

  • Primera iteración:
    aún no conocemos y en términos de x, por lo que reemplazamos y por el valor constante y0 en la función a integrar.

    El resultado de la primera iteración viene dado, en x = 0,3, por:

  • Segunda Iteración:
    Ahora, usamos:

    Por lo tanto, lo
    que da:

    El resultado de la segunda iteración viene dado por:
    en x=0,3.

  • Tercera Iteración:
    Ahora usamos:

    Por lo tanto, lo
    que da:

    El resultado de la tercera iteración viene dado por:
    en x = 0,3.

  • Por lo tanto, y = 0.0451 , corrija hasta cuatro lugares decimales, en x = 0.3 .

Programa para el método iterativo de Picard:

// C program for Picard's iterative method
  
#include <math.h>
#include <stdio.h>
  
// required macros defined below:
#define Y1(x) (1 + (x) + pow(x, 2) / 2)
#define Y2(x) (1 + (x) + pow(x, 2) / 2 + pow(x, 3) / 3 + pow(x, 4) / 8)
#define Y3(x) (1 + (x) + pow(x, 2) / 2 + pow(x, 3) / 3 + pow(x, 4) / 8 + pow(x, 5) / 15 + pow(x, 6) / 48)
  
int main()
{
    double start_value = 0, end_value = 3,
           allowed_error = 0.4, temp;
    double y1[30], y2[30], y3[30];
    int count;
  
    for (temp = start_value, count = 0;
         temp <= end_value;
         temp = temp + allowed_error, count++) {
  
        y1[count] = Y1(temp);
        y2[count] = Y2(temp);
        y3[count] = Y3(temp);
    }
  
    printf("\nX\n");
    for (temp = start_value;
         temp <= end_value;
         temp = temp + allowed_error) {
  
        // considering all values
        // upto 4 decimal places.
        printf("%.4lf ", temp);
    }
  
    printf("\n\nY(1)\n");
    for (temp = start_value, count = 0;
         temp <= end_value;
         temp = temp + allowed_error, count++) {
  
        printf("%.4lf ", y1[count]);
    }
  
    printf("\n\nY(2)\n");
    for (temp = start_value, count = 0;
         temp <= end_value;
         temp = temp + allowed_error, count++) {
  
        printf("%.4lf ", y2[count]);
    }
  
    printf("\n\nY(3)\n");
    for (temp = start_value, count = 0;
         temp <= end_value;
         temp = temp + allowed_error, count++) {
  
        printf("%.4lf ", y3[count]);
    }
    return 0;
}
Producción:

X
0.0000 0.4000 0.8000 1.2000 1.6000 2.0000 2.4000 2.8000 

Y(1)
1.0000 1.4800 2.1200 2.9200 3.8800 5.0000 6.2800 7.7200 

Y(2)
1.0000 1.5045 2.3419 3.7552 6.0645 9.6667 15.0352 22.7205 

Y(3)
1.0000 1.5053 2.3692 3.9833 7.1131 13.1333 24.3249 44.2335

Publicación traducida automáticamente

Artículo escrito por Anirban166 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *