SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
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 2
A continuaci´on se presenta un programa en Matlab el cual resuelve polinomios
mediante el m´etodo de falsa posici´on.
1. C´odigo del script falsaposicion.m
1 % Calcula la ra´ız de una funci´on por el m´etodo de falsa posici´on
2 clear
3 disp(’Ingresa la funci´on de una variable independiente’)
4 disp(’la cual dese´e analizar, no se limite por la "x" en f(x),’)
5 f = input(’puede ser cualquier otra literal. f(x)= ’,’s’);
6 alto = 0;
7 while alto == 0
8 a = input(’Ingresa la cota inferior de la ra´ız: ’);
9 b = input(’Ingresa la cota superior de la ra´ız: ’);
10 ea = subs(f,a);
11 eb = subs(f,b);
12 if ea*eb > 0
13 disp(’Las cotas encierran cero o m´as de una ra´ız’);
14 disp(’por favor ingresa otras cotas’);
15 else
16 alto = 1;
17 end
18 end
19 alto = 0;
20 while alto == 0
21 disp(’Selecciona 1 para seleccionar el criterio de error relativo’)
22 disp(’entre aproximaciones ´o 2 para seleccionar por n´umero’)
23 s = input(’de iteraciones: ’);
24 switch s
25 case 1
26 epsilon = input(’Ingresa m´aximo error relativo: ’);
27 alto = 1;
28 case 2
29 maxit = input(’Ingresa m´aximo n´umero de iteraciones: ’);
30 alto = 1;
31 otherwise
32 disp(’Opci´on no v´alida, por favor selecciona 1 ´o 2’)
33 end
34 end
35 it = 1;
36 alto = 0;
37 while alto == 0
38 ea = subs(f,a);
39 eb = subs(f,b);
40 r = b - ((eb*(b-a))/(eb - ea));
Jos´e Armando Lara Ramos 3
41 er = subs(f,r);
42 if it > 1
43 err = abs((r-mr)/(r));
44 if s == 1
45 if epsilon >= err
46 alto = 1;
47 end
48 end
49 if s == 2
50 if maxit <= it
51 alto = 1;
52 end
53 end
54 end
55 mr = r;
56 disp([’---Iteraci´on n´umero ’ num2str(it) ’---’])
57 disp([’La aproximaci´on es: ’ num2str(r)])
58 if it > 1
59 disp([’El error relativo es: ’ num2str(err)])
60 end
61 disp([’La aproximaci´on esta entre: ’ num2str(a) ’ y ’ num2str(b)])
62 if er == 0,
63 alto = 1;
64 elseif eb*er > 0,
65 b = r;
66 else
67 a = r;
68 end
69 it = it + 1;
70 end
Jos´e Armando Lara Ramos 4
2. Explicaci´on de la l´ogica del script falsaposicion.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. Se explica que se puede poner alguna otra literal distinta de x como variable
independiente.
5. La funci´on se guarda como cadena de caracteres en f.
6. Se inicializa en cero una variable alto la cual servir´a como bandera para detener
ciclos while.
7. Se inicializa ciclo while con la condici´on de la bandera alto igual a cero.
8. Se solicita la cota inferior de la ra´ız y se guarda en a.
9. Se solicita la cota superior de la ra´ız y se guarda en b.
10. Se evalua la funci´on en la cota inferior usando la funci´on subs.
11. Se evalua la funci´on en la cota superior usando la funci´on subs.
12. Se ejecutan las siguientes dos l´ıneas de programa si entre las cotas no hay un
n´umero impar de cambio de signo.
13. Se despliega un mensaje indicando que hay un n´umero par de ra´ıces entre las
cotas, lo cual no queremos.
14. Se le solicita al usuario ingresar otras cotas.
15. En caso de que entre las cotas si exista un cambio de signo se ejecuta la siguiente
l´ınea.
16. La bandera alto se coloca en uno para as´ı detener el ciclo while.
17. Termina el bloque if el cual revisa si son ´utiles o no las cotas
18. Termina el ciclo while de solicitud de cotas.
19. Se iguala a cero la variable alto para ser reutilizada.
20. Comienza le ciclo de iteraci´on while el cual se encarga de solicitar al usuario un
criterio para detener las iteraciones.
Jos´e Armando Lara Ramos 5
21. Se despliega la opci´on del criterio por error relativo entre iteraciones
22. Se despliega la opci´on del criterio por n´umero de iteraci´ones
23. La opci´on elegida se guarda en la variable s.
24. Comienza el bloque switch el cual para cada opci´on de criterio tiene un c´odigo.
25. Si el usuario eligi´o el criterio de error relativo se ejecutan las siguientes dos
l´ıneas.
26. Se solicita al usuario el error m´aximo relativo y se guarda en la variable epsilon.
27. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para
detener las iteraciones.
28. Si el usuario eligi´o el criterio por n´umero de iteraciones se ejecutan las siguientes
dos l´ıneas.
29. Se solicita al usuario el n´umero de iteraciones m´aximo y se guarda en la variable
maxit.
30. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para
detener las iteraciones.
31. Si no se seleccion´o ninguna de las opciones v´alidas, se ejecuta la siguiente l´ınea.
32. Se despliega el mensaje diciendo que no se seleccion´o ninguna opci´on v´alida y
por lo tanto necesita seleccionar otra vez.
33. Se termina el bloque switch.
34. Se termina el bloque while que solicita el criterio de detenimiento de iteraciones.
35. Se inicializa la variable it en uno ya que esta guardar´a el n´umero de iteraciones
y comenzaremos en la primera iteraci´on.
36. Se iguala a cero la variable alto para ser reutilizada.
37. Se inicia el ciclo while que contiene el c´odigo del m´etodo de la posici´on falsa y
el despliegue de resultados.
38. Se evalua la funci´on en la cota inferior a y se guarda en ea.
39. Se evalua la funci´on en la cota superior b y se guarda en eb.
40. Se obtiene la ra´ız falsa con el m´etodo ya conocido.
r = b −
eb · (b − a)
eb − ea
Jos´e Armando Lara Ramos 6
41. Se eval´ua la funci´on en la ra´ız falsa encontrada y se guarda el resultado en la
variable er.
42. El siguiente bloque if se ejecuta solo despu´es de la primera iteraci´on, ya que
contiene c´alculo de errores relativos, etc.
43. Se calcula el error relativo entre dos iteraciones, la actual y la pasada, y se
guarda en la variable err.
44. Si el criterio para detener las iteraciones fu´e por error relativo, este bloque if se
ejecutar´a.
45. Se compara si el error relativo actual (err) ya es menor que el requerido (epsilon).
46. 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.
47. Termina el bloque if en el que se comparan los errores.
48. Termina el bloque if el cual se ejecuta cuando el criterio es el error relativo.
49. Si el criterio para detener las iteraciones fu´e por n´umero de iteraciones, este
bloque if se ejecutar´a.
50. Se compara si el n´umero de iteraciones actual (it) es igual o mayor que las
requeridas (maxit).
51. 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.
52. Termina el bloque if en el que se comparan el n´umero de iteraciones.
53. Termina el bloque if el cual se ejecuta cuando el criterio es por n´umero de
iteraciones.
54. Termina el bloque if el cual se ejecuta despu´es de la primera iteraci´on.
55. El valor de la falsa posici´on se guarda en una variable mr con el objetivo de
hacer operaciones con ella en la siguiente operaci´on. Esto se hace ya que r
obtendr´a un nuevo valor.
56. Se despliega el n´umero de la iteraci´on.
57. Se despliega el valor de la aproximaci´on actual.
58. Si la iteraci´on es mayor a uno, la siguiente l´ınea se ejecuta.
59. Se despliega el error relativo entre la aproximaci´on actual y la anterior.
Jos´e Armando Lara Ramos 7
60. Termina el bloque if.
61. Se despliegan dos cotas entre las que est´a la falsa posici´on.
62. Si la evaluaci´on de la funci´on en la aproximaci´on es cero, significa que es la
soluci´on.
63. Si la l´ınea de arriba es correcta entonces la bandera alto se pone en uno.
64. Si no hay un cambio de signo entre las evaluaciones de la funci´on en r y b,
65. ahora la cota superior ser´a r.
66. Si ocurre lo opuesto, entonces significa que la ra´ız est´a entre r y b,
67. y entonces la cota inferior es r.
68. Termina bloque de if y else.
69. La variable que indica las iteraciones se aumenta en uno.
70. Termina el programa al t´ermino del ciclo while.
Jos´e Armando Lara Ramos 8
3. Ejecuci´on 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 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 graficamos la funci´on para calcular por
el m´etodo gr´afico un rango aproximado en el cual se encuentran la o las ra´ıces. En la
Figura 1 se muestra la gr´afica.
Figura 1: Gr´afica de y = −0,874x2
+ 1,75x + 2,627.
Se puede observar como la primera ra´ız queda entre x = −2 y x = 0, y una
segunda ra´ız entre x = 2 y x = 4. Nuestro objetivo es calcular una raiz con un error
relativo entre las ´ultimas dos aproximaciones no mayor a 0.01 (es decir un porcentaje
de error relativo no mayor de el 1 %).
Jos´e Armando Lara Ramos 9
A continuaci´on se muestra el ingreso de la funci´on, las cotas 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 oficial de Matlab)
[3] Numerical Methods for Mathematics, Science and Engineering, 2nd Ed, 1992

