Ejemplo Práctica 6

16
Introducción: El presente trabajo consiste en la aplicación de los métodos de bisección y Newton- Raphson, para calcular las raíces de funciones de polinomios, programando dichos métodos en matlab, eliminando así cálculos repetitivos, con lo que se disminuye el tiempo, ya que será la computadora la encargada de realizar los cálculos. Objetivo: Familiarizar al alumno con la aplicación de matlab en la determinación de raíces de funciones y polinomios mediante los métodos de bisección y Newton-Raphson. Fundamentos: Bisección. Al aplicar las técnicas graficas se observa que f(x) cambia de signo a ambos lados de la raíz. En general si f(x) es real y continua en el intervalo que va desde xl hasta xu y f(xl) y f(xu) tienen signos opuestos, es decir, Entonces hay al menos una raíz entre xl y xu. Paso 1. Elija valores iniciales inferior, xl y superior, xu que encierren la raiz, da forma que la funcion cambie de signo en el intervalo. Esto se verifica comprobando que: Paso 2. Una aproximacion de la raiz x, se determina mediante. Paso 3. Realice las siguientes evaluaciones para determinar en que subintervalo esta la raíz.

description

matlab

Transcript of Ejemplo Práctica 6

Page 1: Ejemplo Práctica 6

Introducción: El presente trabajo consiste en la aplicación de los métodos de bisección y Newton-Raphson, para calcular las raíces de funciones de polinomios, programando dichos métodos en matlab, eliminando así cálculos repetitivos, con lo que se disminuye el tiempo, ya que será la computadora la encargada de realizar los cálculos. Objetivo: Familiarizar al alumno con la aplicación de matlab en la determinación de raíces de funciones y polinomios mediante los métodos de bisección y Newton-Raphson. Fundamentos: Bisección. Al aplicar las técnicas graficas se observa que f(x) cambia de signo a ambos lados de la raíz.

En general si f(x) es real y continua en el intervalo que va desde xl hasta xu y f(xl) y f(xu) tienen signos opuestos, es decir,

Entonces hay al menos una raíz entre xl y xu. Paso 1. Elija valores iniciales inferior, xl y superior, xu que encierren la raiz, da forma que la funcion cambie de signo en el intervalo. Esto se verifica comprobando que:

Paso 2. Una aproximacion de la raiz x, se determina mediante.

Paso 3. Realice las siguientes evaluaciones para determinar en que subintervalo esta la raíz.

Page 2: Ejemplo Práctica 6

a) Si f(xl)f(xr)<0, entonces la raíz se encuentra dentro del subintervalo inferior o izquierdo. Por lo tanto, haga xu=xr y vuelva al paso 2.

b) Si f(xl)f(xr)>0, entonces la raíz se encuentra dentro del subintervalo superior o derecho, por lo tanto haga xl=xr y vuelva al paso 2.

c) Si f(xl)f(xr)=0 la raíz es igual a xrl termina el cálculo. Newton-Raphson Si el valor inicial para la raíz es xi se puede trazar una tangente desde el punto (xi,f(xi)) de la curva. Por lo común, el punto donde esta tangente cruza al eje representa una aproximación mejorada de la raíz.

La formula de Newton-Raphson es:

Page 3: Ejemplo Práctica 6

Método de Bisección. Requerimientos: Se requiere crear un programa con el que sea posible calcular las raíces de una función aplicando el método de Bisección. Para ello se deberán introducir la función, el límite inferior, el límite superior y la tolerancia de error. Algoritmo:

1. Pedir al usuario la función. 2. Pedir al usuario el límite inferior del intervalo. 3. Pedir al usuario el límite superior del intervalo. 4. Pedir al usuario el porcentaje de error. 5. Calcular el producto del límite inferior por el superior y verificar que el producto

sea menor que cero. 6. Calcular la primera aproximación de la raíz. 7. Determinar en que subintervalo se encuentra la raíz. 8. Si f(xl)f(xr)<0, hacer xu=xr y volver al paso 6. 9. Si f(xl)f(xr)>0, hacer xl=xr y volver al paso 2. 10. Si f(xl)f(xr)=0 la raíz es igual a xrl 11. Imprimir el resultado 12. Fin

