Abrir menú principal

Cambios

Wikipedia no es un contenedor de códigos (ver WP:NO)
 
El factor 2 usado arriba, garantiza una convergencia superlineal (asintóticamente, el algoritmo ejecuta dos pasos normales por cada paso modificado). Hay otras formas que dan incluso mejores tasas de convergencia. El ajuste mencionado arriba, y otras modificaciones similares se conocen como ''Algoritmo Illinois''. Ford<ref>J.A. Ford (1995), ''[http://citeseer.ist.psu.edu/67440.html Improved Algorithms of Illinois-type for the Numerical Solution of Nonlinear Equations]'', Technical Report CSM-257, University of Essex, 1995</ref> resume y analiza las variantes superlineales del método regula falsi modificado. A juzgar por la bibliografía, estos métodos eran bien conocidos en los años 1970 pero han sido olvidados en los textos actuales.
 
==Algoritmo==
 
===MATLAB===
<source lang="matlab">
function Regula_Falsi (f)
 
a=input('Introduce el valor x de a: ');
b=input('Introduce el valor x de b: ');
n=input('Introduce n: ');
tic;
for i=1:n;
c=((a*f(b))-(b*f(a)))/((f(b))-(f(a)));
if (f(a)*f(c)<0);
b=c;
else (f(b)*f(c)<0);
a=c;
end;
a
b
c
end;
toc;
x=c;
</source>
 
===JAVA===
<source lang="java">
/**
*
* @author fredy mosquera lemus
*/
public class ReglaFlasa {
/**
* Este metodo crea un funcion a la cual se le aplicara el método de
* regla falsa teniendo como parametro de entrada un double x, el cual
* sirve para la construccion de la funcion dentro del metodo
* @param x
* @return
*/
private double funcion(double x){
return (x*x) - 3;
}
/**
* Metodo de regla falsa
* @param a
* @param b
* @param error
* @return
*/
public double metodoDeReglaFalsa(double a, double b, double error){
double fa, fb,fc;
double c = 0;
if((funcion(a) * funcion(b) > 0)){
System.out.println("Error en el intervalo inicial, para este intervalo" +
" no existen raices. ");
}else{
fa = funcion(a);
fb = funcion(b);
c = b - ((fb * (b -a ))/(fb - fa));
fc = funcion(c);
do{
if((fa * fc) > 0){
a = c;
fa = funcion(a);
fb = funcion(b);
c = b - ((fb * (b -a ))/(fb - fa));
fc = funcion(c);
}else if((fb * fc) > 0 ){
b = c;
fa = funcion(a);
fb = funcion(b);
c = b - ((fb * (b -a ))/(fb - fa));
fc = funcion(c);
 
}
}while(Math.abs(fc) > error);
}
return c;
}
 
}
</source>
===C===
<source lang="c">
/* @author Lea87 */
double regula_falsi(double a,double b,double (*f) (double),double dif)
{
/*Se ingresa los extremos 'a' y 'a' tal que 'b' es mayor que 'a'
*se ingresa la funcion a evaluar y la diferencia entre iteraciones del valor
*devuelve la aproximacion realizada*/
double c
while((dif<=(b-a))
{
c=((a*f(b))-(b*f(a)))/((f(b))-(f(a)));
if (f(a)*f(c)<0) b=c;
else a=c;
}
return c;
}
</source>
 
== Referencias ==
205

ediciones