Anderson Alarcon - Practica 6 Matlab

13
UNIVERSIDAD CATOLICA DE SANTA MARIA FACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES PROGRAMA PROFESIONAL INGENIERIA MECÁNICA, MECÁNICA-ELECTRÍCA Y MECATRÓNICA Página:1/13 Jefes de Prácticas: Ing. Juan Carlos Cuadros Ing. Henry Zegarra Gago Ing. Sergio Mestas Ramos Laboratorio de Mecánica Computacional II Tema: Métodos Numéricos – Método de la Bisección Código: 4E04022 Semestr e: IV Grupo: FECHA: Apellidos y Nombres (1):_____________________________________________ Apellidos y Nombres (2):_____________________________________________ Lab. Nº: 06 I. OBJETIVOS Aplicar los métodos iterativos de intervalo, específicamente el método de la bisección en la solución de ecuaciones no lineales algebraicas y trascendentes. Implementar programas en MATLAB que solucionen las raíces de ecuaciones algebraicas y trascendentes por medio del método de la bisección. II. MARCO TEORICO 2.1 Introducción En estapráctica, estudiaremos uno de los métodos para la solución numérica de ecuaciones algébricas y trascendentes no lineales, esto es, ecuaciones que se puedan escribir en la forma f(x) = 0, donde f es una función real de variable real.Todos los valores s que anulan f, esto es, tales que f(s) = 0, se llaman ceros o raíces de la función f o solución de la ecuación f(x)=0. Figura 1 Ceros de una función- Diferentes casos Para una ecuación del tipo f(x) = 0, antes de intentar aplicar cualquier método de resolución, es importante garantizar que la ecuación tenga solución, o sea, que existe un real; s tal que f(s)=0. Muchas veces importa también determinar si la solución es única, o si existen diferentes soluciones y, en este caso, saber cual o cuales importan determinar. 2.2 Teorema de Bolzano

description

AKSDJV KSDNASD ASDA MATLAB DE 5 DMECANICA ASKDVLD ÑSDS

Transcript of Anderson Alarcon - Practica 6 Matlab

Page 1: Anderson Alarcon - Practica 6 Matlab

UNIVERSIDAD CATOLICA DE SANTA MARIAFACULTAD DE CIENCIAS E INGENIERÍAS FISICAS Y FORMALES

PROGRAMA PROFESIONALINGENIERIA MECÁNICA, MECÁNICA-ELECTRÍCA Y MECATRÓNICA

Página:1/10

Jefes de Prácticas:Ing. Juan Carlos CuadrosIng. Henry Zegarra Gago

Ing. Sergio Mestas RamosLaboratorio de Mecánica Computacional II

Tema: Métodos Numéricos – Método de la BisecciónCódigo: 4E04022Semestre: IVGrupo: FECHA:

Apellidos y Nombres (1):_____________________________________________Apellidos y Nombres (2):_____________________________________________

Lab. Nº: 06

I. OBJETIVOS Aplicar los métodos iterativos de intervalo, específicamente el método de la bisección en la solución de ecuaciones no

lineales algebraicas y trascendentes. Implementar programas en MATLAB que solucionen las raíces de ecuaciones algebraicas y trascendentes por medio del

método de la bisección.

II. MARCO TEORICO2.1 Introducción

En estapráctica, estudiaremos uno de los métodos para la solución numérica de ecuaciones algébricas y trascendentes no lineales, esto es, ecuaciones que se puedan escribir en la forma f(x) = 0, donde f es una función real de variable real.Todos los valores s que anulan f, esto es, tales que f(s) = 0, se llaman ceros o raíces de la función f o solución de la ecuación f(x)=0.

Figura 1 Ceros de una función- Diferentes casos

Para una ecuación del tipo f(x) = 0, antes de intentar aplicar cualquier método de resolución, es importante garantizar que la ecuación tenga solución, o sea, que existe un real; s tal que f(s)=0. Muchas veces importa también determinar si la solución es única, o si existen diferentes soluciones y, en este caso, saber cual o cuales importan determinar.

2.2 Teorema de BolzanoDado un intervalo cerrado [a,b] y una función continua f(x), existe al menos una solución a la ecuación algebraica no

lineal o trascendente f(x)=0 si f(a)*f(b)¿ 0

Figura 2Aplicación del Teorema de Bolzano

Page 2: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 2/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

El teorema de Bolzano garantiza la existencia de una raíz si existe un cambio de signo en el intervalo [a,b], pero la antítesis es falsa, sino existe un cambio de signo, también puede existir una raíz en [a,b].Los métodos numéricos que están basados en el teorema de Bolzano se denominan “métodos cerrados”, ya que exigen como argumento un intervalo cerrado donde la función experimente un cambio de signo.

2.3. Método de las Bisecciones Sucesivas