Mais conteúdo relacionado

Mais procurados

Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.DENIRAMIREZANDRADE
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióNRegina Flores
 
¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?grachika
 
Guia de estructuras Condicionales
Guia de estructuras CondicionalesGuia de estructuras Condicionales
Guia de estructuras Condicionaleslaryenso
 
Estructurarepetitivas 091023140353-phpapp01
Estructurarepetitivas 091023140353-phpapp01Estructurarepetitivas 091023140353-phpapp01
Estructurarepetitivas 091023140353-phpapp01laryenso
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos ForRichard Robalino
 
Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.DENIRAMIREZANDRADE
 
Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++apohlo
 
183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdeviyaquelinpr
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFresyMetal
 
Programación en lenguaje C
Programación en  lenguaje C Programación en  lenguaje C
Programación en lenguaje C Fer Torres
 

Mais procurados (19)

Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.
 
C facil de_v2
C facil de_v2C facil de_v2
C facil de_v2
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióN
 
Recursividad
RecursividadRecursividad
Recursividad
 
¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?¿Como hacer un pseudocodigo y diagrama de flujo?
¿Como hacer un pseudocodigo y diagrama de flujo?
 
Grupo7
Grupo7Grupo7
Grupo7
 
Guia de estructuras Condicionales
Guia de estructuras CondicionalesGuia de estructuras Condicionales
Guia de estructuras Condicionales
 
