% INTRODUCCIóN A MATLAB II % % Teacher: Kenneth Eriksson % translated by Francisco R. Villatoro % Considere todos las líneas de comando que aparecen en este % fichero, no olvide ninguna, aunque parezca obvia. % Primero, prevea cuál es el resultado que usted cree que van a dar % Segundo, introdúzcala en el editor de línea de Matlab ">>" % Tercero, ¿da el mismo resultado que usted esperaba? ¿Por qué? % Cuarto, si tiene dudas, pregunte a los profesores de la asignatura: % Dr. Francisco R. Villatoro y Dra. Carmen M. García López MATLAB INTRO II % Introduzca en Matlab y determine su resultado: % Recuerde que en Matlab: Falso=0 y Verdadero=1 >> 2<3 >> 2>3 >> -3<2 >> 1+1 = = 2 >> 2 = = 3 >> 2 ~= 3 % Sentencias condicionales y selectivas >> i=1; >> if i = = 1 disp('i es uno'); end >> i=2 >> if i = = 1 disp('i es uno'); end >> if i = = 1 disp('i es uno'); else disp('i no es uno'); end >> help if % Manejo de ficheros de comandos .m, llamados "script" >> pwd >> dir >> edit % edite un fichero escribiendo "disp('hola')" y guárdelo como "hola.m" >> hola >> dir % Reemplace el texto del fichero "hola.m" por el siguiente código que ordena % la lista o vector v=[a b], es decir, que opera como sigue, % si a> v=[2 1] >> PrimerOrdenador >> PrimerOrdenador % ¿Qué pasa en ambas versiones de código cuando v(1)=v(2)? % Sentencias de iteración "for" y "while" % Escribiremos un código que le permite a Matlab contar de 1 a N, por ejemplo: i=0; while i < N i=i+1; disp(i) end % Guárdelo como CuentaHastaN.m; probaremos que funciona mediante: >> N=10; >> CuentaHastaN % Este código se puede escribir de forma alternativa como: for i=1:N disp(i) end % Guárdelo como CuentaHastaNbis.m; y pruébelo >> CuentaHastaNbis % Ejercicios recomendables %1. a) Haz un código que sólo cuente los números impares hasta N. % Ayuda usa un bucle for i=1:2:N %1. b) Haz un código que cuente hacia atrás desde N hasta 1, primero % con un bucle "for" (ayuda reemplaza i=1:N por i=N:-1:1) y luego % con un bucle "while" %2. Escribe un código que dado $N$ chequee la conjetura de Leibniz que % pensó que la suma 1+2+..+N es N^2/2. Imprima su diferencia y cociente. % ¿Cuánto vale para N=1000? ¿Por qué dos números tan diferentes % (la respuesta verdadera y la conjetura) tienen un cociente tan próximo a 1? %3. Dados dos números naturales m y n, escriba un código Matlab que encuentre % dos números p y r, con 0<=r=n p=p+1; r=m-p*n; end disp(['m=' num2str(p) 'n+' num2str(r)]) %4. Comprueba si con el siguiente código, una tortuga que vaya paso a paso, % empezando en 0, llegará a alcanzar alguna vez 1. Utiliza el siguiente código, % explica su funcionamiento y su porqué: posicion=0; while posicion<1 paso=(1-posicion)/2; posicion=posicion+paso; disp(posicion) end %5. ¿Cómo funciona el siguiente código? while 1<2 disp('this will go on forever') end % Ejecútalo. Si tienes problemas, siempre puedes pulsar % Intenta entender el siguiente código: while 1 disp('¿Qué es 3+4?') respuesta=input(''); if respuesta == 7 disp('Correcto') return else disp('Erróneo, pero te daré otra oportunidad.') end end >> help input % Fundamentos de aritmética flotante >> eps % el épsilon de la máquina. ¿Es el número más pequeño? >> eps/2 >> eps/100000000000000 >> help eps >> 1+eps = = 1 >> 1+eps/2 = = 1 >> a=10 >> a=a^2 % repite varias veces este comando (usa las flechas) hasta que Matlab utilice % números en representación d.dddde+ddd; ¿entiendes bien dicho número? % Continúa hasta que Matlab no pueda más (y se repita a sí mismo) >> Inf=Inf+1 >> Inf*2 >> Inf/2 >> 1/eps >> 1/0 >> -1/0 % ¿Dirías que 0 en Matlab es positivo? ¿Por qué no? o ¿Por qué sí? >> 0/0 % Operación indefinida, no es un número (Not a Number) >> Inf-Inf >> Inf/Inf >> 0*Inf % Ejercicios: %1. ¿Cuál es el número más grande de Matlab por debajo de "Inf"? % Operadores condicionales y operaciones condicionales compuestas >> 0<=1 >> 1<=1 >> 1<2 | 1>2 >> 1<2 & 1>2 >> ~(1<2) % ¿Cómo escribes ~ en tu teclado? Como último recurso utiliza