public static double Funcion(double x)
return Math.Pow(x, 4) - 2 * Math.Pow(x, 3) - 5 * Math.Pow(x, 2) + 12 * x - 5;
public static double Derivada(double x)
return 4 * Math.Pow(x, 3) - 6 * Math.Pow(x, 2) - 10 * x + 12;
public static void MetodoNewtonRaphson()
Console.WriteLine("Método de Newton-Raphson");
double x = -2, tolerancia = 1e-6;
int maxIteraciones = 1000, contador = 0;
while (contador < maxIteraciones)
xNuevo = x - Funcion(x) / Derivada(x);
if (Math.Abs(xNuevo - x) < tolerancia)
Console.WriteLine("Raíz aproximada (Newton-Raphson): " + x);
Console.WriteLine("Iteraciones: " + contador);
public static void MetodoSecante()
Console.WriteLine("Método de la Secante");
double x0 = -2, x1 = 3, tolerancia = 1e-6;
int maxIteraciones = 1000, contador = 0;
while (Math.Abs(x1 - x0) >= tolerancia && contador < maxIteraciones)
x2 = x1 - Funcion(x1) * (x1 - x0) / (Funcion(x1) - Funcion(x0));
Console.WriteLine("Raíz aproximada (Secante): " + x2);
Console.WriteLine("Iteraciones: " + contador);
public static void MetodoBiseccion()
Console.WriteLine("Método de Bisección");
double a = -2, b = 3, tolerancia = 1e-6;
int maxIteraciones = 1000, contador = 0;
if (Funcion(a) * Funcion(b) >= 0)
Console.WriteLine("No se puede aplicar el método de bisección con estos valores iniciales.");
while ((b - a) >= tolerancia && contador < maxIteraciones)
if (Funcion(c) * Funcion(a) < 0)
Console.WriteLine("Raíz aproximada (Bisección): " + c);
Console.WriteLine("Iteraciones: " + contador);
public static void Main()
Console.WriteLine("Actividad 7, Tarea 8");