En la resolución de ecuaciones no lineales se utilizan, salvo soluciones analíticas simples, métodos iterativos que generan una sucesión de valores que tienden al valor de la raíz. Este método presenta la ventaja de acotar no sólo el valor de la función, sino también el intervalo al que pertenece la raíz. Para su aplicación es necesario que verifique las condiciones del Teorema de Bolzano, esto es, la función debe ser continua y cambiar de signo en sus extremos.Por ejemplo:Resolver en los números reales las ecuaciones:

x3−1=0 , sen ( x )−x=0 ó tan (x )−x=0 (*)

Las gráficas siguientes ilustran mejor la situación. Indican que un problema con enunciado tan simple puede ser difícil de resolver:

Figura 3 Gráficas de las ecuaciones (*)

La primera gráfica sugiere que hay un único cero, precisamente donde ese cero está y las otras dos indican que hay alguno en cada caso, pero nada más. En realidad, sen(x) y x se encuentran en un único punto, x = 0; pero en cambio tan(x) y x se encuentran en un número infinito de puntos. Ciertamente se requiere disponer de herramientas teóricas (teoremas) y prácticas (algoritmos) para resolver problemas de esta clase.

El método de las bisecciones sucesivas parte del intervalo inicial [a, b] que se sabe contiene un cero de f, supuestamente único. En cada iteración se produce la reducción del intervalo a la mitad del intervalo actual. Para lo cual, se divide el intervalo actual escogiéndose el intervalo izquierdo o derecho de forma que la función tenga signo diferente en los extremos del sub-intervalo escogido. O sea,

siendo [an, bn] el intervalo de la iteración n, se calculaxn+1=12(an+bn). El valor

xn+1 sustituye a an o bn de acuerdo si se cumple que f ¿ o f ¿. De esta forma, se asegura que s [an,bn] en cualquier iteración.

2.5. Algoritmo de Bisección Figura 4 Bisecciones Sucesivas

Page 3: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 3/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

Método de las bisecciones sucesivasInicialización [a0 , b0 ]=[a ,b ]Repetir

1. xn+1=

an+bn2

2. Si f ( xn+1 ) f (an)<0

Entonces an+1=an ; bn+1=xn+1 ;

Sino an+1=xn+1 ; bn+1=bn ;Hasta que Verificar criterio de parada

2.5. Error del Algoritmo de Bisección

Figura 5 Error del Método de la Bisección

Teorema 1: Sea f una función continua en el intervalo [a,b]tal quef (a ) f (b )<0. El método de la bisección genera una sucesión {pn}que converge a p con la propiedad:

|p−pn|≤b−a2n

n≥1

Demostración: Para cada n≥1, tenemos:

bn−an=12n−1

(b−a) y p∈(an , bn)

Puesto que pn=(an+bn)/2, para cada n≥1, se tiene:

|p−pn|≤12 (bn−an )=b−a

2n

y esta desigualdad implica que limn→∞

pn=p

Si llamamos δ al valor absoluto del error, donde δ=|p−pn|, se puede entonces afirmar que el error absoluto del

estimado pn está acotado por:

Page 4: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 4/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

b−a2n

El número de iteraciones suficientes para garantizar un error absoluto no superior a se puede calcular haciendo b−a2n

≤δ obteniéndose el valor: n≥ log2( b−aδ )Otra sugerencia sería finalizar el cálculo cuando el error verdadero se encuentra por debajo de algún nivel prefijado.

Por lo tanto se requiere estimar el error de forma tal que no se necesite el conocimiento previo de la raíz de la ecuación. Se puede calcular el error relativo porcentual ε ade la siguiente manera:

ε a=|xrnuevo−xranteriorxrnuevo |100%

donde xrnuevo es la raíz en la iteración actual y xr

anteriores el valor de la raíz en la iteración anterior. Se utiliza el valor

absoluto, ya que solo importa la magnitud del error. Cuando ε a es menor que un valor previamente fijado ε s, termina el cálculo.

El siguiente ejemplo ilustra la aplicación de este método.

Ejemplo 1:

Determinar una aproximación con un error absoluto inferior a 7x10-2 de la (única) solución de la ecuación 1+x+ex=0 que se sabe esta en el intervalo [-2, -1].

Solución

Paso 1: Verificación de las condiciones de convergenciaLa función f(x)=1+x+ex es monótona, f(-2)=-1+e-2<0, y f(-1)= e-1>0.

Paso 2: Determinación del número de iteracionesComo se desea alcanzar una precisión de 7x10-2se debe escoger n tal que:

n≥log2−1−(−2 )7 x10−2 ⇒n>3.8365

Efectuando 4 iteraciones a partir de [-2, -1] se tiene un error máximo absoluto de:124

≈6 x10−2

Iteraciones:

n an f(an) bn f(bn) xn+1 f(xn+1)1

2

3

-2.000 -0.865 -1.000 0.3679 -1.500 -0.2769

Page 5: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 5/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

4

Podemos realizar una comprobación gráfica de la solución del problema, entonces, graficamos la función 1+x+ex=0 y vemos donde tiene un cruce por el eje x.

Figura 6Grafico de la Ec: f(x)=1+x+ex

La solución de la ecuación será x = , o sea, x [,]

