View
213
Download
1
Category
Preview:
DESCRIPTION
1.Laboratorio Matlab Basico
Citation preview
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
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)
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)
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
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)
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)
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
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π
Recommended