8
MatLab Básico Profesor: Hermes Pantoja C. Página 1 I. MATLAB BASICO 1. Operaciones usuales » x=3+5 » 4-10 » 4-10; » x=3+5; » x=5*9-3 » x=3/4+6-10 » x=log(8) » x=exp(log(8)) » x=log(exp(8)) » x=cos(pi/4) » x=log(sqrt(4)) » x=sqrt(8) » x=8^(1/2) » x=5^2 » sin(pi) » eps » realmin » realmax » realmax*1.1 » realmax+10 » eps » format long % Ejecute los siguientes comandos e interprete los resultados » a = 2500/20 » a = 2500/20; » b = [1 2 3 4 5 6 7 8 9] » c = [1 2 3 ; 4 5 6 ; 7 8 9] » c = [c ; [10 11 12]] » c(2,2) = 0 » l = length(b) » [m,n] = size(b) » [m,n] = size(c) » who » whos » clear » who » b = l + 2 + 3 + 4 + ... » 5 + 6 - 7 » x = 1 : 2 : 9 » x = (0.8 : 0.2 : 1.4); » y = sin(x) » dir » a = 2^3 » a = 4/3

1.Laboratorio Matlab Basico

  • Upload
    m4gn3to

  • View
    213

  • Download
    1

Embed Size (px)

DESCRIPTION

1.Laboratorio Matlab Basico

Citation preview

Page 1: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 1  

I. MATLAB BASICO

1. Operaciones usuales

» x=3+5 » 4-10 » 4-10; » x=3+5; » x=5*9-3 » x=3/4+6-10 » x=log(8) » x=exp(log(8)) » x=log(exp(8)) » x=cos(pi/4) » x=log(sqrt(4)) » x=sqrt(8) » x=8^(1/2) » x=5^2 » sin(pi) » eps » realmin » realmax » realmax*1.1 » realmax+10 » eps » format long

% Ejecute los siguientes comandos e interprete los resultados » a = 2500/20 » a = 2500/20; » b = [1 2 3 4 5 6 7 8 9] » c = [1 2 3 ; 4 5 6 ; 7 8 9] » c = [c ; [10 11 12]] » c(2,2) = 0 » l = length(b) » [m,n] = size(b) » [m,n] = size(c) » who » whos » clear » who » b = l + 2 + 3 + 4 + ... » 5 + 6 - 7 » x = 1 : 2 : 9 » x = (0.8 : 0.2 : 1.4); » y = sin(x) » dir » a = 2^3 » a = 4/3

Page 2: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 2  

» format long » a = 4/3 » format short » clear » a=[1 2 3 ; 4 5 6 ; 7 8 9]; » b = a’ » c = a + b » c = a - b » a(l,:) = [-1 -2 -3] » c = a(:,2) » c = a(2:3, 2:3) » x = [- 1 0 2]; » y = [-2 -1 1]’; » x*y » c = x + 2 » a = [1 0 2; 0 3 4 ; 5 6 0]; » size(a) » b = inv(a); » c = b*a » c = b/a » c = b\a » clear a b x y » whos

2. Trabajando con vectores en MATLAB.

» x=[] %inicialización de vectores » x=[0 1 -1 3 4]; » z=x*3; » z » z=x.*y %producto componente a componente. » sum(z) %suma de las componentes del vector » z=x./y; » z » z=x*y; % error » pi » cos(pi/4) » x=[ones(1,4),[2:2:11],zeros(1,3)] ; » x=[ones(1,4),2:2:11,zeros(1,3)] ; » x(3:7) » r=rand(size(1:10)) % Los números complejos son fáciles de tratar: » z = 2 + 2j » conj(z) » abs(z) » angle(z) » real(z) » imag(z)

Page 3: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 3  

3. Recursos Gráficos » y = [0 2 5 4 1 0]; » plot(y) » t = 0:.4:4*pi » y = sin(t) » z = cos(t); » plot(t, y, ‘.’, t, z "-.") » title(‘Funçiones’) » xlabel("t") » ylabel("Seno y Coseno") » text(3, 0.5, ‘Seno’) »grid on 4. Trabajando con matrices en MATLAB.

» v=1:4; » A = [1 2 3; 3 -5 6; 6 7 9] » eye(3) » zero(3) » zero(3,3) » zeros(3,3) » B = A' » A*B » A.*B » A+B » A(2,3) » A » A(1,:) » A([1,2],:) » A([3 2],[2 1]) » A » A*v » A » v » size(A) » length(A) » sin(A) » A » A^2 » A.*A » A.^2 » inv(A)

Page 4: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 4  

» det(A) 5. Otros comandos para Gráficos

5.1 Abrir el editor y grabar con nombre Grafi01 y escribe lo siguiente:

x=0:0.1:2*pi; subplot(2,2,1); plot(x,sin(x),’b-o’);axis([0 2*pi -1.1 1.1]); subplot(2,2,2); plot(x,cos(x),’m-+’);axis([0 2*pi -1.1 1.1]); subplot(2,2,3:4);plot(x,sin(x),’b-o’,x,cos(x),’m--+’); axis([0 2*pi -1.1 1.1]);

Ejecutar desde la ventana de comandos: >>Grafi01