Page 4: Ejemplo Práctica 6

Diagrama de flujo.

No Si No Si Si No

Inicio

f, xai, xbi, tol, i

i= i +1 ea=100

f(xai).f(xbi<0

xa(1)= xai xb(1)=xbi

xr(1)=(xa(1) + xb(1))/2

xa, xr, xb, ea

ea(i)>=tol

fxa(i).fxr(i)<0

xa(i+1)=xa(i) xb(i+1)=xr(i)

f(xa(i)).f(xr(i))>0

1

Fin

‘No existe una raíz en ese intervalo’

2

Page 5: Ejemplo Práctica 6

Método de Newton-Rapshon Requerimientos: Se requiere crear un programa que permita calcular la raíz de una función, para ello se proporcionara la función, la derivada de la función, un valor inicial y el porcentaje de error máximo. Algoritmo:

1. Pedir al usuario la función. 2. Pedir al usuario la derivada de la función. 3. Pedir al usuario el valor inicial de x 4. Pedir al usuario el error limite. 5. Preguntar si el error aproximado es mayor que el error limite. 6. Calcular la raíz mejorada. 7. Calcular el error aproximado. 8. Imprimir el resultado. 9. Ir a paso 5, si el error aproximado es mayor continuar con los demás pasos, si no

terminar de calcular. 10. Fin

xa(i+1)=xr(i) xb(i+1)=xb(i)

1

xr(i+1)=(xa(i+1)+xb(i+1))/2 ea(i+1) = (( xr(i+1)-xr(i+1)/(xr(i+1))*100

i+1, xa(i+1), xr

(i+1),ea(i+1)

i=i+ 1

2

Page 6: Ejemplo Práctica 6

Diagrama de flujo. No Si

Inicio

a, xi, Es

xd= derivada de a Ea=100

i=1

fxi= valor de a(xi) fdxi=valor de xd(xi)

i,xi,fxi,fdxi,Ea

xi=xi1 i=i+1

Ea>Es Fin

fxi= valor de a(xi) fdxi=valor de xd(xi) xi1= xi – (fxi/fdxi)

Ea=((xi1-xi)/xi1).100

i,xi,fxi,fdxi,Ea

xi=xi1 i=i+1

Page 7: Ejemplo Práctica 6

Desarrollo de la práctica. La practica consistió en la elaboración de dos programas, en el primero de ellos aplicamos el método de bisección y en el segundo el método de Newton-Raphson. Bisección Primero abrimos un nuevo fichero M-File

Y tecleamos el siguiente código en el editor.

Page 8: Ejemplo Práctica 6

Para ejecutar el método de bisección, lo único que se tiene que hacer es teclear la palabra bisección en la ventana de comandos de matlab. Al dar enter el programa nos pedirá la función que deseamos evaluar, el limite superior e inferior del intervalo y el porcentaje de tolerancia del error al calcular la raíz. Ejemplos. a) Utilice el método grafico para determinar el coeficiente de arrastre e necesario para que un paracaidista de masa m= 68.1 kg tenga una velocidad de 40 m/s después de una caida libre de t=10s. Nota la aceleración de la gravedad es 9.8 m/s. Solución: Este problema se resuelve determinando la raíz de la siguiente ecuación, usando los parámetros t= 10, g =9.8, v=40 y m=68.1

Para insertar la función en la ventana de comandos de matlab es recomendable que se sustituyan los valores conocidos en la función. De este modo tendremos como única incógnita a C. Solución en ventana de comandos.

b) Determine las raíces reales de f(x)= -0.4x2 + 2.2x + 4.7 emplee como valores iniciales xl=5 y xu=10. Para calcular la raíz de la función se deben ingresar en la ventana de comandos la función, el límite superior e inferior del intervalo y el porcentaje de error.

Page 9: Ejemplo Práctica 6

Solución en la ventana de comandos.

Grafica de la solución. Para graficar la función se debe escribir en la ventana de comandos x= [-10:0.1:10] En la posición del -10 se indica el límite a partir del cual se mostrara la grafica, el 0.1 indica de cuanto en cuanto se evaluara la función y el 10 el límite hasta donde se graficara la función. Dependiendo de las condiciones en que se desea graficar la función serán los valores que debemos colocar. Se le asigna a la variable y la función, pero debemos recordar antes de cada multiplicación o exponenciación poner un punto. Posteriormente con la función plot se grafica la función.

Page 10: Ejemplo Práctica 6

C) Determine las raíces reales de f(x)= -2 + 7x -5x2 + 6x3. Emplee como valores iniciales xl=0 y xu=1 iterando hasta que el error estimado Ea se encuentre debajo de Es=10%