Estructurarepetitivas 091023140353-phpapp01
Estructurarepetitivas 091023140353-phpapp01Estructurarepetitivas 091023140353-phpapp01
Estructurarepetitivas 091023140353-phpapp01
 
Leng prog C
Leng prog CLeng prog C
Leng prog C
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos For
 
Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.
 
Pseudocodigos
PseudocodigosPseudocodigos
Pseudocodigos
 
Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++Recurso Educativo Lenguaje de Programaciòn C++
Recurso Educativo Lenguaje de Programaciòn C++
 
No regresan valor c3. p3.
No regresan valor c3. p3.No regresan valor c3. p3.
No regresan valor c3. p3.
 
183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi183007957 estructuras repetitivas-estructurarepetitivadesdevi
183007957 estructuras repetitivas-estructurarepetitivadesdevi
 
Fpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.comFpr Tema 5 www.fresymetal.com
Fpr Tema 5 www.fresymetal.com
 
Modulo2b
Modulo2bModulo2b
Modulo2b
 
Programación en lenguaje C
Programación en  lenguaje C Programación en  lenguaje C
Programación en lenguaje C
 
Trabajo bucles bn
Trabajo bucles bnTrabajo bucles bn
Trabajo bucles bn
 

Semelhante a Explicación del-programa-de-Falsa-POSICIÓN

