Método de Bisección usando Matlab
jessica232Síntesis23 de Abril de 2020
431 Palabras (2 Páginas)256 Visitas
Nombre: Jessica Ibarra Morales | Matrícula: 201917949 |
Nombre del curso: Métodos numéricos | Nombre del profesor: Lic. César |
Unidad: Solución de Ecuaciones Algebraicas | Actividad: Método de Bisección usando Matlab |
Fecha: 01/04/2020 |
Evalúe la raíz de una función no lineal mediante la aplicación del método de bisección y comprueba el siguiente resultado en el intervalo [-1.2] para la función:[pic 5]
[pic 6]
La propuesta es la siguiente:
function [c,fc,err,k,P] = bisect (f,a,b,delta,itm)
Datos de Entrada
f: función de entrada
a,b: extremos del intervalo de cálculo
delta: error máximo admisible
itm: número de iteraciones máximas a calcular
Datos de Salida
c: valor estimado de la raíz de la función
fc: valor de la función en c
err: error cometido en la estimación de c
k: iteración en la que se ha alcanzado la solución
P: valores de los intervalos de cálculo en cada iteración
Algoritmo
[pic 7]
[pic 8]
[pic 9]
Editor
- function [c,fc,err,k,P] = bisect (f,a,b,delta,itm)
- P=[a,b];
- x=a;
- fa=eval(f);
- x=b;
- fb=eval(f);
- if fa*fb>0
- disp('Los signos de f(a) y f(b) tienen que sesr distintos.')
- else
- for k=1:itm
- c=(a+b)/2;
- x=c;
- fc=eval(f);
- if fc==0
- a=c;
- b=c;
- elseif fb*fc>0
- b = c;
- else
- a = c;
- end
- P=[P;a b]
- if abs (b-a) < delta
- break
- end
- x=b;
- fb=eval(f);
- end
- c = (a+b)/2;
- x=c;
- fc=eval(f);
- err = (a-b)/2;
- end
- end
Using the default configuration.
>> f='x^3+4*x^2-10' [ENTER][pic 10]
>> a=-1 [ENTER][pic 11]
>> b=2 [ENTER][pic 12]
>> delta=10^-4 [ENTER][pic 13]
>> itm=30 [ENTER][pic 14]
>> [c,fc,err,k,P] = bisect (f,a,b,delta,itm) [ENTER][pic 15]
Resultados
c =
1.3652
fc =
-1.7995e-04
err =
-4.5776e-05
k =
15
P =
-1.0000 2.0000
0.5000 2.0000
1.2500 2.0000
1.2500 1.6250
1.2500 1.4375
1.3438 1.4375
1.3438 1.3906
1.3438 1.3672
1.3555 1.3672
1.3613 1.3672
1.3643 1.3672
1.3643 1.3657
1.3650 1.3657
1.3650 1.3654
1.3652 1.3654
1.3652 1.3653
[pic 16]
...