Está en la página 1de 8

Instituto Tecnol ogico de L azaro C ardenas Ingenier a Electr onica Programa en MATLAB

Asignatura: An alisis Num erico


Docente: M.C. Julio C esar Gallo Sanchez

Alumno: Jos e Armando Lara Ramos

4o Semestre

Febrero 8 de 2012

Jos e Armando Lara Ramos

A continuaci on se presenta un programa en Matlab el cual resuelve polinomios mediante el m etodo de Newton Raphson.

1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

C odigo del script newtonraphson.m

% Calcula la ra z de una funci on por el m etodo newton-raphson clear disp(Ingresa una funci on derivable dependiente de "x",) f = input(la cual dese e analizar. f(x)= ,s); r = input(ahora ingresa la suposici on inicial de la ra z: ); df = diff(f,sym(x)); alto = 0; while alto == 0 disp(Selecciona 1 para seleccionar el criterio de error relativo) disp(entre aproximaciones o 2 para seleccionar por n umero) s = input(de iteraciones: ); switch s case 1 epsilon = input(Ingresa m aximo error relativo: ); alto = 1; case 2 maxit = input(Ingresa m aximo n umero de iteraciones: ); alto = 1; otherwise disp(Opci on no v alida, por favor selecciona 1 o 2) end end it = 1; alto = 0; while alto == 0 evf = subs(f,r); evdf = subs(df,r); if evdf == 0 disp(Derivada evaluada igual a cero en alguna iteraci on) return end r1 = r - (evf/evdf); err = abs((r1-r)/(r1)); if s == 1 if epsilon >= err alto = 1; end end if s == 2 if maxit <= it

Jos e Armando Lara Ramos


alto = 1; end end disp([---Iteraci on n umero num2str(it) ---]) disp([La aproximaci on es: num2str(r1)]) disp([El error relativo es: num2str(err)]) r = r1; it = it + 1; end

41 42 43 44 45 46 47 48 49

Jos e Armando Lara Ramos

2.

Explicaci on de la l ogica del script newtonraphson.m

El n umero de l nea en el c odigo del script corresponde al n umero en cada paso de la explicaci on. 1. Comentarios sobre la funci on del programa. 2. Se limpian los valores de todas las variables. 3. Se despliega un mensaje solicitando que ingrese una funci on. 4. La funci on se guarda en la variable f. 5. Se solicita el punto inicial y se guarda en la variable r. 6. Se calcula la derivada de funci on con respecto de x. 7. Se inicializa en cero una variable alto la cual servir a como bandera para detener ciclos while. 8. Comienza le ciclo de iteraci on while el cual se encarga de solicitar al usuario un criterio para detener las iteraciones. 9. Se despliega la opci on del criterio por error relativo entre iteraciones 10. Se despliega la opci on del criterio por n umero de iteraci ones 11. La opci on elegida se guarda en la variable s. 12. Comienza el bloque switch el cual para cada opci on de criterio tiene un c odigo. 13. Si el usuario eligi o el criterio de error relativo se ejecutan las siguientes dos l neas. 14. Se solicita al usuario el error m aximo relativo y se guarda en la variable epsilon. 15. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para detener las iteraciones. 16. Si el usuario eligi o el criterio por n umero de iteraciones se ejecutan las siguientes dos l neas. 17. Se solicita al usuario el n umero de iteraciones m aximo y se guarda en la variable maxit. 18. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para detener las iteraciones.

Jos e Armando Lara Ramos

