0% encontró este documento útil (0 votos)
488 vistas12 páginas

03 Practica Programacion Matlab

Este documento resume los conceptos básicos de programación con MATLAB, incluyendo operadores relacionales, lógicos y sentencias condicionales. Explica que un programa MATLAB es una secuencia de instrucciones ordenadas que le indican al programa qué hacer. Luego describe operadores como <, >, ==, ~= y cómo estos generan valores de verdad 1/0. También cubre operadores lógicos como &, |, ~ y funciones como any() y all().

Cargado por

Juan Ruiz Tello
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
488 vistas12 páginas

03 Practica Programacion Matlab

Este documento resume los conceptos básicos de programación con MATLAB, incluyendo operadores relacionales, lógicos y sentencias condicionales. Explica que un programa MATLAB es una secuencia de instrucciones ordenadas que le indican al programa qué hacer. Luego describe operadores como <, >, ==, ~= y cómo estos generan valores de verdad 1/0. También cubre operadores lógicos como &, |, ~ y funciones como any() y all().

Cargado por

Juan Ruiz Tello
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

03.

PROGRAMACION CON MATLAB Amado Malca Villalobos

PROGRAMACION CON MatLab

Un programa en MatLab, es una secuencia de instrucciones lógicamente ordenadas, que le indica al programa en forma
detallada todo lo que debe hacer. Si le indicamos algo que no es coherente matemáticamente, obviamente generara un
error.
En un programa por lo general hay que tomar algunas ‘decisiones’, que la asume el computador, para ello hay que darle la
orden adecuada. Así vamos a tener diferentes tipos de instrucciones:

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
>>
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.

Ejemplos: Ejecute los siguientes comandos, y analize el resultado:


>> (4>9)+(6==8-2)+(8+5~=13)+(6<=16)
>> (6<9+8)+(1+6>=8-2)+(7-7+8~=17)+(6>=56)
>> (56==78-21)-(16-45~=6*7+9)-(8^2+5==72/6)+3*(6<=16)
>> [1 5 8 9 80]>[2 6 7 28 6]
>> A=[1 2 4;5 6 7;9 8 4]
>> A>=5
>> 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

1
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
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 ]
>> abs(A)<eps

En MATLAB los operadores relacionales pueden aplicarse a vectores y matrices, y eso hace que tengan un significado
especial. Por ejemplo, dada una matriz A la comparacion abs(A)<eps genera una matriz de 0's y 1's con el mismo
tamaño de A. El elemento (i; j) de dicha matriz es 1 si |Aij| < eps, siendo eps el epsilon de la maquina (=2.204e-16).
>> A=[-1 2 0; 0 -1 -3; 1 -1 0]
>> B=abs(A)<eps

La sentencia any(abs(A)<eps) genera un vector de 0's y 1's; 0 si la correspondiente columna es cero y 1 en


caso contrario. Es decir, any responde true si algún elemento no es cero y false si todos son cero.
>> any(B)
Y la sentencia any(any(abs(A)<eps)) produce un 0 (i.e. false) si todos los elementos de any(B) son cero y 1
(true) en caso contrario.
>> any(any(B))
Así pues, la sentencia any(any(abs(A)<eps)) se puede utilizar como una condición. Será verdadera si y solo si
algún elemento de A es, en modulo, más pequeño que eps. En caso contrario es falsa.
Hay un operador lógico similar: all. Responde true si todos los elementos del vector son distintos de cero; en
caso contrario, responde false. Con la matriz A de más arriba:
>> all(A)
En efecto, la _unica columna de A con todos sus elementos distintos de cero es la segunda. Pero como
ninguna columna de A tiene todos sus elementos menores que eps:
>> all(abs(A)<eps)

Vemos en estos ejemplos que al igual que en otros lenguajes de programación, si una comparación se cumple
el resultado es 1 (true), mientras que si no se cumple es 0 (false). Recíprocamente, cualquier valor distinto de
cero es considerado como true y el cero equivale a false. Cuando los operadores relacionales de MATLAB se
aplican a dos matrices o vectores del mismo tamaño, la comparación se realiza elemento a elemento, y el
resultado es otra matriz de unos y ceros del mismo tamaño, que recoge el resultado de cada comparación
entre elementos. Por ejemplo:

>> A=[1 2;0 3]; B=[4 2;1 5];