Solución en ventana de comandos.

Page 11: Ejemplo Práctica 6

Grafica de la función. Se observa que cuando x=0.3 y es aproximadamente igual a 0 con un valor de -0.188

Newton-Raphson La segunda parte de la practica consistió en crear un programa que evalué una función aplicando el método de Newton-Raphson. El código con el que se realizaron los ejemplos pedía que el usuario insertara la derivada de la función, pero posteriormente utilice la función syms x la cual permite que el programa calcule la derivada, sin necesidad de que el usuario la proporcione. Quedando la modificación de la siguiente forma:

Page 12: Ejemplo Práctica 6

d) Determinar la raiz de f(x)= -0.9x2 + 1.7x +2.5 usando xo=5. Efectué el cálculo hasta que Ea sea menor que Es=0.01%

Solución en la ventana de comandos.

Para graficar se introducen las siguientes ecuaciones:

Grafica de la función: Se observa en la grafica que cuando x = 2.9 el valor de y se aproxima a cero.

Page 13: Ejemplo Práctica 6

e) Determinar la raíz de f(x)= -2 + 6x -4x2 + 0.5x3, usando valores iniciales de 4.2 y 4.43.

Valor inicial de 4.2 Solución en la ventana de comandos.

Grafica de la funcion. Se observa que cuando x=0.5 el valor de y es aproximadamente igual a cero.

Page 14: Ejemplo Práctica 6

Valor inicial de 4.43 Solución en la ventana de comandos.

Grafica de la funcion. Se observa que cuando x= 0.5 el valor de y se aproxima a 0.

Page 15: Ejemplo Práctica 6

En este ejemplo me doy cuenta que al modificar el valor inicial de x, el numero de iteraciones que se tienen que hacer para encontrar la raíz de la función cambia mucho, ya que en el primer ejemplo se realizaron 9 iteraciones y en el segundo 25. Por eso es importante que antes de dar el valor de inicio hagamos la grafica de la función con tabulación, para tener una idea aproximada de donde se puede encontrar la raíz. Conclusión. El método de bisección nos permite calcular la raíz de una función, a partir del límite superior e inferior. Para saber si dentro del intervalo que estamos proporcionando se encuentra una raíz, es necesario que el producto de los limites sea menor que cero, es decir, sea un numero negativo; ya que esto indica que hay un cambio de signo y la función pasa por cero. El código del método de bisección en matlab es muy similar a los pasos que seguimos al hacer el análisis matemático por nosotros mismos. Únicamente debemos transformar esos cálculos al lenguaje de matlab. El método de Newton-Raphson me parece más sencillo que el de bisección, en este se nos pide un valor inicial de x y la derivada de la función. Para ambos métodos se definió un valor máximo de error, de este valor depende el número de iteraciones que el programa ejecutara. Cuando el error aproximado sea menor que el error de tolerancia el bucle de repetición while dejara de ejecutarse y el programa llegara a su fin. Matlab reduce el tiempo al hacer los cálculos. En un principio puede parecernos un poco complicado crear programas para diferentes aplicaciones, pero eso se debe a que no conocemos todas las funciones internas de matlab, afortunadamente existe la opción matlab help en la que podemos encontrar la sintaxis de esas funciones, para adquirir nuevas habilidades en el uso de matlab

Page 16: Ejemplo Práctica 6