III. MATERIAL Y EQUIPO Una PC con Sistema Operativo (S.O.) Windows XP. MATLAB 7.0 o superior

IV. PROCEDIMIENTO1. Localice gráficamente las raíces de f(x) = 0 , siendo f(x) = |x| - e x . clear all; clc; disp('METODO DE LA BISECCION'); fprintf( '\n'); f=input('Ingrese la funcion; ','s'); f=inline(f); ezplot(f) a=input('Limite inferior a= '); b=input('Limite Superior b= '); e=input('Error absoluto e= '); fprintf('\n'); fprintf('%.8s %.8s %.8s %.8s %.8s %.8s %.8s \n','A','F(a)','B','F(b)','Xn','F(xn)');y=f(a)*f(b); %Teorema de Bolszanoif y<0 n=log2( (b-a)/e); n=ceil(n); for i=1:n xn=(a+b)/2; z=f(a)*f(xn); fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,f(a),b,f(b),xn,f(xn)); if z<0 b=xn; else a=xn; end end fprintf('\n');

Page 6: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 6/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

fprintf('\n'); fprintf('La solucion es x=%.4f,F(x)=%.4f \n',xn,f(xn));else disp('La funcion no tiene solucion en ese intervalo'); fprintf('\n');end

2. Usando el método de la bisección sucesivas, determine un valor aproximado para los ceros de f(x) = |x| - e x con un error que no exceda a 0.15.

Page 7: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 7/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

3. Confeccionar en MATLAB un programa que: 3.1. Calcule la raíz de una ecuación algebraica no lineal o ecuación trascendente. 3.2. Adjunte su algoritmo y diagrama de flujo

Ingresamos la funciónCalculamos la funciónIngresamos “ezplot f” para graficar la funciónAhora establecemos los limites

Determinamos la raíz, por medio del grafico ya halladoY por último mostramos los valores deseados

clear all;clc;disp('METODO DE LA BISECCION');fprintf( '\n');f=input('Ingrese la funcion; ','s');f=inline(f);ezplot(f)a=input('Limite inferior a= ');b=input('Limite Superior b= ');e=input('Error absoluto e= ');fprintf('\n');

fprintf('%.8s %.8s %.8s %.8s %.8s %.8s %.8s \n','A','F(a)','B','F(b)','Xn','F(xn)');y=f(a)*f(b); %Teorema de Bolszanoif y<0 n=log2( (b-a)/e); n=ceil(n); for i=1:n xn=(a+b)/2; z=f(a)*f(xn); fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,f(a),b,f(b),xn,f(xn));

if z<0 b=xn; else a=xn; end end fprintf('\n'); fprintf('\n'); fprintf('La solucion es x=%.4f,F(x)=%.4f \n',xn,f(xn));else disp('La funcion no tiene solucion en ese intervalo'); fprintf('\n');end

Page 8: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 8/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

V. CUESTIONARIO FINAL

1. Use cuatro iteraciones del método del la Bisección para determinar las raíces de e2 x−6 x=0

en el intervalo [0, 0.5]. ¿Cuántas iteraciones son necesarias para obtener la aproximación a la raiz redondeada a 5 cifras decimales?

CODIGO MATLABclear all;clc;disp('METODO DE LA BISECCION');fprintf( '\n');

f=input('Ingrese la funcion; ','s');f=inline(f);ezplot(f)a=input('Limite inferior a= ');b=input('Limite Superior b= ');fprintf('\n');

fprintf('%.8s %.8s %.8s %.8s %.8s %.8s %.8s \n','A','F(a)','B','F(b)','Xn','F(xn)');y=f(a)*f(b); %Teorema de Bolszanoif y<0 n=4; for i=1:n xn=(a+b)/2; z=f(a)*f(xn); fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f \n',a,f(a),b,f(b),xn,f(xn));

if z<0 b=xn; else a=xn; end end fprintf('\n'); fprintf('\n'); fprintf('La solucion es x=%.4f,F(x)=%.4f \n',xn,f(xn));else disp('La funcion no tiene solucion en ese intervalo'); fprintf('\n');

Page 9: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 9/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

end

2. Hacer una prueba de datos del programa realizado en el procedimiento con los datos de la pregunta anterior.

¿Cuántas iteraciones son necesarias para obtener la aproximación a la raiz redondeada a 5 cifras decimales?

Page 10: Anderson Alarcon - Practica 6 Matlab

Laboratorio de Mecánica Computacional II Página: 10/10

Tema: Métodos Numéricos – Método de la Bisección LAB N° 6 JCC- HZG - SMR

VI. OBSERVACIONES Y CONCLUSIONES

Haga sus observaciones y emita al menos cinco conclusiones en torno al trabajo realizado

Aplicamos uno de los métodos más sencillos y de fácil intuición para resolver ecuaciones en una

variable o de más.

El método de bisección basa en el teorema del valor intermedio.

El método de bisección es menos eficiente que el método de Newton, pero es mucho más seguro para

garantizar la convergencia.