>> A==B
>> A~=B
>> A>2
Para saber si dos matrices son iguales, se puede usar la expresión isequal(A,B)
>> isequal(A,B)
ans = 0
La expresión isequal(A,B) es equivalente a all(all(A==B)). Por otra parte, isequal es una de las muchas
funciones lógicas que empiezan por is. He aqui una selección de ellas. Para obtener un listado completo
escribe doc is tras el prompt de MATLAB

2
03. PROGRAMACION CON MATLAB Amado Malca Villalobos

ischar verdadero si la entrada es un vector de caracteres


isempty verdadero si la entrada es un vector vacio
isequal verdadero si los vectores son iguales
isfinite detecta los elementos finitos de un vector
isfloat verdadero si el vector es de elementos en coma flotante
isinf detecta los elementos infinitos de un vector
isinteger verdadero si el vector es de números enteros
isnan detecta los elementos que son NaN en un vector
isnumeric verdadero si el vector es de números (no de caracteres)
isprime detecta los números primos en un vector
isreal verdadero si todos los números del vector son reales
isvector verdadero si se trata de un vector

Algunos ejemplos adicionales con la matriz A de más arriba


>> A
>> isfinite(A)
>> isnumeric(A)
>> isreal(A)
>> isvector(A)

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
La negacion Alt 126 >> ~0+~5+~(-7)
~ no
ans = 1
Verdad si cualquiera de los
any
elementos de un vector es no cero
Verdad si todos los elementos de un
all
vector son no cero

Algunos ejemplos
>> x=[-1 1 1]; y=[ 1 2 -3];
>> x>0, y>0
>> x>0 & y>0
>> x>0 | y>0
>> xor(x>0,y>0)
>> any(x>0)
>> all(x>0)

