Вы находитесь на странице: 1из 5

UNIVERSIDAD CATOLICA DE LA SANT ISIMA CONCEPCION FACULTAD DE INGENIER IA DEPARTAMENTO DE MATEMATICA Y F ISICA APLICADA

f Laboratorio 2 de MATLAB C alculo III(IN1009C)


Semana del 19 al 23 de agosto de 2013

1.
1.1.

Soluci on ejercicios Laboratorio 1


Ejercicio 2
Function para determinar el angulo existente entre dos vectores de Rn . function theta=anguloxy(x,y) nx=norm(x); % Norma euclideana del vector x ny=norm(y); % Norma euclideana del vector y if nx==0||ny==0 % Testeo de que los vectores sean no nulos aaaaerror( Los vectores deben ser no nulos ) % El comando error termina la ejecuci on de la function elseif length(x)= length(y) % Testeo de que los vectores tengan la misma dimensi on aaaaerror( Los vectores deben tener la misma dimens on ) end pxy=x y ; % Producto interno entre x e y theta=acos(pxy/(nx ny ));

2.

Programaci on

Hay dos tipos de programas Matlab: uno se donomina rutero y el otro function. Creamos un directorio donde guardaremos nuestros programas mediante el comando: mkdir nombredirectorio

>>

Para que Matlab reconozca los programas dentro de un directorio, debemos ingresar a el mediante el comando: cd nombredirectorio

>>

Todos los archivos con programas Matlab deben terminar con la extensi on .m.

2.1.

Comandos
A continuaci on daremos los comandos m as usados en programas: for: La sintaxis de este comando es:

UNIVERSIDAD CATOLICA DE LA SANT ISIMA CONCEPCION FACULTAD DE INGENIER IA DEPARTAMENTO DE MATEMATICA Y F ISICA APLICADA

for i=vi:in:vf aaaa instrucciones end donde vi, in y vf son el valor inicial, el incremento y el valor nal de la variable escalar i. Cuando in est a ausente, se presupone el valor 1: as , son equivalentes: for i=vi:vf y for i=vi:1:vf. while: La sintaxis de este comando es:

while relacion aaaa instrucciones end Las instrucciones se ejecutan reiteradamente mientras la relaci on sea verdadera. if: La sintaxis de este comando es:

if relacion aaaa instrucciones end Las instrucciones se ejecutan si la relaci on sea verdadera. Otras formas de este comando son posibles. Por ejemplo:

if relacion1 aaaa instrucciones1 else aaaa instrucciones2 end Si la relaci on es verdadera se ejecutan las instrucciones 1, caso contrario se ejecutan las instrucciones 2. Las relaciones para los comandos if y while se construyen mediante los siguientes relacionadores: < > <= >= == = menor que mayor que menor o igual que mayor o igual que igual que distinto a

y los siguientes conectivos l ogicos: && || xor y o no o excluyente

UNIVERSIDAD CATOLICA DE LA SANT ISIMA CONCEPCION FACULTAD DE INGENIER IA DEPARTAMENTO DE MATEMATICA Y F ISICA APLICADA

2.2.

Ruteros vs functions

Supongamos que deseamos encontrar el area del cuadril atero que se genera entre dos vectores de Rn . Escribamos primero un programa de tipo rutero, ejecutamos:
>>

edit

Y se nos abrir a el editor. x=[1 2 3]; y=[4 5 6]; nx=norm(x); % Norma euclideana del vector x ny=norm(y); % Norma euclideana del vector y pxy=x y ; % Producto interno entre x e y theta=acos(pxy/(nx ny )); % Angulo entre los dos vectores area=nxnysin(theta); area Guarde el programa con el nombre areaxyrutero.m. Para ejecutarlo escribimos en la ventana de comandos: areaxyrutero

>>

Este tipo de programas se conocen como ruteros y las variables son globales, es decir, quedan en la memoria despu es de ejecutarse el programa. Para saber que hay en la memoria puede usarse el comando whos. Una desventaja de este tipo de programas es que para calcular otra area (en el ejemplo) debemos modicar el programa. Los programas tipo function tienen una estructura m as esquematizada y siempre comienzan de la siguiente forma: function [salida2,salida2,...]=nombre(entrada1,entrada2,...)

UNIVERSIDAD CATOLICA DE LA SANT ISIMA CONCEPCION FACULTAD DE INGENIER IA DEPARTAMENTO DE MATEMATICA Y F ISICA APLICADA

El programa anterior escrito como function queda: function area=areaxy(x,y) nx=norm(x); % Norma euclideana del vector x ny=norm(y); % Norma euclideana del vector y if nx==0||ny==0 % Testeo de que los vectores sean no nulos aaaaerror( Los vectores deben ser no nulos ) % El comando error termina la ejecuci on de la function elseif length(x)= length(y) % Testeo de que los vectores tengan la misma dimensi on aaaaerror( Los vectores deben tener la misma dimens on ) end pxy=x y ; % Producto interno entre x e y theta=acos(pxy/(nx ny )); area=nxnysin(theta); Modicando levemente las salidas function anguloxy del laboratorio 1: function [theta,nx,ny]=anguloxy(x,y)

Podemos ahorrar l neas de c odigo y utilizar trabajo ya hecho para obtener el mismo resultado. El nuevo programa areaxy queda: function area=areaxy(x,y) [theta,nx,ny]=anguloxy(x,y); % Los test son hechos en anguloxy area=nxnysin(theta); Se almacena en el archivo areaxy.m y se ejecuta de la forma: clear; x=[1 2 3]; % Denimos primero los vectores >> y=[3 4 5];
>> >>

>>

area=areaxy(x,y)

Este programa puede usarse, sin modicarlo, para resolver el mismo problema con otros vectores. Como se vi o anteriormente, los programas tipo function pueden utilizarse dentro de otros programas. Adem as, las variables utilizadas son locales, ie, solo se utilizan dentro del programa. Para vericar ejecutar el comando whos.

UNIVERSIDAD CATOLICA DE LA SANT ISIMA CONCEPCION FACULTAD DE INGENIER IA DEPARTAMENTO DE MATEMATICA Y F ISICA APLICADA

2.3.

Ejemplos y ejercicios
, x 2 , 2 < x < 2 , x2

sin2 (x) 1 ex 1. Construya un programa que eval ue la funci on : f (x) = 1


x+1

Soluci on : Con ciclo for : function y=fun(x) n=length(x); for i=1 : n fun if x(i)<=-2 funfuny(i)=sin(x(i)) 2; fun elseif x(i) > 2&&x(i) < 2 funfun y(i)=1 exp(x(i)); fun else funfun y(i)=1/(x(i) + 1); fun end end Con ciclo while : function y=fun2(x) n=length(x); i=1; while i <= n fun if x(i)<=-2 funfuny(i)=sin(x(i)) 2; fun elseif x(i) > 2&&x(i) < 2 funfun y(i)=1 exp(x(i)); fun else funfun y(i)=1/(x(i) + 1); fun end i=i+1; end 2. Construya un programa que calcule el producto cruz solo entre dos vectores de R3 . Compare su norma con la obtnida con el programa areaxy.

Вам также может понравиться