Hoy veremos cómo implementar el método de la regla falsa en C++. Este método involucra el resolver la fórmula, obtener xr, definir los intervalos y buscar el valor deseado hasta que la tolerancia sea menor a la deseada.
Funciones que resuelven la ecuación
Primero veamos las funciones:
doubleresolverEcuacion(double valor){// Con la ecuación: x^3-7x^2+14x-6returnpow(valor,3)-7*pow(valor,2)+14* valor -6;}doubleobtenerxr(double a,double b,double fa,double fb){return((a * fb)-(b * fa))/(fb - fa);}
En este caso estoy usando determinada fórmula, pero puedes cambiarla y todo el ejercicio seguirá funcionando perfectamente.
También puedes cambiar la tolerencia y los intervalos.
Método de la regla falsa en C++
Ahora veamos el código que hace posible todo esto:
/*
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
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 regla falsa
===========================================
*/#include<cmath>#include<iostream>usingnamespace std;doubleresolverEcuacion(double valor){// Con la ecuación: x^3-7x^2+14x-6returnpow(valor,3)-7*pow(valor,2)+14* valor -6;}doubleobtenerxr(double a,double b,double fa,double fb){return((a * fb)-(b * fa))/(fb - fa);}intmain(){double a =1;double b =3.2;int iterador =1;double tolerancia =0;double anterior_xr =0;double toleranciaDeseada =0.001;printf("Método de la Regla Falsa\n");printf("f(x)= x^3-7x^2+14x-6\n");printf("Intervalos: [%0.2f, %0.2f]\n", a, b);printf("Tolerancia: %0.4f\n\n\n", toleranciaDeseada);printf("+-----------+-------------+-------------+-------------+-------------+""-------------+-------------+-------------+------------+\n");printf("|Iteraciones| a | b | f(a) | f(b) ""| xr | f(xr) | f(a)*f(xr) | Tolerancia |\n");printf("+-----------+-------------+-------------+-------------+-------------+""-------------+-------------+-------------+------------+\n");while(1){double fa =resolverEcuacion(a);double fb =resolverEcuacion(b);double xr =obtenerxr(a, b, fa, fb);double fxr =resolverEcuacion(xr);double fa_fxr = fa * fxr;
tolerancia = anterior_xr - xr;if(iterador ==1){
tolerancia =0;}printf("|%10d |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f |%12.8f ""|%12.8f|\n",
iterador, a, b, fa, fb, xr, fxr, fa_fxr, tolerancia);if(fxr >0){
a = xr;}else{
b = xr;}
anterior_xr = xr;if(iterador !=1&& tolerancia < toleranciaDeseada){break;}
iterador++;}printf("+-----------+-------------+-------------+-------------+-------------+""-------------+-------------+-------------+------------+\n");}
Como ves al inicio definimos la tolerancia y los intervalos. Vamos resolviendo la ecuación, obtenemos las derivadas y vamos imprimiendo los valores usando printf.
También hacemos un intercambio de los límites dependiendo de lo que salga de f(xr).
Al ejecutar el código vemos algo así:
Método de la regla falsa en C++
Como puedes ver el cálculo es correcto. Se muestran las iteraciones, derivadas y la tolerencia.
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.
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…
En este post de programación en lenguaje C te enseñaré a calcular el volumen de un cono, mismo que vamos a calcular a partir de su radio y altura. Vamos a encerrar la fórmula del cono en una función que recibirá los dos valores necesarios, usará PI y la potencia…
En este post de programación en C te enseñaré a sacar el porcentaje de diferencia que existe entre dos números, ya sea positivo o negativo. Te voy a enseñar una función en ANSI C que te dirá el porcentaje de diferencia que hay entre dos variables de tipo double. Por…