Lab2 Programacion Matlab
Lab2 Programacion Matlab
Programacion en Matlab Vectorizacin Para lograr la velocidad de operacin ms alta, se debe vectorizar en los algoritmos del Matlab siempre que sea posible. Mientras que otros lenguajes de programacin requieren for o lazos, Matlab puede utilizar operaciones con vectores o matrices. Esto generalmente implica una ventaja en velocidad sobre la tcnica del bucle. Un simple ejemplo: Ejemplo 1 x=0.1:0.1:1000; t=0.1; y=log10(x); for k=1:1000 plot(x,y) x(k)=t; y(k)=log10(t); t=t+0.1; end plot(x,y) Obtener un cdigo de vectorizacin complicado no siempre es una ventaja, porque la expresin puede ser demasiado compleja. Si la velocidad es importante, pero usted siempre debe tratar de vectorizar sus algoritmos. Ejemplo 2 Los coeficientes binomiales son fciles con la ayuda del tringulo de Pascal. Escribir en un programa (M-file), que calcula una funcin de n, los coeficientes binomiales en una matriz nxn A. Ejemplo para n= 5.
Solucin:
function [A]= pascal(n) A=zeros(n); v=1; for i= 1:n A(i,1:i)=v; v=[v 0]+[0 v]; end
Corrida: >> n=5 >> A=pascal(n) Ejemplo 3 Escriba una funcin de archivo (M-file) para calcular la siguiente funcin:
Universidad Nacional de Ingeniera Facultad de Ingeniera Mecnica Departamento de Ciencias Basicas y Cursos Complementarios
Pruebe su funcin para los valores x = -2, 1.5, 2 y 6 y Grafique la funcin f en el intervalo [-3 3]. Solucin
function y=fun(x) y=x.*(x<0)+x.^2.*(x>=0 & x<2)+4.*(x>=2);
-1
-2
-3 -3
-2
-1
Ejemplo 4 Sealar que los siguientes vectores son linealmente dependientes (LD) o linealmente independiente (LI)! Ingresar los siguientes vectores:
Solucin % Prueba_vector.m
clear; close all; disp(' %Dos vectores en R^2 son linealmente dependientes (LD) si uno es un mltiplo del otro.'); disp(' % En primer lugar, los vectores se pueden introducir:'); a=input('a = elementos en corchetes y transpuesta = '); b=input('a = elementos en corchetes y transpuesta = '); c=input('a = elementos en corchetes y transpuesta = '); disp('Pulse enter'); pause k=b./a; if (k(1)==k(2)), disp('b y a LD'); else disp('b y a LI'); end; disp('Pulse enter'); pause m=c./a;
Profesora: Rosa Mercedes Garrido Jurez 2
Universidad Nacional de Ingeniera Facultad de Ingeniera Mecnica Departamento de Ciencias Basicas y Cursos Complementarios
if (m(1)==m(2)), disp('c y a LD'); else disp('c y a LI'); end; n=c./b; if (n(1)==n(2)), disp('c y b LD'); else disp('c y b LI'); end; pause Ejemplo 5 Convertir un nmero entero en base decimal a un binario en forma de vector. Ejemplo : N= 125 debe salir b= 1 1 1 1 1 0 1 Solucin x=input( 'n='); b=[]; while x~=0 d=rem(x,2); x=fix(x/2); b=[b d]; end b=b(end:-1:1) Ejemplo 6 Uso del Case
clear; close all; disp(' Entero > 0 : '); n=input('n = '); disp(' '); disp(' switch ( rem(n,4) == 0) + (rem(n,2) == 0)'); disp(' case 0'); disp(' ''impar'''); disp(' case 1'); disp(' ''divisible slo por 2'''); disp(' case 2'); disp(' ''divisible por 4'''); disp(' otherwise'); disp(' ''ninguna de las anteriores'''); disp('end'); disp(' '); switch ( rem(n,4) == 0) + (rem(n,2) == 0) case 0 'impar' case 1 'divisible slo por 2' case 2 'divisible por 4' otherwise 'ninguna de las anteriores' end pause
Profesora: Rosa Mercedes Garrido Jurez 3