Para terminar con los operadores lógicos estudiamos otro comando muy útil: find. Este comando devuelve los
indices (los lugares que ocupan) los elementos no nulos de un vector. Por ejemplo
>> x=[-3 1 0 -inf 0]
>> f=find(x)
Una primera aplicación es extraer de x los elementos no nulos:
>> x(f)
Podemos extraer los elementos finitos
> x(find(isfinite(x)))
o reemplazar las componentes negativas por cero:
>> x(find(x<0))=0
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]
3
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
or(a,b) a Úb La disyunción inclusiva >> or(4>8,33~=9+7)
.not(a) ~a La negacion >> not(4>8 | 33~=9+7)
xor(a,b) aVb La disyunción exclusiva >> xor(4>8,33~=9+7)
Cuantificador universal >> all([4 5 7 9])
all(A) "A Si todos son no nulos el valor es 1. >> all([4 5 7 9 0])
Cuantificador particular >> any([4 5 7 9 0])
any(A) $A Si algún elemento es no nulo el >> any([0 0 0 0 0 0 0])
valor es 1 >> any([0 0 0 0 0 0 6])
Busca los elementos no nulos, y los enumera, >> find([7 6 0 -4;5 -1 3
find(A)
indicando el lugar donde se hallan
Busca los elementos mayores que el valor d, e >> find([7 6 0 -4;5 -1 3
find(A>d)
indica el lugar donde se encuentran. 0;0 2 9 0]>5)

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 𝑣 =
𝑛
∑𝑛 2
𝑖=1(𝑥𝑖 −𝑥̅ ) 𝑓𝑖
e) Hallar la varianza, y desviación estándar de los datos, con: 𝑣 =
𝑛

PROGRAMACION EN MatLab

Para la estructura de programación en MATLAB se requiere conocer por lo menos


los siguientes comandos:
END : Determina hasta cual orden llega el efecto de if, for, y while. (Para ejemplos de su uso ver if, while y for)
IF: Verifica si se cumple cierta condición, y de acuerdo a si se cumple o no realiza la acción que se desee.
WHILE: Realiza una parte del programa mientras se cumpla alguna condición.
FOR: Muy parecido al While, pero utiliza un contador, es útil si se quiere repetir una parte del programa un número
determinado de veces.
CLEAR: Borra todas las variables de la memoria. Es recomendable usarlo al principio de todos los programas.
(simplemente escriba clear; al comienzo del programa)
PLOT: Sirve para obtener resultados gráficos en 2D.
DISP: Sirve para escribir texto de salida o vectores. de resultados.
INPUT: Se utiliza para que el programa pida valores de variables mientras se ejecuta.

SENTENCIAS CONDICIONALES

Estructura para una sola alternativa


Sentencia Condicional: if – end
La forma más simple de una bifurcación del tipo if . . . end es la siguiente
if condición
Sentencias
end
Aquí se ejecuta un solo conjunto de instrucciones

4
03. PROGRAMACION CON MATLAB Amado Malca Villalobos

Esquema lógico Estructura lógica


Pr ograma
......
en MatLab
IF exp. condicional

......üï
ïï Instrucciones
......ý
ï MatLab
......ïïïþ

END
Pr ograma
......
en MatLab

Ejemplo01: Dados dos números a y b, supuestamente diferentes entre si. Indicar el mayor de ellos.

Ejercicio02: 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 √𝑎 ∙ 𝑏.
Ejemplo 03: Decidir si un numero entero positivo ingresado por la ventana de comandos es múltiplo de 3 o de 5.
Ejemplo04: Un trabajador tiene una remuneración básica como vendedor de 1 200 nuevos soles, pero si las ventas en el
mes son mayores a 50 000, tiene una bonificación adicional del 1% sobre la diferencia. Indicar el salario para diferentes
casos de ventas.

Estructura para dos alternativas


Sentencia Condicional: if – else - end
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

Ejemplo 05: Determinar si un numero entero positivo es par o impar

Ejemplo 06: Se necesita calcular el volumen de agua en un tanque, con la forma que se indica en el grafico

5
03. PROGRAMACION CON MATLAB 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
ìï x 0 £ x
Ejemplo 07: Hallando el valor absoluto de un numero. x = ïí
ïïî - x x < 0

Estructura con multiples alternativas


SENTENCIA CONDICIONAL: IF – ELSEIF – ELSEIF - …. .ELSE - END
Aquí la ventaja es que se pueden ejecutar tres o más grupos de instrucciones en forma disyuntiva, es decir en forma
independiente.
if condicion1
bloque1
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

Ejemplo08: Determinar si un numero entero positivo es par o impar, con un enfoque: : if – elseif – else - end

6
03. PROGRAMACION CON MATLAB Amado Malca Villalobos

Ejemplo09: Graficar la función


𝑥 2 + 6𝑥 − 8, −15 ≤ 𝑥 < 0
𝑓𝑝𝑎𝑟𝑡𝑒𝑠(𝑥) = { 2𝑥 + 6, 0≤𝑥<5
4 − 𝑎𝑏𝑠(𝑥 − 10), 5 ≤ 𝑥 ≤ 15

ESTRUCTURA DE MULTILE SELECCION


Sentencia: switch-case

Es otra estructura para el control de flujo de un programa. Esta sentencia proporciona un mecanismo para escoger y
ejecutar un grupo de instrucciones de entre varios grupos posibles.
Estructura lógica

......Pr ograma en MatLab


switch exp resion
case valor 1
...... ü
ïï
ý Grupo 1 de instrucciones
...... ïïþ
case valor 2
...... ü ïï
ý Grupo 2 de instrucciones
...... ïïþ
case valor 3
...... ü
ïï
ý Grupo 3 de instrucciones
...... ïïþ
otherwise
...... ü ïï
ý Grupo 4 de instrucciones
...... ïïþ
end
......Pr ograma en MatLab

¿Cómo funciona la sentencia switch-case?


El valor de la expresión del switch se compara con los valores de cada comando case. Si se encuentra una coincidencia,
entonces se ejecutan las instrucciones que siguen a dicho comando case (solo un grupo de instrucciones).
Si hay más de una coincidencia, solo se atenderá a la primera que se encuentra.
Si no se encuentran coincidencias se ejecutan las instrucciones que siguen al comando otherwise, si este ha sido declarado
(es opcional).
Si no se encuentran coincidencias y no está declarado el comando otherwise, entonces no se ejecutara ninguna instrucción
o grupo de instrucciones.
Una sentencia case puede tener más de un valor con el que establecer coincidencias. Para declararlos solo es necesario
ponerlos a continuación, uno detrás del otro, entre llaves y separados por comas, de la forma: {valor1, valor2, valor3, . . .
}. En este caso al tener más de un valor, el grupo de instrucciones correspondientes al case se ejecutara siempre que al
menos haya coincidencia con alguno de los valores indicados.

Ejemplo10: Decidir de un conjunto de notas de 0 a 20, en forma de un vector, y luego indicar:


a) cuantas están entre 0 y 10 inclusive.
b) Cuantas están entre 11 y 13 inclusive.
c) Cuantas están entre 14 y 17 inclusive.

