Inicialmente, se sugiere dejar activa únicamente la ventana de comandos, cerrando las otras
ventanas con el botón x.
El símbolo >> indica que el programa está listo para recibir sus instrucciones.
Al final de cada ejemplo hemos incluido con letra azul una breve explicación.
Por supuesto, usted no tiene que escribir en el computador estas explicaciones.
ans =
x=
x=
y=
5.9260 respuesta mostrada por MATLAB
x=
y=
z=
7.3891
2x + 3y = 4
5x – 2y = 6
Resuelva el sistema:
CÁLCULO NUMÉRICO
>> x
>> format rat notación racional (fracciones)
>> x
>> x
>> x
>> x
>> x
>> x
>> x
>> format hex formato hexadecimal
>> x
Operadores aritméticos
/ es división a la derecha
\ es división a la izquierda
Funciones matemáticas
>> x=sin(3)+3*exp(2)
== representa al símbolo =
~= representa al símbolo ¹
>> t=sin(2) < 0.8 & log(2) > 0.5 el resultado es un valor lógico (0 o 1)
>> 2/0
Inf es el símbolo ¥
>> 0/0
>> z=3+2i;
Comandos especiales
>> clock
Vectores y Matrices
>> x=[3, 5, 2, 0]
>> y=2*x puede realizar operaciones escalares
>> a(2,1) manejo de los componentes de una matriz con índices numerados desde 1: (fila,
columna)
>> x=[7, 3]
>> b=[5, 6]
Matrices especiales
entre 1 y 10
Editor de matrices
hoja electrónica, con el cual puede modificar con facilidad las dimensiones y
el contenido de vectores y matrices.
>> s
>> grid on
>> v=cumprod(a)
>> v=mean(a)
>> v=median(a)
>> t=std(x) desviación estándar
>> v=std(a)
>> v=sort(a)
>> bar(a)
>> c cociente
>> r residuo
>> syms y;
>> t=3;
>> b=double(b)
>> f='exp(x)-pi*x';
>> x=solve(f)
x=
1.6385
x=
x=
>> g='x*exp(-x)';
solución analítica y gráfico de una EDO de primer orden con una condición en el inicio
>> y=dsolve('Dy=(x-y)/x','y(0)=0','x')
>> ezplot(y,0,2);
>> grid on
>> y=dsolve('D2y+Dy+2*y-x-3=0','y(0)=0,Dy(0)=1','x')
>> ezplot(y,0,2);
>> y=dsolve('D2y-Dy+2*y-5*x-3=0','y(0)=0,y(1)=2','x')
>> ezplot(y,0,2);
>> grid on
>> f=’2*sin(x)*exp(x)’;
>> ezplot(f,-2,2)
Ejercicio: Escriba directamente las instrucciones necesarias para encontrar el valor del radio x
de un cilindro de 1000 cc de capacidad, de tal manera que el valor del área sea el mínimo:
Primer enfoque:
x: radio, h: altura
>> f='2*pi*x*1000/(pi*x^2)+2*pi*x^2';
>> ezplot(f,0,10)
>> grid
>> x=fminbnd(f,4,6)
x=
5.4193
>> area=eval(f)
area =
553.5810
Segundo enfoque
x: radio, h: altura
>> g=diff(f)
g=
-2000/x^2+4*pi*x
>> x=fzero(char(g),[4,6])
x=
5.4193
>> x=solve(g)
x=
[ 5/pi*4^(1/3)*(pi^2)^(1/3)]
[ -5/2/pi*4^(1/3)*(pi^2)^(1/3)+5/2*i*3^(1/2)/pi*4^(1/3)*(pi^2)^(1/3)]
[ -5/2/pi*4^(1/3)*(pi^2)^(1/3)-5/2*i*3^(1/2)/pi*4^(1/3)*(pi^2)^(1/3)]
>> x=double(x)
x=
5.4193
-2.7096 + 4.6932i
-2.7096 - 4.6932i
GRAFICACIÓN
>> ezplot(f, [0, 2]) función básica para graficar f en un dominio dado
>> axis(c)
>> x=[0:0.1:10};
>> y=exp(x);
>> semilogy(x,y)
>> grid on
>> a=0:0.01:2*pi;
>> r=sin(3*a); 'rosa' de 3 pétalos
>> f='(x-2)^2+(y-3)^2-5';
>> ezplot(g,[-1,5,0,6])
Editor de gráficos
Después que el gráfico ha sido realizado puede utilizar las facilidades del editor de gráficos
para cambiar las propiedades de las figuras: color, tipo, etc. También puede realizar
estadísticas básicas y ajuste de curvas. Adicionalmente puede insertar directamente en el
gráfico texto, líneas, flechas, rótulos, etc.
Para habilitar el editor de gráficos seleccione el botón tools en la barra de opciones del gráfico
y luego elija edit plot. Para realizar estadísticas básicas y ajuste de curvas, elija
respectivamente Data Statistics y Basic Fitting
>> y=-3:0.1:3;
>> [u,v]=meshgrid(x,y); u, v: matrices q' contienen cada par ordenado x,y
Adicionalmente puede usar las opciones del editor de gráficos para editar la figura, rotar,
cambiar la perspectiva, insertar títulos, etc.
Archivos de comandos
En la ventana de edición escriba los comandos y almacénelos en un archivo con algún nombre.
Puede incluir comentarios con el símbolo %
Ej. Escriba en la ventana de edición las instrucciones para graficar sen(x) entre 0 y 2p
x=0:0.1:2*pi;
y=sin(x);
plot(x,y);
grid on
>> prueba
En el archivo abierto en la ventana de edición haga los cambios y guárdelo nuevamente con el
mismo nombre.
Ej.
Ej.
x=exp(2);
disp(x);
Ej.
x=2^7;
y=sqrt(pi);
disk([x, y]);
Ej.
x=2^7;
y=sqrt(pi);
fprintf('%d %f’',x,y);
Ej.
x=2^7;
y=sqrt(pi);
fprintf('%5d %8.3f’',x,y);
if condición if condición
instrucciones instrucciones
end else
instrucciones
end
dos datos:
if a>b
m=a;
else
m=b;
end
disp(m);
>> prueba
x=input('dato ');
switch x
case 1,
y=3;
case {2,3,4},
y=2*x+1;
otherwise
y=exp(x);
end
disp(y);
while condición
instrucciones
end
s=0;
while n>0
s=s+1/n;
n=n-1;
end
disp(s);
Almacénelo con algún nombre. Ejemplo prueba3
>> prueba3
instrucciones
end
s=0;
for i=1:n
s=s+1/i;
end
disp(s);
Almacénelo con algún nombre. Ejemplo prueba4
>> prueba4
Ej. Lea n datos. Calcule y muestre la raíz cuadrada. Pero si entra un valor negativo, muestre un
mensaje y termine
for i=1:n
if x<0
disp(‘Error’);
break;
else
r=sqrt(x);
disp([x,r]);
end
end
Funciones en MATLAB
El mecanismo usual para trasmitir datos a las funciones es mediante una lista de variables que
se denominan parámetros. Sin embargo, a diferencia de los programas, las variables que se
usan dentro de una función, no están disponibles fuera de ella, a menos que se use una
declaración explícita y que se verá mas adelante.
instrucciones
El uso de una función es similar al uso de las funciones comunes de MATLAB. El nombre debe
coincidir con el nombre asignado, aunque los parámetros pueden tener nombres diferentes,
pero su uso debe ser coherente.
Ej. Escriba una función para elegir el mayor entre dos números
function m = mayor(a, b)
if a>b
m = a;
else
m = b;
end
m es la variable que entrega el resultado
>> a = exp(pi);
>> b = pi^exp(1);
>> m = mayor(a, b)
>> x = exp(pi);
>> y = pi^exp(1);
>> t = mayor(x, y)
Ej. Escriba una función que reciba un número y determine si es un número primo. El resultado
que entrega la función será 1 o 0 según corresponda;
function p = primo( x )
c = 0;
for d = 1: x
if mod(x, d) == 0
c = c + 1;
end
end
if c > 2
p = 0;
else
p = 1;
end
>> x = 25;
>> p = primo(x)
>> x = 43;
>> p = primo(x)
Escriba en una nueva ventana de edición un programa que use la función primo para encontrar
todos los números primos menores a 20:
for x = 1: 20
if primo(x) == 1
disp(x);
end
end
Almacene su programa en el disco con el nombre prueba
>> prueba
11
13
17
19
Ejercicios.-
Escriba una función que reciba 3 números y entregue como resultado el mayor con el siguiente
encabezado:
function m=mayor(a,b,c)
Escriba un programa que lea las tres dimensiones de un bloque, calcule el valor de las
diagonales de sus caras y use la función anterior para encontrar el valor de la mayor diagonal
Escriba una función que muestre cual es el valor de la suma de los cubos de los primeros n
números naturales con el siguiente encabezado:
function s=suma(n)
Escriba n programa que use la función suma y la función primo anterior para determinar si las
suma de los cubos de los 7 primeros números naturales es un número primo
Ej. Escriba una función que entregue el área y el volumen de un cilindro dados su radio (r) y su
altura (h)
vol = pi*r^2*h;
>> r = 5;
>> h = 12;
>> a
>> v
Las variables definidas dentro de una función son locales, es decir que a diferencia de los
programas, no son visibles fuera de la función
function x=fn(a, b)
c = a + b;
x = 2*c;
Almacene con el nombre fn y úsela desde la ventana de comandos:
>> a = 3;
>> b = 5;
>> t = fn(a, b)
c = a + b;
x = 2*c;
disp(x);
ingrese dato 5
>> c
Es posible hacer que las variables de una función sean visibles fuera de su ámbito, mediante la
declaración global
function x=fn(a, b)
global c;
c = a + b;
x = 2*c;
>> b = 5;
>> t = fn(a, b)
function n=entero
x=0;
while x==0
x=1;
end
end
function menú
disp(‘1) ingresar’);
disp(‘2) borrar’);
disp(‘3) salir’);
>> menu
Ej. Escriba una función que reciba un vector y entregue el promedio del valor de sus
elementos.
function p=prom(x)
n=length(x);
s=0;
for i=1:n
s=s+x(i);
end
p=s/n;
Para usar esta función debe definir el vector antes de llamar a la función.
>> t=prom(x)
Ej. Escriba una función que entregue un vector de longitud n conteniendo números aleatorios
enteros con valor entre 1 y 6:
function d=dados(n)
for i=1:n
d(i)=fix(rand*6+1);
end
>> t=dados(5)
Ej. Escriba una función que reciba dos vectores A, B y entregue un tercer vector que contenga
los elementos que están en ambos vectores:
function C=interseccion(A,B)
n=length(A);
m=length(B);
k=1;
for i=1:n
for j=1:m
if A(i) == B(j)
C(k) = A(i);
k = k + 1;
end
end
end
Para usar esta función debe definir los vectores que entran. Recuerde que pueden tener
nombres diferentes a los que usa la función:
>> C=interseccion(A,B)
Si la salida de una función es antes del final, puede usar el comando return
Ej. Escriba una función para determinar si los elementos de un vector están en orden
creciente:
function t=orden(x)
t=0;
n=length(x);
for i=1:n-1
return;
end
end
t=1;
Ej. Escriba una función para eliminar espacios intermedios de una frase:
function x=compactar(f)
n=length(f);
x='';
for i=1:n
x = strcat(x, f(i));
end
end
Ahora escriba un programa que lea una frase, use la función compactar para eliminar los
espacios intermedios, y luego muestre un mensaje en caso de que sea simétrica: sus
caracteres opuestos son iguales
f=compactar(f);
n=length(f);
sim=1;
for i=1:n/2
if f(i) ~= f(n-i+1)
sim=0;
end
end
if sim == 1
else
end
Probamos este programa suponiendo que lo hemos almacenado con el nombre prueba:
>> prueba
Ej. Use la siguiente definición recursiva para calcular el máximo común divisor entre dos
números enteros:
function c=mcd(a, b)
if a>b
c=mcd(a-b, b);
else
if b>a
c=mcd(a, b-a);
else
c=a;
end
end
Use la función:
Ej.
if d<0
error('valor incorrecto');
end
----------------------------------------------------------------------------------
>> x=4:0.1:10;
>> p=normpdf(x,7,1);
>> plot(x,p)
normcdf: Distribución de probabilidad normal acumulada
Calcule la probabilidad que una variable aleatoria distribuida normalmente, con media 10 y
desviación estándar 2, tenga un valor entre 11.4 y 13.5
p=
0.2019
Encuentre un intervalo de 99% de probabilidad para una variable con distribución normal con
media 2 y desviación estándar 1
>> x=norminv(p,2,0.5)
x=
0.7121 3.2879
Para chequear
>> p=normcdf(3.2879,2,0.5)-normcdf(0.7121,2,0.5)
p=
0.9900
Prueba de Hipótesis
[h,p,c]=ztest(x,u,sn);
>> [h,p,c]=ztest(2,2.05,0.04)
h=
p=
0.2113
c=
1.9216 2.0784
Escriba y almacene una función para obtener el polinomio de interpolación en forma analítica
con la fórmula de Lagrange:
function p=Lagrange(x,y)
p=0;
syms t;
n=length(x);
for i=1:n
L=1;
for j=1:n
if i~=j
L=L*(t-x(j))/(x(i)-x(j));
end
end
p=p+L*y(i);
p=simplify(p);
end
Use la función desde la línea de comandos
>> p=Lagrange(x,y)
>> ezplot(p,x(1),x(5))
El siguiente ejemplo completo es una referencia para conocer las instrucciones de MATLAB
para manejo de archivos
4) Salir
e codigo de estudiante
m codigo de materia
c calificacion
function control
global arch;
clc;
while op~=4
op=menu;
switch op
case 1, ingresar;
case 2, consultae;
case 3, consultam;
end
end
function op=menu
clc;
disp('1) ingreso');
disp('4) salir');
function ingresar
global arch;
f=fopen(arch,'a+');
c=input('calificacion ');
fprintf(f,'%5d%5d%3d',e,m,c);
fclose(f);
function consultae
global arch;
f=fopen(arch,'r');
if f<0
pause;
return;
end
while ~feof(f)
e=fscanf(f,'%d',1);
m=fscanf(f,'%d',1);
c=fscanf(f,'%d',1);
if e==x
end
pause;
fclose(f);
function consultam
global arch;
f=fopen(arch,'r');
if f<0
pause;
return;
end
while ~feof(f)
e=fscanf(f,'%d',1);
m=fscanf(f,'%d',1);
c=fscanf(f,'%d',1);
if m==x
end
end
pause;
fclose(f);
En Excel cree la tabla y almacénela con formato tipo texto delimitado con tabulaciones. Elija
algún nombre. Ejemplo T.txt
En MATLAB cargue la tabla T y úsela como una matriz:
>> A=T
En MATLAB cree una matriz y almacénela con el comando save con el siguiente formato. Elija
los nombres. Ejemplo