ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PROGRAMARIO: BISECCIÓN, REGLA FALSA, NEWTON-RAPHSON, FACTORES CUADRÁTICOS


Enviado por   •  21 de Febrero de 2020  •  Prácticas o problemas  •  3.157 Palabras (13 Páginas)  •  116 Visitas

Página 1 de 13

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

FACULTAD DE INGENIERÍA

PROGRAMARIO: BISECCIÓN, REGLA FALSA, NEWTON-RAPHSON, FACTORES CUADRÁTICOS

ANÁLISIS NUMÉRICO

Método de bisección

Obtenga la raíz positiva de la función , empleando el método de bisección. Con una tolerancia menor o igual a 0.001.

Intervalo (1,2)

a=1

b=2

→ converge

Primera iteración

Evaluando f(x₀)

Como f(x₀)<0 entonces se cambia por b

Nuevo intervalo [1,0.2525]

Evaluando f(x₁)

Como f(x₁)>0 cambia a

Nuevo intervalo

[1.2254,0.373]

Evaluando f(x₂)

=1.007

Como f(x₁)>0 cambia a

Nuevo intervalo

[1.007,0.373]

Iterando n veces

[1.41, 0]

Error absoluto 0.0001

ALGORITMO DE LA BISECCION

Cálculo de una solución aproximada de la ecuación f(x)= 0, siendo f continua en [a, b] y f(a)f(b)<0.

ENTRADA: a, b, f; N (número máximo de iteraciones)

SALIDA:Solución aproximada s

1.Tomar i =1

2. Mientras que i <= N hacer

2.1.s=(ab)/2

2.2. Si f(s) =0 entonces s= solución exacta.

2.3. Si f(a)f(s)<0 entonces b=s Si f(a)f(s)> 0 entonces a=s

2.4. i = i+1

3. Salida s: "solución aproximada"

4.FIN

Codigo

public double metodo_biseccion(funcion func,double interv_me,double interv_ma,double tolerancia,Error tipo_tolerancia){

double f_x;

n_tol=1000;

x_i = 0;

x_i1 = 0;

//verifica que haya solo una raiz en el intervalo para continuar con el metodo

if(func.f(interv_ma)*func.f(interv_me) > 0){

System.out.println("puede haber mas de una raiz, declare otro intervalo");

return -1;

}

//en caso de ser un intervalo decreciente (f(a) > 0 y f(b) < 0 ) se cambia el orden del intervalo ([b,a])

if(func.f(interv_ma) < 0 && func.f(interv_me) > 0){

f_x = interv_ma;

interv_ma = interv_me;

interv_me = f_x;

}

System.out.println("\n----Metodo de biseccion----\n=====================================");

//inicia la formula recirrente

for(int i=1; n_tol > tolerancia;i++){ //ciclo el cual temina cuando la tolerancia < a la proporcionada

x_i = x_i1;//actualizo el valor aproximado

x_i1 = (interv_ma + interv_me)/2;//calculo el nuevo valor real

f_x = func.f(x_i1);//obtengo f(x_i+1)

if (f_x < 0){ //si f(x_i+1) es menor a cero

interv_me = x_i1;//el valor de a(extremo inferior del intervalo) cambia al de x_i+1; [a,x_i+1]

}else{;//si f(x_i+1) es mayor a cero

interv_ma = x_i1;//el valor de b(extremo superior del intervalo) cambia al de x_i+1: [a,x_i+1]

}

if(i > 1){ //si estamos en una iteracion diferente

...

Descargar como (para miembros actualizados)  txt (12.7 Kb)   pdf (70.5 Kb)   docx (560.8 Kb)  
Leer 12 páginas más »
Disponible sólo en Clubensayos.com