Programacion MatLab
Programacion MatLabProgramacion MatLab
Programacion MatLabEdgar Galvez
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilabTensor
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilabTensor
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióNRegina Flores
 
Unidad 1
Unidad 1Unidad 1
Unidad 1Isabel
 
Programación en matlab
Programación en matlabProgramación en matlab
Programación en matlabyito24
 
Jacobi y Gauss Seidel
Jacobi y Gauss SeidelJacobi y Gauss Seidel
Jacobi y Gauss Seideljoselolozano
 
Practica2
Practica2Practica2
Practica2carlos
 
Practica2
Practica2Practica2
Practica2carlos
 
Un estudio numérico sobre el número de Mach
Un estudio numérico sobre el número de MachUn estudio numérico sobre el número de Mach
Un estudio numérico sobre el número de MachCarlos Perales
 
Matlab INIT
Matlab INITMatlab INIT
Matlab INITTensor
 
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2 Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2 MarketingAD
 

Semelhante a Explicación del-programa-de-Falsa-POSICIÓN (20)

Gauss
GaussGauss
Gauss
 
Gauss
GaussGauss
Gauss
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
Programacion MatLab
Programacion MatLabProgramacion MatLab
Programacion MatLab
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilab
 
Metodo de biseccion en matlab
Metodo de biseccion  en matlabMetodo de biseccion  en matlab
Metodo de biseccion en matlab
 
Metodo de biseccion en matlab
Metodo de biseccion  en matlabMetodo de biseccion  en matlab
Metodo de biseccion en matlab
 
Metodo de la secante en scilab
Metodo de la secante en scilabMetodo de la secante en scilab
Metodo de la secante en scilab
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióN
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Programación en matlab
Programación en matlabProgramación en matlab
Programación en matlab
 
Jacobi y Gauss Seidel
Jacobi y Gauss SeidelJacobi y Gauss Seidel
Jacobi y Gauss Seidel
 
Matlab_basic.pptx
Matlab_basic.pptxMatlab_basic.pptx
Matlab_basic.pptx
 
Mat lab05
Mat lab05Mat lab05
Mat lab05
 
Practica2
Practica2Practica2
Practica2
 
Practica2
Practica2Practica2
Practica2
 
Un estudio numérico sobre el número de Mach
Un estudio numérico sobre el número de MachUn estudio numérico sobre el número de Mach
Un estudio numérico sobre el número de Mach
 
Matlab INIT
Matlab INITMatlab INIT
Matlab INIT
 
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2 Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2
Método Simplex Mercadotecnia Análisis de Decisiones Equipo 2
 

