Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Operadores relacionales
Operadores lógicos
Sentencias condicionales
Sentencias de iteración
Ficheros de función
Programa principal
Subprogramas
OPERADORES RELACIONALES
Estos son un conjunto de operadores básicos, con los cuales se construye cualquier expresión
lógica, la cual arroja el valor “1” si la expresión es verdadera, y genera el valor “0” si al expresión
es falsa. Estas expresiones nos ayudan a tomar decisiones.
Considere los siguientes valores de las variables:
>> x=4,y=5,z=8,w=-6
x= 4
y= 5
z= 8
w = -6
>>
Operador Descripción Tecla rápida Ejemplo
relacional:
Menor que Alt 60 >> x+y<8
< ans = 0
Mayor que Alt 62 >> z+y>w
> ans = 1
Menor o igual que Alt 60, alt 61 >> 2*x+3*y<=38+w
<= ans = 1
Mayor o igual que Alt 62, alt 61 >> x-z+y>=w
>= ans = 1
Igual a Alt 61, alt 61 >> 5*x-z==18+w
== ans = 1
Diferente de Alt 126, alt 61 >> x+y+z+w~=11
~= ans = 0
Notas:
01) El signo “=”, solo asigna un valor, a diferencia de el signo”==” que compara.
02) El resultado de la comparación será 1, cuando sea verdadero, y 0 cuando sea falso.
03 programación en MatLab 1
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
>> B=A>=5
>> C=[11 12 44;51 61 71;93 86 44]
>> D=C+5
>> C=[21 -12 44;55 71 71;83 96 54]
>> B==C, D~=B
>> X=B==C, Y=D~=B, Z=C<=D
Otro ejemplo, en el que vamos a comparar los elementos de una matriz con el numero más
pequeño de las maquina: eps = 2.2204e-16
>> A=[2 3 6 -8 0 5 ]
A = 2 3 6 -8 0 5
>> abs(A)<eps
ans = 0 0 0 0 1 0
>>
03 programación en MatLab 2
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 3
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
>> A
A=
1 2
0 3
>> isfinite(A)
ans =
1 1
1 1
>> isnumeric(A)
ans = 1
>> isreal(A)
ans = 1
>> isvector(A)
ans = 0
>>
OPERADORES LÓGICOS
Nom Tecla Ejemplo
Operador Descripción
bre rápida
La conjunción Alt 38 >> (6<9 & 0==7-6)+~(5>=3 & 7~=8-1)
& y ans = 1
La disyunción Alt 124 >> (4|-8)+(6&0)+(~(7>9)|(5==-8))
| o inclusiva ans = 2
03 programación en MatLab 4
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
x =-3 1 0 -Inf 0
>> f=find(x)
f =1 2 4
Una primera aplicación es extraer de x los elementos no nulos:
>> x(f)
ans = -3 1 -Inf
Podemos extraer los elementos finitos
> x(find(isfinite(x)))
ans =
-3 1 0 0
o reemplazar las componentes negativas por cero:
>> x(find(x<0))=0
x=01000
Cuando find se aplica a una matriz se hace mirandola como un vector; es decir al
vector A(:) que se obtiene -recordemos- poniendo las columnas de A una debajo
de otra. Por ejemplo
>> A=[ 4 2 16; 12 4 3], B=[12 3 1; 10 -1 7]
A=
4 2 16
12 4 3
B=
12 3 1
10 -1 7
>> C=A<B
C=
110
001
>> C(:)
ans =
1
0
1
0
0
1
>> find(A<B)
ans =
1
3
6
Otro posible uso de find con matrices es [i,j]=find(A) que devuelve vectores i y j
con los índices de las filas y columnas de A distintos de cero, respectivamente.
Asi
>> [i,j]=find(A<B)
i=
1
1
2
j=
1
03 programación en MatLab 5
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
2
3
nos dice que en las posiciones (1; 1), (1; 2) y (2; 3) están los elementos de A que
son menores que los de B.
Ejemplo de aplicación:
El vector:
T = [25 38 30 33 34 35 36 38 39 39 40 39 37 35 35 35 34 33 32 32 31 30 28 24]
Representa la temperatura en grados centígrados, por horas del dia 12 de Enero.
a) Indicar cuantas veces la temperatura fue mayor de 30 grados.
b) El número de horas que la temperatura estuvo entre 25 y 35 grados.
c) El número de horas que la temperatura no estuvo entre 20 y 30 grados.
∑𝑛 2
𝑖=1(𝑥𝑖 −𝑥̅ ) 𝑓𝑖
d) Hallar la temperatura promedio 𝑣 =
𝑛
03 programación en MatLab 6
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
∑𝑛 2
𝑖=1(𝑥𝑖 −𝑥̅ ) 𝑓𝑖
𝑣=
𝑛
Solución
03 programación en MatLab 7
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
PROGRAMACION EN MatLab
SENTENCIAS CONDICIONALES
......üï
ïï Instrucciones
......ý
ï MatLab
......ïïïþ
END
Pr ograma
......
en MatLab
03 programación en MatLab 8
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Ejercicio: Crea una función que reciba cinco números naturales distintos entre sí y
devuelva la media geométrica del mayor y del menor. La media geométrica de a y
b se define como √𝑎 ∙ 𝑏.
Solución:
Archivo: fmayorab.m Ejecución en MatLab
function mayor=fmayorab(a,b) >> mayor=fmayorab(5,7)
% fmayorab.m mayor =
7
% Devuelve el mayor de dos >> mayor=fmayorab(5,35/7)
números a,b mayor =
mayor=a; 5
if b>mayor >>
mayor=b;
end
03 programación en MatLab 9
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 10
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
En este caso la opción que se realiza en el caso que la sentencia sea verdadera es
la misma, pero en el caso de que sea falsa se realiza otra instrucción. Y luego el
programa continua.
Esquema lógico Estructura lógica
Pr ograma
......
en MatLab
IF exp. condicional
Bloque verdadero
ELSE
Bloque falso
END
Pr ograma
......
en MatLab
03 programación en MatLab 11
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Diametro 44 m
rh
16 m
h
29 m
Diametro 20 m
ìï 100p h 0 £ h £ 29
ï
SOLUCION: El volumen es igual V (h) = ïïí 4 æ3h 3
ö 4000p
ïï p çç - 47÷ ÷ - 29 < h £ 45
ïïî 3 çè 4 ÷
ø 3
Archivo: volumen.m
% programa que calcula el volumen de agua
% de un deposito cilíndrico-conico
% la entrada es el nivel del agua en m.
% La salida es el volumen de agua en m3.
h=input('indique el nivel del agua del tanque\n');
if (h<=29)
V=100*pi*h;
else
V=((4/3)*(((3*h/4)-47)^3))-(4000*pi/3);
end
fprintf('El volumen de es: %6.2f metros cubicos\n',V);
Ejecución en MatLab
>> volumen
indique el nivel del agua del tanque 20
El volumen de es: 6283.19 metros cubicos
>> volumen
indique el nivel del agua del tanque 25
El volumen de es: 7853.98 metros cubicos
>>
ìï x 0 £ x
Ejemplo 05: Hallando el valor absoluto de un numero. x = ïí
ïïî - x x < 0
Archivo: valorabs.m Ejecución en MatLab
function y=valorabs(x) >> valorabs(88)
% esta funcion calcula el valor absoluto ans = 88
% de un numero real x >> valorabs(-45)
% donde el resultado es x, si es no ans = 45
negativo >> valorabs(0)
% y es -x si es negativo ans = 0
if (x>=0) >>
y=x;
else
y=-x;
end
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opción por defecto, cuando no se cumplan las condiciones 1,2,3
bloque4
end
Donde la opción por defecto else puede ser omitida: si no está presente no se hace
nada en caso de que no se cumpla ninguna de las condiciones que se han
chequeado.
Esquema lógico Estructura Lógica
Diagrama de flujo ......Pr ograma en MatLab
if exp. condicional
......ïüïý Instrucciones
Falso
Sentencia ......ïïþ 01 MatLab
if
elseif exp. condicional
Verdadero
Falso
Sentencia ......ïüïý Instrucciones
Grupo 1 de
elseif
Instrucciones ......ïïþ 02 MatLab
Verdadero else
Grupo 3 de Grupo 2 de
......ü ïï Instrucciones
ý
Instrucciones Instrucciones ......ïïþ 03 MatLab
end
end ......Pr ograma en MatLab
03 programación en MatLab 13
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
30
20
10
-10
-20
-30
-40
-50
-60
-15 -10 -5 0 5 10 15
03 programación en MatLab 14
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 15
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Ejemplo: Escribir un programa para convertir una expresión de longitud, que puede estar en m,
dm, cm, mm, dam, hm, km, pulgada, pie, yarda. En otro número equivalente en otra unidad
indicada por el usuario.
SOLUCION:
Por cuestiones del espacio en la hoja, primero presentaremos la ejecución y luego el programa.
Ejecución en MatLab
>> cambiounidad
Introduzca el valor de la distancia que hay que convertir: 3777
Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): dm
Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): km
V=0.3777km
>> cambiounidad
Introduzca el valor de la distancia que hay que convertir: 6799
Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): ham
Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): m
Horror, La unidad de entrada o la de conversión se ha tecleado en forma incorrecta\n
>> cambiounidad
Introduzca el valor de la distancia que hay que convertir: 98888888
Introduzca la unidad actual de la distancia (m, cm, dm, mm, dam, hm, km): mm
Introduzca la nueva unidad para la distancia (m, cm, dm, mm, dam, hm, km): km
V=98.8889km
>>
Programa en MatLab
03 programación en MatLab 16
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Archivo: cambiounidad.m
Vent=input('Introduzca el valor de la distancia que
hay que convertir:\n');
UnitEnt=input('Introduzca la unidad actual de la
distancia (m, cm, dm, mm, dam, hm, km):\n','s');
UnitSal=input('Introduzca la nueva unidad para la
distancia (m, cm, dm, mm, dam, hm, km):\n','s');
error=0;
switch UnitEnt
case 'm'
Vi=Vent;
case 'cm'
Vi=Vent/100;
case 'dm'
Vi=Vent/10;
case 'mm'
Vi=Vent/1000;
case 'dam'
Vi=Vent*10;
case 'hm'
Vi=Vent*100;
case 'km'
Vi=Vent*1000;
otherwise
error=1;
end
switch UnitSal
case 'm'
Vf=Vi;
case 'cm'
Vf=100*Vi;
case 'dm'
Vf=10*Vi;
case 'mm'
Vf=1000*Vi;
case 'dam'
Vf=Vi/10;
case 'hm'
Vf=Vi/100;
case 'km'
Vf=Vi/1000;
otherwise
error=1;
end
if error==1
disp('Horror, La unidad de entrada o la de
conversión se ha tecleado en forma incorrecta\n')
else
fprintf('V=%g%s\n',Vf,UnitSal)
end
Ejemplo05: Elabore un programa que pida la edad de una persona, y visualice lo siguiente
Si 0 £ edad < 6 , mostrar: infante
Si 6 £ edad < 12 , mostrar: niño
Si 12 £ edad < 18 , mostrar: adolescente
Si 18 £ edad < 25 , mostrar: joven
Si 25 £ edad < 60 , mostrar: adulto
Si 60 £ edad , mostrar: anciano
Solución:
03 programación en MatLab 17
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 18
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
BUCLES o ITERACIONES
En ambos casos se puede salir de estos bucles, antes de que acaben con el
comando breack.
Ejemplo 02: Usando el bucle for - end, hallar la raíz cuadrada de los primeros 20
números, y presentarlos en una tabla de 20 por 2.
Ejemplo 05: En los meses de Enero a Diciembre del 2012, se registro un promedio de
lluvia mensual :
286 253 254 305 274 203 165 190 161 228 224 280
Hallar el valor promedio en el año
El numero de meses en que la temperatura estuvo debajo de la media, y en qué meses se
dio.
clear
lluvia=[286 253 254 305 274 203 165 190 161
228 224 280];
n=length(lluvia);
prom=sum(lluvia)/n;
D=zeros(1,n);
for k=1:n
D(k)=lluvia(k)>prom;
end
D
(−1)𝑘 𝑘
Ejemplo: Calcular la suma de términos de la siguiente serie: ∑𝑛
𝑘=1 2𝑘
SOLUCION:
03 programación en MatLab 20
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 21
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Archivo: cambiavector.m
% Este programa cambia los elementos de un vector.
% triplica los elementos positivos, y múltiplos de 3 ó 5
% eleva al cuadrado los negativos mayores que -10.
x=input('Ingrese un vector con elementos enteros: \n');
n=length(x);
for k=1:1:n
if x(k)>0 & ( rem(x(k),3)==0 | rem(x(k),5)==0 )
x(k)=3*x(k);
elseif x(k)<0 & x(k)>-10
x(k)=x(k)^2;
end
end
disp(x)
Ejecucion en MatLab
>> prog07
Ingrese un vector con elementos enteros:
[6 8 14 72 96 6 8 -2 0 66 -30 24]
18 8 14 216 288 18 8 4 0 198 -30 72
>>
Ejemplo: Crear una matriz de orden m por n, donde el elemento i j este dado por la expresión:
ai j = 3i - 4 j
SOLUCION:
03 programación en MatLab 22
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Programa: creamatriz.m
% Creacion de una matriz de orden mxn
% Donde el elemento i j esta dado por
% a(i,j)=3i-4j
m=input('ingrese el numero de filas de la matriz ');
n=input('ingrese el numero de columnas de la matriz ');
A=zeros(m,n);
for k=1:1:m
for l=1:1:n
A(k,l)=3*k-4*l;
end
end
A
Ejecucion en MatLab
>> creamatriz
ingrese el numero de filas de la matriz 4
ingrese el numero de columnas de la matriz 5
A=
-1 -5 -9 -13 -17
2 -2 -6 -10 -14
5 1 -3 -7 -11
8 4 0 -4 -8
>> creamatriz
ingrese el numero de filas de la matriz 5
ingrese el numero de columnas de la matriz 8
A=
-1 -5 -9 -13 -17 -21 -25 -29
2 -2 -6 -10 -14 -18 -22 -26
5 1 -3 -7 -11 -15 -19 -23
8 4 0 -4 -8 -12 -16 -20
11 7 3 -1 -5 -9 -13 -17
>> creamatriz
ingrese el numero de filas de la matriz 0
ingrese el numero de columnas de la matriz 0
A = []
03 programación en MatLab 23
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Programa: matrizpascal.m
% Programa que construya el triangulo de Pascal
% como una matriz de orden n por n.
% Donde el elemento a(1,j)=a(i,1)=1
% a(i,j)= a(i,j-1)+a(i-1,j)
% para todo i>1, j>1.
n=input('Ingrese el orden de la matriz: \n');
A=ones(n,n);
for k=2:1:n
for l=2:1:n
A(k,l)=A(k,l-1)+A(k-1,l);
end
end
disp(A)
Ejecucion en MatLab
>> matrizpascal
Ingrese el orden de la matriz:
5
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>>
Ejemplo09: Hallar los términos de la sucesión de Fibonacci hasta el término n, teniendo en cuenta
que: t(1)=1, t(2)=1, t(i)=t(i-1)+t(i-2), en todo i=desde 3 hasta n
Solución:
Programa en MatLab: progfibo.m Ejecución en MatLab
% Cálculo de los términos de la >> progfibo
sucesión de Fibonacci: Ingrese la cantidad de términos a
% F(1)=1, F(2)=1, F(n+2)=F(n+1)+F(n), mostrar:
n entero positivo 9
n=input('Ingrese la cantidad de 1 1 2 3 5 8 13 21
términos a mostrar: \n'); 34
F=zeros(n,1); >> progfibo
F(1)=1; Ingrese la cantidad de términos a
F(2)=1; mostrar:
if n==1 | n==2 -9
disp(F') El valor de n, no es el adecuado
elseif n>2 >>
for k=1:n-2
F(k+2)=F(k+1)+F(k);
end
disp(F')
else
disp('El valor de n, no es el
adecuado')
end
03 programación en MatLab 24
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Este tipo de bucle se usa cuando hay necesidad de un proceso iterativo, pero se
desconoce cuantos pasos deben hacerse, generalmente está sujeto a condiciones
que se hallan al ejecutar la solución del `problema.
En algún caso será necesario del uso de algún comando que pare el programa en
caso de que no se halle la condición pedida.
Estructura lógica
Donde la expresión condicional puede ser una expresión vectorial o matricial. Las
sentencias se siguen ejecutando mientras haya elementos distintos de cero en condición;
es decir, mientras haya algún o algunos elementos true. El bucle se termina cuando todos
los elementos de condición son false (es decir, cero).
Recomendaciones:
La expresión condicional del comando while debe incluir al menos una variable
Respecto a esta variable debe tener un valor asignado cuando se ejecute el
comando while por primera vez
La o las variables de la expresión condicional deben cambiar entre la sentencia
while y end, de otro modo se tendría un bucle infinito
Para evitar un bucle infinito se puede usar el comando break
Un bucle infinito también se puede terminar con “Ctrl + C” o “Ctrl +
break”
03 programación en MatLab 25
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 26
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Programa: trisecaintervalo.m
% Este programa divide en tres partes un intervalo
% y toma la parte intermedia, hasta que la longitud sea
menor que 0.001
a=input('Ingrese el lado izquierdo del intervalo: \n');
b=input('Ingrese el lado derecho del intervalo: \n');
if b-a > 0.001
while b-a>0.001;
a=(b+2*a)/3;
b=(a+b)/2;
end
fprintf('El lado izquierdo del nuevo intervalo es: %-3.5f
\n',a)
fprintf('El lado derecho del nuevo intervalo es: %-
3.5f\n',b)
else
fprintf('Los datos no generan un intervalo valido. &$####
\n')
end
Ejecucion en MatLab
>> trisecaintervalo
Ingrese el lado izquierdo del intervalo: 1
Ingrese el lado derecho del intervalo: 4
El lado izquierdo del nuevo intervalo es: 2.49977
El lado derecho del nuevo intervalo es: 2.50023
>> trisecaintervalo
Ingrese el lado izquierdo del intervalo: 5
Ingrese el lado derecho del intervalo: 2
Los datos no generan un intervalo valido. &$####
>>
Hallar el valor de e x , con los sumandos necesarios hasta que el ultimo sumando
sea menor que 0.000001. Además la suma no debe pasar de 30 términos, si fuese
el caso hay que indicar que se necesitan más sumandos.
Hallar con este programa: e 2 , e- 4 , e10 y e 20
SOLUCION:
03 programación en MatLab 27
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
Programa: seriexp.m
% Este programa calcula el valor de e^x con la Serie de
Taylor
% hasta que el ultimo termino sea menor que 0.00000l,
% o haya 30 términos como máximo
s=s+(x^n)/factorial(n);
n=n+1;
sn=abs((x^n)/factorial(n));
end
if n>=30
fprintf('Se necesitan mas de 30 terminos \n')
else
fprintf('El valor de exp(%f) es %-3.5f\n',x,s)
end
Ejecucion del programa
>> seriexp
Ingrese el valor de x: 2
El valor de exp(2.000000) es 7.38906
>> seriexp
Ingrese el valor de x: 21
Se necesitan mas de 30 terminos
>> seriexp
Ingrese el valor de x: 0
El valor de exp(0.000000) es 1.00000
>> seriexp
Ingrese el valor de x: 8
Se necesitan mas de 30 terminos
>> seriexp
Ingrese el valor de x: 5
El valor de exp(5.000000) es 148.41316
>>
El comando break se usa principalmente para terminar un posible bucle infinito; si esta dentro de
un bucle, pero si esta en un programa normal, termina el programa.
03 programación en MatLab 28
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
7. PROGRAMACION EN MATLAB
PROBLEMAS PROPUESTOS
1. Calcule las siguientes expresiones a mano, sin utilizar MATLAB . Utilice luego
MATLAB para comprobar que el resultado es correcto.
a) 5 8 3
b) y = 7 3 1 6 2
c) y = (7 3) 1 (6 2)
20
d) y 2 x 4 5 - 7
4
5. Calcule las siguientes expresiones a mano, sin utilizar MATLAB .Utilice luego
MATLAB para comprobar que le resultado es correcto
a) 5&-2
b) 8 216 5& 2
c) 4&0 8 410
8. Escriba un programa script que calcule las raíces reales de una función cuadrática
ax bx c 0 . Llame al fichero raicescuad . Cuando el fichero se ejecute, éste debe
2
pedir al usuario que introduzca los valores de las constantes a, b y c . Para calcular las
raíces de la ecuación , el programa calculará el discriminante D :
D=b 2 4ac
Si D 0, el programa visualizará un mensaje del tipo: “La ecuación tiene dos raíces”, y los
valores de las raíces se visualizarán en la línea siguiente.
Si D =0, el programa visualizará un mensaje del tipo: “La ecuación tiene una raíz”, y el
valor de la raíz se visualizará en la línea siguiente.
Si D 0, el programa visualizará un mensaje del tipo: “La ecuación no tiene raíces reales”.
Ejecute el fichero script en la Ventana de Comandos tres veces para calcular las
soluciones de las siguientes ecuaciones:
a) 2 x2 8x 3 0
b) 15 x 2 10 x 5 0
c) 18 x 2 12 x 2 0
10. Utilice bucles y sentencias condicionales para crear una matriz de dimensión 5 x
8, en la cual el valor de cada elemento sea igual a la raíz cuadrada de la suma de los
índices de cada elemento, siempre que el elemento no se encuentre en una columna o
fila par. El valor de un elemento que éste en una fila o columna par será igual a la suma
del cuadrado de los índices. (Los índices de un elemento de una matriz son el número
de fila y el número de columna que le corresponden.)
03 programación en MatLab 30
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
11. Escriba un programa (utilizando un bucle) que calcule la suma de los m primeros
términos de la serie:
m
1
(1)
n 0
n
2n 1
(n 0,1, 2,..., m)
12. Sea el vector x 15 -6 0 8 -2 5 4 -10 0,5 3 . Escriba un programa que utilice
sentencias condicionales y bucles para calcular la suma de los elementos positivos del
vector x .
13. Escriba un programa script que encuentre el menor número entero impar que sea
divisible por 3, y cuyo cubo sea mayor que 4000. Utilice un bucle que comience en 1 y se
detenga cuando encuentre el número que cumpla las condiciones anteriores. Finalmente
el programa visualizará el mensaje: “El número pedido es: ” , y visualizará
seguidamente el número calculado.
14. Escriba una función que ordene los elementos de un vector de cualquier longitud,
de mayor a menor. Utilice la siguiente línea de definición de función: y = ordenar (x) . La
entrada de la función será un vector x de cualquier longitud, y la salida y será un vector
que contendrá los elementos de x en orden descendente. No se puede utilizar la función
predefinida de MATLAB sort para este ejercicio. Cree su propia función y pruébela con
un vector de 14 elementos (enteros) generados aleatoriamente y distribuidos entre -30 y
30. Utilice la función rand de MATLAB para generar el vector inicial.
15. Escriba una función que ordene los elementos de una matriz. Utilice la siguiente
línea de definición de función: B = ordenarmatriz (A) , donde A será una matriz de
cualquier tamaño, y B será otra matriz del mismo tamaño con los elementos de A
ordenados de forma ascendente, fila por fila. De esta forma, los elementos B (1,1) y B (
m, n ) serán, respectivamente, los elementos menor y mayor de la matriz ordenada.
Pruebe posteriormente está función en una matriz de dimensión 4 x 7, con los números
enteros generados aleatoriamente y distribuidos entre -30 y 30. Utilice la función rand
de MATLAB para generar la matriz inicial.
16. Escriba un programa (fichero script) que calcule el coste de enviar un paquete en
función de la siguiente tabla de precios:
03 programación en MatLab 31
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
17. Sea el vector x 1: 50 . Escriba un programa en un fichero script que borre del
vector x aquellos elementos que son divisibles por 3, 4 ó 5. Al final el programa debe
mostrar el vector resultante.
18. Escriba una función MATLAB que calcule las coordenadas polares de un punto
correspondiente a un sistema de coordenadas cartesianas, en un plano de dos
dimensiones. Utilice la siguiente línea de definición de función para ello:
theta radio = CartesianoApolar (x,y) Los argumentos de entrada serán las
coordenadas cartesianas x e y del punto, y los argumentos de salida serán el ángulo θ
y la distancia radial (radio) al punto en cuestión. El ángulo θ vendrá dado en grados, y su
medida será relativa al eje x positivo, de tal forma que sea un número positivo en los
cuadrantes І, ІІ y ІІІ, y un número negativo en el cuadrante ІV. Utilice posteriormente
esta función para calcular las coordenadas polares de los puntos (15, 3), (-7, 12), (-17, -
9) y (10, -6,5).
03 programación en MatLab 32
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
19. Un deposito de gasóleo tiene la forma de un cilindro vertical rematado por sus dos
extremos hemisféricos, tal y como se muestra en la figura adjunta. El radio del cilindro y
de los hemisferios es r 40 , y la longitud de la parte cilíndrica es 1,2 metros.
20. La velocidad en función del tiempo, de una partícula que se mueve a lo largo de
una línea recta, se representa en el gráfico adjunto y viene dada por las siguientes
ecuaciones:
1, 4t 0 t 10 s
14 5sen( t 10 ) 10 t 25 s
10
v( x)
9 25 t 35 s
9
9 t 35 35 t 40 s
5
Escriba dos funciones MATLAB: una de ellas debe calcular la velocidad de la partícula en
un instante t (utilice la siguiente definición de función v = velocidad (t) , y la otra
función deberá calcular la aceleración de la partícula también en el instante t (utilice
para ello la siguiente definición de función: a = aceleración (t)) . Escriba posteriormente
un programa, en un fichero script, que represente las gráficas de la velocidad y la
aceleración, en función del tiempo, de una partícula en movimiento (las dos gráficas
deben aparecer en la misma ventana gráfica). Para ello, dentro del fichero script, cree
03 programación en MatLab 33
03. PROGRAMACION CON MATLAB Mg. Amado Malca Villalobos
03 programación en MatLab 34