Está en la página 1de 8

Instituto Tecnologico de Lazaro Cardenas

Ingeniera Electronica
Programa en MATLAB
Asignatura: An alisis Numerico
Docente: M.C. Julio Cesar Gallo Sanchez
Alumno: Jose Armando Lara Ramos
4
o
Semestre
Febrero 8 de 2012
Jose Armando Lara Ramos 2
A continuacion se presenta un programa en Matlab el cual resuelve polinomios
mediante el metodo de Newton Raphson.
1. Codigo del script newtonraphson.m
1 % Calcula la raz de una funcion por el metodo newton-raphson
2 clear
3 disp(Ingresa una funcion derivable dependiente de "x",)
4 f = input(la cual desee analizar. f(x)= ,s);
5 r = input(ahora ingresa la suposicion inicial de la raz: );
6 df = diff(f,sym(x));
7 alto = 0;
8 while alto == 0
9 disp(Selecciona 1 para seleccionar el criterio de error relativo)
10 disp(entre aproximaciones o 2 para seleccionar por numero)
11 s = input(de iteraciones: );
12 switch s
13 case 1
14 epsilon = input(Ingresa maximo error relativo: );
15 alto = 1;
16 case 2
17 maxit = input(Ingresa maximo numero de iteraciones: );
18 alto = 1;
19 otherwise
20 disp(Opcion no valida, por favor selecciona 1 o 2)
21 end
22 end
23 it = 1;
24 alto = 0;
25 while alto == 0
26 evf = subs(f,r);
27 evdf = subs(df,r);
28 if evdf == 0
29 disp(Derivada evaluada igual a cero en alguna iteracion)
30 return
31 end
32 r1 = r - (evf/evdf);
33 err = abs((r1-r)/(r1));
34 if s == 1
35 if epsilon >= err
36 alto = 1;
37 end
38 end
39 if s == 2
40 if maxit <= it
Jose Armando Lara Ramos 3
41 alto = 1;
42 end
43 end
44 disp([---Iteracion numero num2str(it) ---])
45 disp([La aproximacion es: num2str(r1)])
46 disp([El error relativo es: num2str(err)])
47 r = r1;
48 it = it + 1;
49 end
Jose Armando Lara Ramos 4
2. Explicaci on de la l ogica del script newtonraph-
son.m
El n umero de lnea en el c odigo del script corresponde al n umero en cada paso de
la explicacion.
1. Comentarios sobre la funcion del programa.
2. Se limpian los valores de todas las variables.
3. Se despliega un mensaje solicitando que ingrese una funcion.
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 iteracion 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 iteraciones
11. La opci on elegida se guarda en la variable s.
12. Comienza el bloque switch el cual para cada opcion de criterio tiene un codigo.
13. Si el usuario eligi o el criterio de error relativo se ejecutan las siguientes dos
lneas.
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 lneas.
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.
Jose Armando Lara Ramos 5
19. Si no se seleccion o ninguna de las opciones v alidas, se ejecuta la siguiente lnea.
20. Se despliega el mensaje diciendo que no se selecciono ninguna opcion 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 iteracion.
24. Se iguala a cero la variable alto para ser reutilizada.
25. Se inicia el ciclo while que contiene el codigo del metodo 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 funcion 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 situacion. Esto se hace as ya que posteriormente este valor
tomar a la posicion 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 aproximacion que sigue con la f ormula conocida del metodo Newton
Raphson
r1 = r
evf
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 fue 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 lnea anterior es cierta entonces se ejecuta esta en la cual la bandera alto
se pone en uno, lo que ya no permitir a mas 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.
Jose Armando Lara Ramos 6
39. Si el criterio para detener las iteraciones fue por n umero de iteraciones, este
bloque if se ejecutara.
40. Se compara si el n umero de iteraciones actual (it) es igual o mayor que las
requeridas (maxit).
41. Si la lnea anterior es cierta entonces se ejecuta esta en la cual la bandera alto
se pone en uno, lo que ya no permitir a mas 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 iteracion.
48. La variable que indica las iteraciones se aumenta en uno.
49. Termina el programa al termino del ciclo while.
Jose Armando Lara Ramos 7
3. Ejecucion del Programa
Como ejemplo de la ejecuci on del programa en la ventana de comandos se reali-
zar an los c alculos para encontrar las races de la ecuaci on
f(x) = 0,874x
2
+ 1,75x + 2,627 (1)
las cuales ser an dos a lo m as. Primeramente gracamos la funci on para calcular por
el metodo graco un rango aproximado en el cual se encuentran la o las races. En la
Figura 1 se muestra la graca.
Figura 1: Gr aca de y = 0,874x
2
+ 1,75x + 2,627.
Se puede observar como la primera raz queda entre x
1
= 2 y x
u
= 0, y una
segunda raz entre x
1
= 2 y x
u
= 4.
Aplicando el metodo Newton Raphson con x
0
= 0 esperando encontrar una raz
con un error relativo entre aproximaciones 1 %, a continuaci on se enumeran las
iteraciones.
Jose Armando Lara Ramos 8
A continuaci on se muestra el ingreso de la funcion, 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