7
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
d) Cuantas están entre 18 y 20 inclusive.

Ejemplo11: 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.

Ejemplo12: 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

Ejemplo13: Ingrese un entero y clasifíquelo como un múltiplo de 5 mas algún residuo.

BUCLES o ITERACIONES
Los bucles o iteraciones se usan para controlar el flujo de un programa. En un bucle, la ejecución de uno o varios
comandos se repite varias veces consecutivamente. Cada una de estas repeticiones se denomina paso o iteración.
En MatLab tenemos definido dos tipos de bucle:

Bucle for-end: el numero de iteraciones se define al comienzo del bucle.

Bucle while-end: El numero de iteraciones no se conoce al inicio del bucle, depende de que se cumpla o no alguna
condición.

En ambos casos se puede salir de estos bucles, antes de que acaben con el comando breack.

BUCLES DEL TIPO FOR-END


Estructura Lógica
for k = f : s :t
k: variable índice del bucle
....ü
ïï Comandos f: valor inicial de k
ý
....ïïþ en MatLab s: incremento del valor k, por defecto 1
t: valor límite de la variable k
end

Ejemplo14: Sumar los 50 primeros números enteros positivos múltiplos de 7.


Solución:

Ejemplo 15: 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 16: 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.
Ejemplo 17: Por ejemplo, para sumar los 25 primeros términos de la serie 1/n:
k
n
(- 1) k
Ejemplo18: Calcular la suma de términos de la siguiente serie: å
k= 1 2k

8
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
k
(- 1) x 2 k + 1
¥

Ejemplo19: La función seno se puede aproximar usando la serie de Taylor. Como sigue: sen( x) = å
k = 1 (2k + 1)!

, donde x esta en radianes


Ejemplo20: Ahora vamos a considerar el problema de cambiar los elementos de un vector bajo ciertas condiciones.
El programa multiplica por tres los elementos del vector que sean positivos, y múltiplos de 3 ó 5; y eleva al cuadrado los
negativos mayores que -10.

Ejemplo21: Crear una matriz de orden m por n, donde el elemento i j este dado por la expresión:
ai j = 3i - 4 j
Ejemplo22: Construya una matriz de orden mxn, donde se tenga que
a(i,j)=3*i+j, si i>j; a(i,j)=-2*i+3*j+1, si i<j ; a(i,i)=i^2, si i=j

Ejemplo23: 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.
Ejemplo24: 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:

BUCLES DEL TIPO WHILE - END


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
while exp resion _ condicional
....ü
ïï Instrucciones
ý
....ïïþ de MatLab
end

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”

Ejemplo25: En el siguiente ejemplo se ejecutan una serie de operaciones sobre un cierto número n mientras este se
mantenga mayor que 1. Concretamente, si n es par se divide por 2 y si es impar se multiplica por 3 y se le suma 1:
¿Crees que este proceso tiene fin cualquiera que sea el valor de n? (Conjetura de Collatz, misterio de Siracusa, problema de
Kakutani, algoritmo de Hasse o problema de Ulam).

Ejemplo26: A una variable x se le incrementa su valor inicial en 7, mientras que esta sea menor de 200.

Ejemplo27: Elaborar un programa que divida en tres partes un intervalo, y tome la parte intermedia hasta que la longitud
sea menor que 0.001
9
03. PROGRAMACION CON MATLAB Amado Malca Villalobos

Ejemplo28: La función exponencial al ser expresada como una serie de Taylor, queda como sigue:
¥
xn x 2 x3 x 4 x5
ex = å
n= 0 n!
= 1+ x + + + +
2! 3! 4! 5!
+L
x
Hallar el valor de e , 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

LOS COMANDOS BREAK Y CONTINUE


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.
El comando “continue” lo que hace es terminar la iteración de un bucle y pasar a la siguiente iteración.

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

2.Sean a = 10 y b = 6. Calcule las siguientes expresiones a mano, sin utilizar MATLAB. Utilice luego MATLAB para comprobar que
el resultado es correcto.

 b
a) y  a  b  b
b
b) y  a  b  y  a   b  
c) 2  2
3.Sean v   4  2  1 5 0 1  3 8 2 y w  0 2 1 -1 0 -2 4 3 2 . Calcule las siguientes expresiones a mano sin utilizar
MATLAB. Utilice luego MATLAB para comprobar que el resultado es correcto.
a) v  w
b) w v

