En este módulo, exploraremos cómo implementar métodos numéricos en ALGOL. Los métodos numéricos son técnicas utilizadas para resolver problemas matemáticos mediante aproximaciones numéricas. Estos métodos son esenciales en diversas áreas de la ciencia y la ingeniería.

Objetivos del Módulo

  • Comprender los conceptos básicos de los métodos numéricos.
  • Implementar métodos numéricos comunes en ALGOL.
  • Aplicar estos métodos a problemas prácticos.

Contenido

  1. Introducción a los Métodos Numéricos
  2. Método de Bisección
  3. Método de Newton-Raphson
  4. Integración Numérica: Regla del Trapecio
  5. Ejercicios Prácticos

  1. Introducción a los Métodos Numéricos

Los métodos numéricos son algoritmos diseñados para resolver problemas matemáticos que no pueden ser resueltos de manera analítica. Estos métodos son útiles para:

  • Encontrar raíces de ecuaciones.
  • Resolver sistemas de ecuaciones lineales.
  • Integrar funciones.
  • Resolver ecuaciones diferenciales.

  1. Método de Bisección

El método de bisección es una técnica para encontrar raíces de una función continua. Se basa en el teorema del valor intermedio, que establece que si una función continua cambia de signo en un intervalo, entonces tiene al menos una raíz en ese intervalo.

Algoritmo del Método de Bisección

  1. Seleccionar un intervalo \([a, b]\) donde la función \(f(x)\) cambia de signo.
  2. Calcular el punto medio \(c = \frac{a + b}{2}\).
  3. Evaluar \(f(c)\).
  4. Si \(f(c) = 0\), entonces \(c\) es la raíz.
  5. Si \(f(a) \cdot f(c) < 0\), entonces la raíz está en \([a, c]\). De lo contrario, está en \([c, b]\).
  6. Repetir los pasos 2-5 hasta que el intervalo sea suficientemente pequeño.

Implementación en ALGOL

begin
  real procedure f(x);
  value x;
  real x;
  f := x * x - 2;  ! Ejemplo: f(x) = x^2 - 2

  real procedure bisection(a, b, tol);
  value a, b, tol;
  real a, b, tol;
  begin
    real c;
    while abs(b - a) > tol do
    begin
      c := (a + b) / 2;
      if f(c) = 0 then
        bisection := c
      else if f(a) * f(c) < 0 then
        b := c
      else
        a := c
    end;
    bisection := (a + b) / 2
  end;

  real root;
  root := bisection(1.0, 2.0, 0.0001);
  print("La raíz es: ", root)
end

  1. Método de Newton-Raphson

El método de Newton-Raphson es una técnica iterativa para encontrar raíces de una función. Es más rápido que el método de bisección, pero requiere una buena estimación inicial y la derivada de la función.

Algoritmo del Método de Newton-Raphson

  1. Seleccionar una estimación inicial \(x_0\).
  2. Calcular la siguiente estimación usando la fórmula \(x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\).
  3. Repetir el paso 2 hasta que la diferencia entre \(x_{n+1}\) y \(x_n\) sea menor que una tolerancia dada.

Implementación en ALGOL

begin
  real procedure f(x);
  value x;
  real x;
  f := x * x - 2;  ! Ejemplo: f(x) = x^2 - 2

  real procedure f_prime(x);
  value x;
  real x;
  f_prime := 2 * x;  ! Derivada: f'(x) = 2x

  real procedure newton_raphson(x0, tol);
  value x0, tol;
  real x0, tol;
  begin
    real x1;
    x1 := x0 - f(x0) / f_prime(x0);
    while abs(x1 - x0) > tol do
    begin
      x0 := x1;
      x1 := x0 - f(x0) / f_prime(x0)
    end;
    newton_raphson := x1
  end;

  real root;
  root := newton_raphson(1.0, 0.0001);
  print("La raíz es: ", root)
end

  1. Integración Numérica: Regla del Trapecio

La regla del trapecio es un método para aproximar la integral de una función. Se basa en dividir el área bajo la curva en trapecios y sumar sus áreas.

