public Salida MReglaFalsa(double extremoizquierdo, double extremoderecho) { Salida salida = new Salida(); double xr = 0; int contador = 0; double Xant = 0; double Error = 0; int Iteraciones = 100; double Tolerancia = 0.0001; double resultado = 0; resultado = f(extremoizquierdo) * f(extremoderecho); if (resultado > 0) { salida.ErrorMsje = ("f(x1)*f(x2) > 0"); } if (resultado == 0) { if (f(extremoizquierdo) == 0) { salida.ErrorMsje = ("El extremo izquierdo es la raiz"); salida.ErrorRelativo = 0; salida.NroIteraciones = contador; } else if (f(extremoderecho) == 0) { salida.ErrorMsje = ("El extremo derecho es la raiz"); salida.ErrorRelativo = 0; salida.NroIteraciones = contador; } } if (resultado < 0) { do { xr = (((f(extremoizquierdo) * extremoderecho) - (f(extremoderecho) * extremoizquierdo))) / (f(extremoizquierdo) - f(extremoderecho)); contador = contador + 1; Error = Math.Abs((xr - Xant) / xr); if (Math.Abs(f(xr)) < Tolerancia | contador > Iteraciones | Error < Tolerancia) { salida.Raiz = xr; salida.ErrorRelativo = Error; salida.NroIteraciones = contador; } else if (f(extremoizquierdo) * f(extremoderecho) < 0) { extremoizquierdo = xr; } else { extremoderecho = xr; } Xant = xr; } while (Error > Tolerancia && contador <= Iteraciones); } return(salida); }
public Salida MetodoSecante(double x1, double x2) { double xant, error; int itermax = 100; double tolerancia = 0.001; double c = 0; double xr = 0; error = 0; Salida salida = new Salida(); if (f(x1) == 0) { salida.Raiz = x1; salida.ErrorRelativo = 0; salida.NroIteraciones = c; } else { if (f(x2) == 0) { salida.Raiz = x2; salida.ErrorRelativo = 0; salida.NroIteraciones = c; } // Console.WriteLine("La raíz es: " + x2); else { xant = 0; do { c++; xr = ((f(x2) * x1) - (f(x1) * x2)) / (f(x2) - f(x1)); error = Math.Abs((xr - xant) / xr); x1 = x2; x2 = xr; xant = xr; } while ((Math.Abs(f(xr)) > tolerancia) && (c < itermax)); } salida.Raiz = xr; salida.ErrorRelativo = error; salida.NroIteraciones = c; } return(salida); }
public Salida NRaphson(double xi) { double c = 0; var itermax = 100; double error = 0; double derivada; double xr = 0; double xant = 0; double tolerancia = 0.0001; Salida salida = new Salida(); if (f(xi) == 0) { salida.ErrorRelativo = 0; salida.Raiz = xi; salida.NroIteraciones = c; } else { xant = 0; do { derivada = (((f(xi + tolerancia) - f(xi))) / tolerancia); xr = xi - (f(xi) / derivada); error = Math.Abs((xr - xant) / xr); c = c + 1; xi = xr; xant = xr; } while ((Math.Abs(f(xr)) > tolerancia) && (c < itermax)); salida.Raiz = xr; salida.NroIteraciones = c; salida.ErrorRelativo = error; } return(salida); }