La orden hold on hace que no se borre el contenido de la ventana gráfica cuando se den nuevas órdenes de dibujo. Se suspende con hold off 5.2 Abrir el editor y grabar con nombre Grafi02 y escribe lo

siguiente: ezplot('sin(x^2)*x/2',[-4,4]) hold on ezplot('0',[-4,4]) ezplot('x^2-1/x',[-4,4]) hold off Ejecutar desde la ventana de comandos: >>Grafi02

Page 5: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 5  

5.3 Abrir el editor y grabar con nombre Grafi03 y escribe lo siguiente:

x=-3:0.2:3; y=x; [xx,yy]=meshgrid(x,y); z=xx.^2+3*yy.^2; plot3(xx,yy,z)

%Representa la gráfica de 22 3),( yxyxz += utilizando la orden plot3

II. TEORIA DE ERRORES Y ARITMETICA DEL COMPUTADOR Ejemplo1: Crear una función expo1 que permita obtener la suma de términos de la serie de Taylor para aproximar el exponencial de una número real x dado n entero:

!!3!21

32

nxxxxs

n

L++++=

% expo1.m function s=expo1(x,n) s=1; for i=1:n s=s+x^i/factorial(i); end

Para ejecutarla escriba: » s=expo1(1,6) s = 2.7181 Una variante de esta función puede ser retornando además el error comparado con la función exp propia del MATLAB.

% expo2.m

function [s,err]=expo2(x,n)

s=1;

for i=1:n

s=s+x^i/factorial(i);

end

err=abs(exp(x)-s); Para ejecutarla escriba: » [sum,err]=expo2(1,6)

Page 6: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 6  

sum = 2.7181 err = 2.2627e-004 Nota.- Obsérvese que el nombre de archivo es idéntico al nombre de la función. Ejemplo2: Mediante un programa en Matlab determine el número de términos necesarios para aproximar  cos(x)  con  9  cifras  decimales  exactas,  usando  la  aproximación  de  Taylor, 

para x=π/5: 

........!6!4!2

1)cos(642 xxxx −+−=  

cs=9;%cifras significativas s=0; nt=1;%Numero de términos error=1; x=pi/5; while (abs(error)>(10^‐cs))      error=((‐1)^(nt+1))*(x^(2*(nt‐1)))/factorial(2*(nt‐1));      s=s+error;         nt=nt+1;  end  disp(‘El numero de términos necesarios es:);  nt‐1  

También se pueden declarar funciones en línea: 

 

f=inline(‘expresion_variables_x1_x2_..’,’x1’,’x2’,..) 

f : es una variable de memoria. por ejemplo:

» f=inline('x^2+y^2','x','y') f = Inline function: f(x,y) = x^2+y^2 » f(3,4)

Page 7: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 7  

ans =     25 

% redondea.m

function y=redondea(x,n)

if nargin~=2 ; error(‘Numero incorrecto de argumentos’);end

m=floor(log10(abs(x))); %Notación científica

escala=10^(n-m-1);

y=round(escala*x)/escala; %Obtención del valor 

Algunos cálculos adicionales en MATLAB: 

» x=pi x =   3.14159265358979 » y=22/7 y =   3.14285714285714 » xr=redondea(x,5) xr =   3.14160000000000 » yr=redondea(y,5) yr =   3.14290000000000 » xmyr=xr‐yr xmyr =  ‐0.00130000000000 » xmy=x‐y xmy =  ‐0.00126448926735 » err=abs(xmy‐xmyr)     %Error absoluto err =    3.551073265040117e‐005 » errel=err/abs(xmy)*100   % Error relativo porcentual errel =   2.80830637058947  

Epsilon de  la maquina: Es  la precisión de  la maquina, según  la  IEEE, es  la distancia del “1” al siguiente número que tiene almacenamiento exacto. 

» eps % del Matlab ans = 2.220446049250313e-016 » 1+eps/2 ans = 1 » p=1+eps p = 1.00000000000000 » fprintf('%20.16f',p) 1.0000000000000002

Page 8: 1.Laboratorio Matlab Basico

MatLab Básico                        

Profesor: Hermes Pantoja C.  Página 8  

» 2^-52 ans = 2.220446049250313e-016 Asi, eps = 2-52 ≈ 2.2204e-016 El epsilon o precision de la maquina se puede calcular con la siguiente rutina : % epsilon.m epsilon=1; while (1+epsilon)>1 epsilon=epsilon/2; end epsilon=epsilon*2 » epsilon epsilon = 2.220446049250313e-016 Pérdida de precisión 

» x=1e‐10 x =     1.000000000000000e‐010 » f=sqrt(x*x+1)‐1 f =      0 » f=x*x/(sqrt(x*x+1)+1) f =     5.000000000000001e‐021 Comente sus resultados. 

III. EJERCICIOS PROPUESTOS

1. Escribe una función de Matlab que tomando como parámetros de entrada dos vectores x e y devuelva el producto escalar de los dos vectores. Utilizar la siguiente expresión para el cálculo del producto escalar:  

∑=

=n

iii yxyx

1··  

La función debe comprobar que los vectores de entrada tienen la misma dimensión (n). 

2. Desarrolle una función llamado nt, que retorne el número de términos necesarios para 

aproximar el número π hasta n cifras decimales exactas, usando la siguiente serie: 

⎟⎠⎞

⎜⎝⎛ +−+−= ......

91

71

51

3114π