19. Si no se seleccion o ninguna de las opciones v alidas, se ejecuta la siguiente l nea. 20. Se despliega el mensaje diciendo que no se seleccion o ninguna opci on v alida y por lo tanto necesita seleccionar otra vez. 21. Se termina el bloque switch. 22. Se termina el bloque while que solicita el criterio de detenimiento de iteraciones. 23. Se inicializa la variable it en uno ya que esta guardar a el n umero de iteraciones y comenzaremos en la primera iteraci on. 24. Se iguala a cero la variable alto para ser reutilizada. 25. Se inicia el ciclo while que contiene el c odigo del m etodo de Newton Raphson y el despliegue de resultados. 26. Se evalua la funci on en r y se guarda en evf. 27. Se evalua la derivada de la funci on en r y se guarda en evdf. 28. Inicia bloque if el cual se ejecutar a si la evaluaci on en la diferecial es cero. 29. Se despliega la situaci on. Esto se hace as ya que posteriormente este valor tomar a la posici on de denominador, lo que nos impide que sea cero. 30. El programa termina en caso de que lo anterior suceda. 31. Termina el bloque if de la evaluaci on de la derivada igual a cero. 32. Se calcula la aproximaci on que sigue con la f ormula conocida del m etodo Newton Raphson evf r1 = r evdf 33. Se calcula el error relativo entre dos iteraciones, la actual y la pasada, y se guarda en la variable err. 34. Si el criterio para detener las iteraciones fu e por error relativo, este bloque if se ejecutar a. 35. Se compara si el error relativo actual (err) ya es menor que el requerido (epsilon). 36. Si la l nea anterior es cierta entonces se ejecuta esta en la cual la bandera alto se pone en uno, lo que ya no permitir a m as iteraciones. 37. Termina el bloque if en el que se comparan los errores. 38. Termina el bloque if el cual se ejecuta cuando el criterio es el error relativo.

Jos e Armando Lara Ramos

39. Si el criterio para detener las iteraciones fu e por n umero de iteraciones, este bloque if se ejecutar a. 40. Se compara si el n umero de iteraciones actual (it) es igual o mayor que las requeridas (maxit). 41. Si la l nea anterior es cierta entonces se ejecuta esta en la cual la bandera alto se pone en uno, lo que ya no permitir a m as iteraciones. 42. Termina el bloque if en el que se comparan el n umero de iteraciones. 43. Termina el bloque if el cual se ejecuta cuando el criterio es por n umero de iteraciones. 44. Se despliega el n umero de la iteraci on. 45. Se despliega el valor de la aproximaci on actual. 46. Se despliega el error relativo entre la aproximaci on actual y la anterior. 47. El valor de la aproximaci on acual r1 se guarda ahora como punto inicial para la siguiente iteraci on. 48. La variable que indica las iteraciones se aumenta en uno. 49. Termina el programa al t ermino del ciclo while.

Jos e Armando Lara Ramos

3.

Ejecuci on del Programa

Como ejemplo de la ejecuci on del programa en la ventana de comandos se realizar an los c alculos para encontrar las ra ces de la ecuaci on f (x) = 0,874x2 + 1,75x + 2,627 (1)

las cuales ser an dos a lo m as. Primeramente gracamos la funci on para calcular por el m etodo gr aco un rango aproximado en el cual se encuentran la o las ra ces. En la Figura 1 se muestra la gr aca.

Figura 1: Gr aca de y = 0,874x2 + 1,75x + 2,627. Se puede observar como la primera ra z queda entre x1 = 2 y xu = 0, y una segunda ra z entre x1 = 2 y xu = 4. Aplicando el m etodo Newton Raphson con x0 = 0 esperando encontrar una ra z con un error relativo entre aproximaciones 1 %, a continuaci on se enumeran las iteraciones.

Jos e Armando Lara Ramos

A continuaci on se muestra el ingreso de la funci on, el punto inicial y el criterio para parar de iterar en el programa. Posteriormente se despliegan los resultados.

Figura 2: Ejecuci on del programa.

Referencias
[1] An Introduction to Numerical Analysis for Electrical and Computer Engineers, Chistopher J. Zarowski, Editorial Wiley, ISBN 0-471-46737-5. [2] http://www.mathworks.com/help (Sitio de ayuda ocial de Matlab) [3] Numerical Methods for Mathematics, Science and Engineering, 2nd Ed, 1992

También podría gustarte