4.A partir de los vectores v y w del ejercicio anterior, utilice operadores relacionados para crear un vector compuesto por los
elementos de w que sean mayores que los elementos de v

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
6.La temperatura máxima diaria (en °F) en Nueva York y Anchorage, Alaska, durante el mes de enero de 2001 vienen dadas en los
siguientes vectores (datos tomados del Ministerio Nacional de Meteorología y Oceanografía de Estados Unidos).
TNY = 31 26 30 33 33 39 41 41 34 33 45 42 36 39 TANC = 37 24 28 25 21 28 46 37 36 20 24 31 34 40
37 45 43 36 41 37 32 32 35 42 38 33 40 37 36 51 50 43 36 34 41 42 35 38 36 35 33 42 42 37 26 20 25 31
Escriba un programa script que calcule:
a) La temperatura media en ese mes para cada ciudad.
b) El número de días que estuvo la temperatura de cada ciudad por debajo de la media.
c)El número de días, y a qué días del mes corresponden, en los cuales la temperatura de Anchorage fue mayor que la temperatura de
Nueva York.
d) El número de días, y a qué días del mes corresponden, en los cuales la temperatura fue igual en ambas ciudades.
10
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
e) El número de días, y a qué días del mes corresponden, en los cuales la temperatura de ambas ciudades se mantuvo por
encima de 32°F (sin helar).

7.Represente la siguiente función de dos formas distintas:


 4e x  2 6  x  2

f ( x)   x2 2  x  2,5
( x  6,5)1/3 2,5  x  6

a) Escribiendo un fichero script que utilice bucles y sentencias condicionales.
b) Cuando una función f ( x) para utilizarla posteriormente en un fichero script.
8.Escriba un programa script que calcule las raíces reales de una función cuadrática ax 2  bx  c  0 . Llame al fichero
raicescuad . Cuando el fichero se ejecute, éste debe 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

9.Utilice bucles para crear una matriz A de dimensión 4 x 7, en la cual el valor de cada elemento sea la suma de sus índices (el número
de la fila y el número de la columna de cada elemento). Por ejemplo, el valor del elemento A (2,5) será 7.

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.)

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)

Esta serie se denomina se denomina serie de Leibniz, y converge a  / 4 . Ejecute el programa para m  10 y m  500 . Compare
posteriormente estos resultados con el valor exacto  / 4.

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,

11
03. PROGRAMACION CON MATLAB Amado Malca Villalobos
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:
Tipo de Peso Peso (2 – 10 libras) Peso (10 – 50 libras)
servicio (0 – 2
libras)
Tierra 1,50 € 1,50 € + 0,50 € adicionales por 5,50 € + 0,30 € adicionales por
cada libra o fracción de libra, cada libra o fracción de libra,
a partir de las 2 libras de a partir de las 10 libras de
peso. peso.

Aire 3,00€ 3,00 € + 0,50 € adicionales por 10,20 € + 0,60 € adicionales


cada libra o fracción de libra, por cada libra o fracción de
a partir de las 2 libras de libra, a partir de las 10 libras
peso. de peso.

Nocturno 18 € 18 € + 6 € adicionales por No se realizarán entregas para


cada libra o fracción de libra, paquetes que pesen más de
a partir de las 10 libras de 10 libras.
peso-

El programa debe pedir al usuario que introduzca el peso y el tipo de servicio. Seguidamente, el programa visualizará el coste del
servicio. Si se introduce un paquete que pese más de 50 libras para un servicio de aire o tierra, el programa visualizará un mensaje
del tipo: “No se realiza reparto por aire o tierra para paquetes con peso superior a las 50 libras”. Si se introduce el peso de un paquete
que supera las 10 libras de peso para un servicio nocturno, el programa visualizará un mensaje del tipo: “No se realizan entregas
nocturnas para paquetes que pesen más de 10 libras”, Ejecute el programa e introduzca los valores 0,5 , 6,3 , 20 y 50,4 libras para
servicios de tierra y aire, así como 2, 8 , 1 y 13 libras para el servicio de reparto nocturno.
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. 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 primero un vector t , para 0  t  40 segundos, y
después utilice las funciones velocidad y aceleración para crear los vectores v y a , que se utilizarán para generar la
representación gráfica.

12

También podría gustarte