Explicación del-programa-de-Falsa-POSICIÓN

  • 1. 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
  • 2. Jos´e Armando Lara Ramos 2 A continuaci´on se presenta un programa en Matlab el cual resuelve polinomios mediante el m´etodo de falsa posici´on. 1. C´odigo del script falsaposicion.m 1 % Calcula la ra´ız de una funci´on por el m´etodo de falsa posici´on 2 clear 3 disp(’Ingresa la funci´on de una variable independiente’) 4 disp(’la cual dese´e analizar, no se limite por la "x" en f(x),’) 5 f = input(’puede ser cualquier otra literal. f(x)= ’,’s’); 6 alto = 0; 7 while alto == 0 8 a = input(’Ingresa la cota inferior de la ra´ız: ’); 9 b = input(’Ingresa la cota superior de la ra´ız: ’); 10 ea = subs(f,a); 11 eb = subs(f,b); 12 if ea*eb > 0 13 disp(’Las cotas encierran cero o m´as de una ra´ız’); 14 disp(’por favor ingresa otras cotas’); 15 else 16 alto = 1; 17 end 18 end 19 alto = 0; 20 while alto == 0 21 disp(’Selecciona 1 para seleccionar el criterio de error relativo’) 22 disp(’entre aproximaciones ´o 2 para seleccionar por n´umero’) 23 s = input(’de iteraciones: ’); 24 switch s 25 case 1 26 epsilon = input(’Ingresa m´aximo error relativo: ’); 27 alto = 1; 28 case 2 29 maxit = input(’Ingresa m´aximo n´umero de iteraciones: ’); 30 alto = 1; 31 otherwise 32 disp(’Opci´on no v´alida, por favor selecciona 1 ´o 2’) 33 end 34 end 35 it = 1; 36 alto = 0; 37 while alto == 0 38 ea = subs(f,a); 39 eb = subs(f,b); 40 r = b - ((eb*(b-a))/(eb - ea));
  • 3. Jos´e Armando Lara Ramos 3 41 er = subs(f,r); 42 if it > 1 43 err = abs((r-mr)/(r)); 44 if s == 1 45 if epsilon >= err 46 alto = 1; 47 end 48 end 49 if s == 2 50 if maxit <= it 51 alto = 1; 52 end 53 end 54 end 55 mr = r; 56 disp([’---Iteraci´on n´umero ’ num2str(it) ’---’]) 57 disp([’La aproximaci´on es: ’ num2str(r)]) 58 if it > 1 59 disp([’El error relativo es: ’ num2str(err)]) 60 end 61 disp([’La aproximaci´on esta entre: ’ num2str(a) ’ y ’ num2str(b)]) 62 if er == 0, 63 alto = 1; 64 elseif eb*er > 0, 65 b = r; 66 else 67 a = r; 68 end 69 it = it + 1; 70 end
  • 4. Jos´e Armando Lara Ramos 4 2. Explicaci´on de la l´ogica del script falsaposicion.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. Se explica que se puede poner alguna otra literal distinta de x como variable independiente. 5. La funci´on se guarda como cadena de caracteres en f. 6. Se inicializa en cero una variable alto la cual servir´a como bandera para detener ciclos while. 7. Se inicializa ciclo while con la condici´on de la bandera alto igual a cero. 8. Se solicita la cota inferior de la ra´ız y se guarda en a. 9. Se solicita la cota superior de la ra´ız y se guarda en b. 10. Se evalua la funci´on en la cota inferior usando la funci´on subs. 11. Se evalua la funci´on en la cota superior usando la funci´on subs. 12. Se ejecutan las siguientes dos l´ıneas de programa si entre las cotas no hay un n´umero impar de cambio de signo. 13. Se despliega un mensaje indicando que hay un n´umero par de ra´ıces entre las cotas, lo cual no queremos. 14. Se le solicita al usuario ingresar otras cotas. 15. En caso de que entre las cotas si exista un cambio de signo se ejecuta la siguiente l´ınea. 16. La bandera alto se coloca en uno para as´ı detener el ciclo while. 17. Termina el bloque if el cual revisa si son ´utiles o no las cotas 18. Termina el ciclo while de solicitud de cotas. 19. Se iguala a cero la variable alto para ser reutilizada. 20. Comienza le ciclo de iteraci´on while el cual se encarga de solicitar al usuario un criterio para detener las iteraciones.
  • 5. Jos´e Armando Lara Ramos 5 21. Se despliega la opci´on del criterio por error relativo entre iteraciones 22. Se despliega la opci´on del criterio por n´umero de iteraci´ones 23. La opci´on elegida se guarda en la variable s. 24. Comienza el bloque switch el cual para cada opci´on de criterio tiene un c´odigo. 25. Si el usuario eligi´o el criterio de error relativo se ejecutan las siguientes dos l´ıneas. 26. Se solicita al usuario el error m´aximo relativo y se guarda en la variable epsilon. 27. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para detener las iteraciones. 28. Si el usuario eligi´o el criterio por n´umero de iteraciones se ejecutan las siguientes dos l´ıneas. 29. Se solicita al usuario el n´umero de iteraciones m´aximo y se guarda en la variable maxit. 30. Al haber seleccionado ya un criterio, la bandera alto se coloca a uno para detener las iteraciones. 31. Si no se seleccion´o ninguna de las opciones v´alidas, se ejecuta la siguiente l´ınea. 32. Se despliega el mensaje diciendo que no se seleccion´o ninguna opci´on v´alida y por lo tanto necesita seleccionar otra vez. 33. Se termina el bloque switch. 34. Se termina el bloque while que solicita el criterio de detenimiento de iteraciones. 35. Se inicializa la variable it en uno ya que esta guardar´a el n´umero de iteraciones y comenzaremos en la primera iteraci´on. 36. Se iguala a cero la variable alto para ser reutilizada. 37. Se inicia el ciclo while que contiene el c´odigo del m´etodo de la posici´on falsa y el despliegue de resultados. 38. Se evalua la funci´on en la cota inferior a y se guarda en ea. 39. Se evalua la funci´on en la cota superior b y se guarda en eb. 40. Se obtiene la ra´ız falsa con el m´etodo ya conocido. r = b − eb · (b − a) eb − ea
  • 6. Jos´e Armando Lara Ramos 6 41. Se eval´ua la funci´on en la ra´ız falsa encontrada y se guarda el resultado en la variable er. 42. El siguiente bloque if se ejecuta solo despu´es de la primera iteraci´on, ya que contiene c´alculo de errores relativos, etc. 43. Se calcula el error relativo entre dos iteraciones, la actual y la pasada, y se guarda en la variable err. 44. Si el criterio para detener las iteraciones fu´e por error relativo, este bloque if se ejecutar´a. 45. Se compara si el error relativo actual (err) ya es menor que el requerido (epsilon). 46. 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. 47. Termina el bloque if en el que se comparan los errores. 48. Termina el bloque if el cual se ejecuta cuando el criterio es el error relativo. 49. Si el criterio para detener las iteraciones fu´e por n´umero de iteraciones, este bloque if se ejecutar´a. 50. Se compara si el n´umero de iteraciones actual (it) es igual o mayor que las requeridas (maxit). 51. 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. 52. Termina el bloque if en el que se comparan el n´umero de iteraciones. 53. Termina el bloque if el cual se ejecuta cuando el criterio es por n´umero de iteraciones. 54. Termina el bloque if el cual se ejecuta despu´es de la primera iteraci´on. 55. El valor de la falsa posici´on se guarda en una variable mr con el objetivo de hacer operaciones con ella en la siguiente operaci´on. Esto se hace ya que r obtendr´a un nuevo valor. 56. Se despliega el n´umero de la iteraci´on. 57. Se despliega el valor de la aproximaci´on actual. 58. Si la iteraci´on es mayor a uno, la siguiente l´ınea se ejecuta. 59. Se despliega el error relativo entre la aproximaci´on actual y la anterior.
  • 7. Jos´e Armando Lara Ramos 7 60. Termina el bloque if. 61. Se despliegan dos cotas entre las que est´a la falsa posici´on. 62. Si la evaluaci´on de la funci´on en la aproximaci´on es cero, significa que es la soluci´on. 63. Si la l´ınea de arriba es correcta entonces la bandera alto se pone en uno. 64. Si no hay un cambio de signo entre las evaluaciones de la funci´on en r y b, 65. ahora la cota superior ser´a r. 66. Si ocurre lo opuesto, entonces significa que la ra´ız est´a entre r y b, 67. y entonces la cota inferior es r. 68. Termina bloque de if y else. 69. La variable que indica las iteraciones se aumenta en uno. 70. Termina el programa al t´ermino del ciclo while.
  • 8. Jos´e Armando Lara Ramos 8 3. Ejecuci´on 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 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 graficamos la funci´on para calcular por el m´etodo gr´afico un rango aproximado en el cual se encuentran la o las ra´ıces. En la Figura 1 se muestra la gr´afica. Figura 1: Gr´afica de y = −0,874x2 + 1,75x + 2,627. Se puede observar como la primera ra´ız queda entre x = −2 y x = 0, y una segunda ra´ız entre x = 2 y x = 4. Nuestro objetivo es calcular una raiz con un error relativo entre las ´ultimas dos aproximaciones no mayor a 0.01 (es decir un porcentaje de error relativo no mayor de el 1 %).
  • 9. Jos´e Armando Lara Ramos 9 A continuaci´on se muestra el ingreso de la funci´on, las cotas 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 oficial de Matlab) [3] Numerical Methods for Mathematics, Science and Engineering, 2nd Ed, 1992