1. SOFTWARE DE INGENIERIA Introducción a la programación en MATLAB Universidad de Cuenca Enero de 2012 Ing. Gerardo Arbito C. Cálculo numérico de elevadas prestaciones y software de visualización
19. Funciones de uso general abs(x) valor absoluto de x sqrt(x) raíz cuadrada de x round(x) Redondeo de x al entero más próximo fix(x) redondeo de x al entero más próximo de cero floor(x) redondeo de x al entero más próximo de - ceil(x) redondeo de x al entero más próximo de + sign(x) signo de x rem(x,y) resto de la división x/y exp(x) valor de e x log(x) logaritmo natural de x OBS: x puede ser escalar, vector o matriz 13 4.- LA BIBLIOTECA DE MATLAB
20.
21. Numerical linear algebra. Matrix analysis. norm - Matrix or vector norm. rank - Matrix rank. det - Determinant. trace - Sum of diagonal elements. orth - Orthogonalization. subspace - Angle between two subspaces. Linear equations . linsolve - Linear equation solution with extra control. inv - Matrix inverse. chol - Cholesky factorization. lu - LU factorization. qr - Orthogonal-triangular decomposition. lscov - Least squares with known covariance. Eigenvalues and singular values. eig - Eigenvalues and eigenvectors. eigs - A few eigenvalues. poly - Characteristic polynomial. polyeig - Polynomial eigenvalue problem. Funciones de operaciones con matrices
34. E j emplo if else ani dado p rimero = input ('Por favor, ingrese un número grande: '); segundo= input ('Por favor, ingrese un número peque ñ o: '); If (primero >= segundo) if (rem(primero,segundo) == 0) % División exacta if (primero == segundo) disp(‘ Son iguales !'); else disp(‘ Son divisibles !'); end else disp(' No son divisibles exactamente !'); end else disp('Opa, el peque ño es ma y or que el grande !!!' ); end 23
35. E j emplo else if ani dado if expresión1 comandos ejecutados si la expresión1 es V elseif expresión2 comandos ejecutados si la expresión2 es V elseif expresión3 comandos ejecutados si la expresión3 es V elseif ...... else comandos ejecutados si ninguna expresión es verdadera end 24
36.
37.
38. switch-case ejemplo “convertir a centímetros de pulgadas o pies” X = input(‘Ingrese un valor:’) Unidades = input(‘Ingrese la unidad:’,’s’) switch Unidades % convierte x a centímetros case {‘pulgadas’,’pul’} y = x*2.54; case {‘pies’,’p’} y = x*2.54*12 Otherwise disp([‘Unidad desconocida:’,Unidades]); end 25
39. While while condición % expresión lógica comandos end Eps = 1 Num = 1 while (1+eps) > 1 eps = eps/2; num = num+1; End eps=2*eps disp(‘epsilon: ’,eps); disp(‘número: ’,num); 26 BUCLES (repetición de comandos)
40. For - end for valor inicial:incremento:valor final comandos .... end Ejemplo n=input(‘Ingrese el número de filas:’); for k=1:n ones(k,2) end 27
41.
42. Ordenación ascendente de un vector >> Mate = NOTA_T(:,3); >> [Ord_Mate,indice]= sort (Mate) >> std (Mate) % desviación standar >> hist (min_columna); % Histograma de 10 barras (default) >> [n,m]= hist (min_columna) % n=altura, m=centro de cada barra >> hist (min_columna, 3) % Histograma de 3 barras >> [n,m]= hist (min_columna, 4) 31
43.
44.
45. >> x= linspace (0,2*pi,30) %Genera 30 puntos entre 0 y 2*pi >> y = sin(x) >> plot(x,y,’r*’) >> z=cos(x) >> plot(x,y,’b:p’,x,z,’c-’); >> plot(x,y,'rp','LineWidth',1.8); >> xlabel (‘Variable x’) %titulo de eje x >> ylabel (‘Variable y e z’) %titulo del eje y >> ylabel(‘Variable x','FontSize',14,'FontWeight','Bold','FontAngle','italic') >> xlabel(‘Variable y','FontSize',14,'FontWeight','Bold','FontAngle','normal') >> title (‘Gráfico Sinusoidales’) >> legend (‘sin(x)’, ‘cos(x)’) 34
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56. Ejemplo uso de archivos clear % Borra las variables del ambiente Fid = fopen ('vetor.dat','r'); % abre un archivo existente %le e valores e nteros d el archivo ve c tor.dat nval = fscanf (fid,'%2d',1); %n ú mero de valores a leer es 1 vet = zeros(nval,1); %c re a el ve c tor vet de ceros for k=1:nval, vet(k) = fscanf (fid,'%5d',1); %le e valores em formato end % e ntero con 5 dígitos fclose (fid); %Cierra el archivo disp (' FI N '); vet % m ue stra en el prompt el vector leido 45
57. ar ch ivo_n ue vo = input (‘ Ingrese el nombre del archivo -> ','s'); orde n = 8; Mat = randn (orde n ); % cr e a matriz 8x8 mat % m uestra la matriz Fid = fopen (ar ch ivo_n ue vo,'w'); %cr e a archiv o n ue vo, si ya existe % se elimina el contenido % Escribe la matriz en el archivo indicado for k=1:orde n , for l=1:orde n , fprintf (fid,'%3.2f',mat(k,l)); % escr ib e los valores em formato p u nto fi jo end % co n 3 d í gitos d e lo s cuales 2 so n decima le s fprintf (fid,''); % Escribe y cambia de línea end fclose (fid); % Cierra el archivo disp ('FI N '); 46
58.
59. Hallar la integral de la siguiente función >> a=0 >> b=1; >> quad (‘x.^2’,a,b) >> quadl (‘x.^2’,a,b) %Integración por cuadratura de alto orden 48
64. Observaciónes: M=[a,b,c,d] % M es una matriz numérica M=‘[a,b,c,d]’ % M es una matriz de strings o texto M=sym(’[a,b,c,d]’) % M e una matriz simbólica Puede definirse también >> syms x a b c % Defino variables simbólicas >> f=x^2+sqrt(sin(x)) 53
65.
66.
67.
68. Métodos de Puntos Interiores: 4 8 4 7 X1 X2 59 Archivos: -Pto. Interior *