cpp

Método de la bisección en C++

En este post te mostraré cómo usar el método de la bisección en C++ para la búsqueda de raíces. Se imprimirá una tabla con todas las iteraciones hasta que el error sea mínimo.

Lo hice con una ecuación o fórmula que puede cambiarse según sea el caso.

Método de la bisección en C++

La verdad es que no soy un matemático, pero sí un programador. El código queda así:

/*
  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    Blog:       https://parzibyte.me/blog
    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
    Contacto:   https://parzibyte.me/blog/contacto/
    
    Copyright (c) 2020 Luis Cabrera Benito
    Licenciado bajo la licencia MIT
    
    El texto de arriba debe ser incluido en cualquier redistribución

    ===========================================
    Método de la bisección en C++
    ===========================================
*/#include <iostream>
#include <cmath>

using namespace std;

float resolverEcuacion(float valor) {
  // Con la ecuación: X^3 + 4X ^2 -10
  return pow(valor, 3) + 4 * (pow(valor, 2)) - 10;
}

int main() {
  int iterador = 1;
  /*
      a = inferior
      b = superior
  */  float a = 1;
  float b = 2;
  float xi_xi = 0;
  float ultimo_xi = 0;

  printf(
      "|-----------------------------------------------------------------------"
      "--------------------------------------------\n");
  printf(
      "|  i |       a     |      b      |    f(a)     |    f(b)     |      xi  "
      "   |    f(xi)    |f(a) * f(xi) |   xi-xi_  |\n");
  printf(
      "|-----------------------------------------------------------------------"
      "--------------------------------------------\n");
  while (1) {
    float fa = resolverEcuacion(a);
    float fb = resolverEcuacion(b);
    float xi = (a + b) / 2;
    float fxi = resolverEcuacion(xi);
    float fa_fxi = fa * fxi;
    xi_xi = abs(xi - ultimo_xi);
    printf(
        "|%3d |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f "
        "|%12.8f\n",
        iterador, a, b, fa, fb, xi, fxi, fa_fxi, xi_xi);
    iterador++;
    if (fa_fxi > 0) {
      a = xi;
    } else {
      b = xi;
    }
    ultimo_xi = xi;
    if (xi_xi == 0) {
      break;
    }
  }
}

Presta atención a la función resolverEcuacion pues ahí puedes cambiar la fórmula. Recuerda que la tabla se imprimirá y que el ciclo infinito se romperá cuando xi_xi sea 0.

Aquí tienes el ejemplo de cómo se ejecuta:

Método de la bisección en C++

Nota: para alinear los valores e imprimir la tabla utilicé printf.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 días hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.