Algoritmo de la Regla del Trapecio

  1. Dividir el intervalo \([a, b]\) en \(n\) subintervalos de igual longitud \(h = \frac{b - a}{n}\).
  2. Calcular la suma de las áreas de los trapecios: \[ \int_a^b f(x) , dx \approx \frac{h}{2} \left[ f(a) + 2 \sum_{i=1}^{n-1} f(a + ih) + f(b) \right] \]

Implementación en ALGOL

begin
  real procedure f(x);
  value x;
  real x;
  f := x * x;  ! Ejemplo: f(x) = x^2

  real procedure trapezoidal(a, b, n);
  value a, b, n;
  real a, b;
  integer n;
  begin
    real h, sum;
    integer i;
    h := (b - a) / n;
    sum := (f(a) + f(b)) / 2;
    for i := 1 step 1 until n - 1 do
      sum := sum + f(a + i * h);
    trapezoidal := h * sum
  end;

  real integral;
  integral := trapezoidal(0.0, 1.0, 100);
  print("La integral es: ", integral)
end

  1. Ejercicios Prácticos

Ejercicio 1: Método de Bisección

Encuentra la raíz de la función \(f(x) = x^3 - 4x + 1\) en el intervalo \([0, 2]\) con una tolerancia de \(0.0001\).

Ejercicio 2: Método de Newton-Raphson

Encuentra la raíz de la función \(f(x) = \cos(x) - x\) usando una estimación inicial de \(x_0 = 0.5\) y una tolerancia de \(0.0001\).

Ejercicio 3: Regla del Trapecio

Calcula la integral de la función \(f(x) = e^x\) en el intervalo \([0, 1]\) usando la regla del trapecio con \(n = 50\) subintervalos.

Soluciones

Solución al Ejercicio 1

begin
  real procedure f(x);
  value x;
  real x;
  f := x * x * x - 4 * x + 1;

  real procedure bisection(a, b, tol);
  value a, b, tol;
  real a, b, tol;
  begin
    real c;
    while abs(b - a) > tol do
    begin
      c := (a + b) / 2;
      if f(c) = 0 then
        bisection := c
      else if f(a) * f(c) < 0 then
        b := c
      else
        a := c
    end;
    bisection := (a + b) / 2
  end;

  real root;
  root := bisection(0.0, 2.0, 0.0001);
  print("La raíz es: ", root)
end

Solución al Ejercicio 2

begin
  real procedure f(x);
  value x;
  real x;
  f := cos(x) - x;

  real procedure f_prime(x);
  value x;
  real x;
  f_prime := -sin(x) - 1;

  real procedure newton_raphson(x0, tol);
  value x0, tol;
  real x0, tol;
  begin
    real x1;
    x1 := x0 - f(x0) / f_prime(x0);
    while abs(x1 - x0) > tol do
    begin
      x0 := x1;
      x1 := x0 - f(x0) / f_prime(x0)
    end;
    newton_raphson := x1
  end;

  real root;
  root := newton_raphson(0.5, 0.0001);
  print("La raíz es: ", root)
end

Solución al Ejercicio 3

begin
  real procedure f(x);
  value x;
  real x;
  f := exp(x);

  real procedure trapezoidal(a, b, n);
  value a, b, n;
  real a, b;
  integer n;
  begin
    real h, sum;
    integer i;
    h := (b - a) / n;
    sum := (f(a) + f(b)) / 2;
    for i := 1 step 1 until n - 1 do
      sum := sum + f(a + i * h);
    trapezoidal := h * sum
  end;

  real integral;
  integral := trapezoidal(0.0, 1.0, 50);
  print("La integral es: ", integral)
end

Conclusión

En este módulo, hemos aprendido a implementar algunos métodos numéricos fundamentales en ALGOL. Estos métodos son herramientas poderosas para resolver problemas matemáticos que no pueden ser abordados de manera analítica. A medida que avances en tu aprendizaje, podrás aplicar estos métodos a problemas más complejos y en diversas áreas de la ciencia y la ingeniería.

© Copyright 2024. Todos los derechos reservados