Академический Документы
Профессиональный Документы
Культура Документы
MATLAB
Clculos aritmticos
Variables escalares
Vectores y matrices
Entrada/salida
Grficos
bidimensionales
Funciones
Sentencias
condicionales
Bsico
Ejercicios
1.-Variables
y=
y=
y=
5
1
x2 x6
, x
x3
tan xsin x
,
x
= 6
xsin x
1
1
3(1 3 x) ,
2(1x)
=2
x=3
Solucin
Sentencias iterativas
>> x=2;
>> y=1/(x-3)-5/(x^2-x-6)
y =
0.2500
Ejemplos
>> x=pi/6;
>> y=(tan(x)-sin(x))/(x-sin(x))
y =
3.2777
>> x=3;
>> y=1/(2*(1-sqrt(x)))-1/(3*(1-nthroot(x,3)))
y =
0.0707
s=
4a + b2 + 16a2
b2
1
b2 + 16a2 +
ln (
)
2
8a
b
1.3.-Un proyectil se dispara con un ngulo y una velocidad inicial v0. Calcular el alcance horizontal, la altura
mxima y el tiempo de vuelo del proyectil, desde que sale hasta que impacta con el suelo
=60, v0=600 m/s, g=10 m/s2.
xmax =
ymax =
tvuelo =
v20
g
sin(2)
v20
sin2
2g
v0
2 g sin
Solucin
T = Ts + (T0 Ts ) ekt
La temperatura ambiente es Ts=20, la temperatura inicial del cuerpo T0=5. Calcular la temperatura T del cuerpo
en el instante t=3, sabiendo que k=0.45.
Solucin
2.-Vectores y matrices
2.1.-Crear el vector que contenga los nmeros pares entre 10 y cero. Crear un vector que contenga los mltiplos
de 3 entre 6 y 36, ambos inclusive.
Solucin
>> x=10:-2:0
x =
10
>> x=6:3:36
x =
6
12
15
18
21
24
27
30
33
36
Calcular el producto u.*v y cociente u./v elemento a elemento de los dos vectores
Calcular el producto escalar de los dos vectores y el ngulo entre ellos
u v = uv cos
Solucin
>> p=u*v'
p =
10
>> th=acosd(p/(norm(u)*norm(v)))
th = 46.3647
1.5000
>> u=2:3:18
u =
2
5
>> u(1:3)
ans =
2
5
>> u(2:2:6)
ans =
5
11
>> u(end-2:end)
ans =
11
14
>> u([1,3,4])
ans =
2
8
11
14
17
17
17
11
2.4.-Crear la matriz A=[10:-1:4;ones(1,7);2:2:14;zeros(1,7)] con lpiz y papel y luego, comprobar con MATLAB
Obtener la matriz B=A([1,3],[1,3,5:7]) con lpiz y papel y luego, comprobar con MATLAB
Solucin
>> A=[10:-1:4;ones(1,7);2:2:14;zeros(1,7)]
A =
10
9
8
7
6
5
4
1
1
1
1
1
1
1
2
4
6
8
10
12
14
0
0
0
0
0
0
0
>> B=A([1,3],[1,3,5:7])
B =
10
8
6
5
4
2
6
10
12
14
2.5.-Crear estas dos matrices A y B sin inicializar cada elemento de la matriz, en una sola lnea en la ventana de
comandos
1
2
4
5
0 6
0 4
0 2
0 0
0 2
1
3
5 7 9 11
5 10 15 20 25
0
10 20 30 40 50 60
6
Eliminar
ltima
primera matriz y la tercera columna de la segunda matriz
4 la2
0 fila
2 de 4la
Solucin
>> A=[(1:5)',zeros(5,1),(-6:2:2)']
A =
1
0
-6
2
0
-4
3
0
-2
4
0
0
5
0
2
>> B=[1:2:11;0:5:25;10:10:60;-6:2:4]
B =
1
3
5
7
9
11
0
5
10
15
20
25
10
20
30
40
50
60
-6
-4
-2
0
2
4
>> A(end,:)=[]
A =
1
3
5
7
9
11
0
5
10
15
20
25
10
20
30
40
50
60
>> B(:,3)=[]
B =
1
3
7
9
11
0
5
15
20
25
10
20
40
50
60
-6
-4
0
2
4
Nota: reshape(A,m,n) crea una matriz mn a partir de los elementos de la matriz A que debe tener mn
elementos.
Solucin
>> A=1:30;
>> B=reshape(A,5,6)
B =
1
6
11
2
7
12
3
8
13
4
9
14
5
10
15
>> B([3,4,5],[4,5])
ans =
18
23
19
24
20
25
>> B(2:4,3:5)
ans =
12
17
22
13
18
23
14
19
24
>> B(2:end,end)
ans =
27
28
29
30
>> B(end,3:5)
ans =
15
20
25
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
4 2
0 2 3
2 3 1 5 1
0 2 4 3 1
Crear un vector columna de nueve elementos que contenga los elementos de la primera, tercera y cuarta
columna
Crear un vector fila de ocho elementos, que contenga los elementos de la sugunda fila y de la tercera columna
Crear un vector fila de cinco elementos que contenga los dos ltimos elementos de la ltima columna y los tres
primeros elementos de la primera fila.
Solucin
>> A=[0,2,3,4,2;-2,3,-1,5,1;0,2,-4,-3,1]
A =
0
2
3
4
2
-2
3
-1
5
1
0
2
-4
-3
1
>> u=[A(:,1);A(:,3);A(:,4)]
u =
0
-2
0
3
-1
-4
4
5
-3
>> u=[A(2,:),A(:,3)']
u =
-2
3
-1
5
1
>> u=[A(end-1:end,end)',A(1,1:3)]
u =
1
1
0
2
3
-1
-4
2.8.- Crear una tabla de valores del coseno de los ngulos comprendidos entre 0 y 180, de 30 en 30 grados
ngulo
0
30
60
...
coseno
Solucin
>> ang=0:30:180;
>> y=cosd(ang);
>> [ang',y']
ans =
0
1.0000
30.0000
0.8660
60.0000
0.5000
90.0000
0
120.0000
-0.5000
150.0000
-0.8660
180.0000
-1.0000
A=(
1 0 1
)
4 2 3
B=(
1 2 3
)
1 1 2
Realizar las siguientes operaciones con lpiz y papel y comprobar luego con MATLAB
A*BT(el superndice T indica traspuesta)
AT*B
Solucin
>> A=[1,0,-1;4,-2,-3]
A =
1
0
-1
4
-2
-3
>> B=[1,-2,3;1,-1,2]
B =
1
-2
3
1
-1
2
>> A*B'
ans =
-2
-1
-1
0
>> A'*B
ans =
5
-6
11
-2
2
-4
-4
5
-9
>> A.*B
ans =
1
0
-3
4
2
-6
>> A./B
ans =
1.0000
0
4.0000
2.0000
2 4 1
A = 3 1 5
0 1 4
-0.3333
-1.5000
2 5 0
B = 3 2 7
1 6 9
0 3 5
C = 2 1 0
4 6 3
(A*B)*C=A*(B*C)
(A+B)T=AT+BT
2.11.-Resolver el sistema de tres ecuaciones mediante la operacin X=A\b. donde A es la matriz de los
coeficientes, b es el vector de los trminos indpendientes y X es el vector de las incgnitas.
4x 2y + 6z = 8
2x + 8y + 2z = 4
6x + 10y + 3z = 0
4 2 6 x 8
2 8 2y = 4
6 10 3 z 0
Solucin
>> A=[4,-2,6;2,8,2;6,10,3]
A =
4
-2
6
2
8
2
6
10
3
>> b=[8;4;0]
b =
8
4
0
>> X=A\b
X =
-1.8049
0.2927
2.6341
>> A*X
ans =
8.0000
4.0000
0
Crear un vector v a partir del u pero con los elementos ordenados en orden ascendente, utilizando la funcin sort
Solucin
>> u=[5,9,2,4,1,12,7,6,5,8]
u =
5
9
2
4
>> [m,k]=max(u)
m =
12
k =
6
>> [m,k]=min(u)
m =
1
k =
5
>> sum(u)
ans =
59
>> prod(u)
ans =
7257600
>> mean(u)
ans =
5.9000
>> v=sort(u)
v =
1
2
4
5
12
12
y=
x2 2
x+4
>> x=-3:3;
>> y=(x.^2-2)./(x+4);
>> [x',y']
ans =
-3.0000
7.0000
-2.0000
1.0000
-1.0000
-0.3333
0
-0.5000
1.0000
-0.2000
2.0000
0.3333
3.0000
1.0000
lim
x0
sin x
=1
x
Establecer el formato largo para expresar los nmeros con 15 decimales (format long)
Crear un vector x cuyos elementos son 1,0.1, 0.01,0.001,...y calcular el cociente sin(x)/x. Regresar al formato
por defecto( format short)
Solucin
0.841470984807897
0.998334166468282
0.999983333416666
0.999999833333342
0.999999998333333
0.999999999983333
n=1
1
=1
2n
Establecer el formato, 15 decimales (format long). Calcular la suma (a) n=10, (b) n=20, (c) n=40.
Crear el vector n, luego el vector y=1/2n, y sumar los elementos del vector y con la funcin sum de MATLAB
Restaurar el formato por defecto
Solucin
(3)n
12
=
2n + 1
n=0
2.17.-Comprobar
1
1
1
1
= 1 + + + ...
4
3
5
7
9
Solucin
>> n=1:4:10001;
>> sum(1./n-1./(n+2))
ans =
0.7853
>> pi/4
ans =
0.7854
>> n=1:2:10001;
>> sum((-1).^((n-1)/2)./n)
ans =
0.7854
3.-Grficos
3.1 La poblacin de Estados Unidos se puede modelar mediante la siguiente formula
y=
197273000
1 + e0.03134(t1913.25)
donde t es el tiempo en aos. Hacer un grfico que muestre la poblacin de USA cada 10 aos desde el ao 1790
hasta el 2000. Crear un script
Solucin
3.2 Dibujar la funcin y=3x3-26x+10, su derivada primera y su derivada segunda, en el intervalo -2x4, en la
misma grfica y con distintos colores y estilo de lnea. Crear un script
Solucin
Solucin
3.4. Dibujar la superposicin x1+x2 de dos Movimientos Armnicos Simples de la misma direccin y distinta
frecuencia en el intervalo 0t4,
x1=sin(t)
x2 =sin(2t)
Superponer en el mismo grfico la amplitud modulada (envolvente) en color diferente y con grosor de lnea1.5
Solucin
3.5.Tiro parablico
Un cuerpo se lanza desde la altura y0con velocidad v0, que hace un ngulo con la horizontal.
Las ecuaciones del movimiento son:
x = v0 cos t
y = y0 + v0 sin t + 12 (g)t2
g x2
g
= + x tan
(1 +
)
2 v20 cos2
2v20
y
0
y
0
x
2
tan
2
Dados los datos de la altura inicial y0, la velocidad inicial v0 y el ngulo de tiro calcular el alcance horizontal y
el tiempo de vuelo del proyectil, cuando llega al suelo y=0.
y=
+ x tan
Escribir el script parabolico que produzca una grfica semejante a la de la figura (ms abajo) y que realice las
siguientes tareas:
1. Establezca mediante comandos input, los valores de la altura y0, velocidad inicial v0 y ngulo de tiro
2. Determine el tiempo de vuelo calculando una de las races de la ecuacin de segundo grado
3. Calcular el alcance, conocido el tiempo de vuelo
4. Represente la trayectoria y la decore con ttulo, etiquetas en el eje X y en el eje Y. Utilice el comando axis para
estabecer nuevos valores mximos y mnimos para el eje X y para el eje Y distintos de los que MATLAB
establece por defecto
5. Utilice el comando text, para que apareza en algn lugar de la grfica, los datos del tiempo de vuelo y del
alcance
Ejemplo: Un can dispara una bala desde lo alto de un acantilado de 100 m de altura con una velocidad de 46
m/s haciendo un ngulo de 30 por encima de la horizontal. Tomar g=10 m/s2
>> parabolico
altura: 100
velocidad inicial: 46
ngulo:30
Solucin
3.6.-Tiro parablico 3D
Se dispara un proyectil con velocidad de 60 m/s haciendo un ngulo de 30, desde la ventana del vagn de un tren
en movimiento a lo largo del eje X con velocidad de 20 m/s. Tmese g=10 m/s2
Representar la trayectoria del proyectil
ay = 0
ax = 0
az = 10
Comprobar que
vy = 20
vx = 303
vz = 30 10t
y = 20t
x = 303t
z = 30t 5t2
El proyectil alcanza la mxima altura cuando vz=0, en el instante t=3 s, la altura es de zmax=45 m.
El proyectil impacta contra el suelo cuando z=0, en el instante t=6 s. En este instante las coordenadas del punto
de impacto son: x=120 m, y=311.8 m
Solucin
3.7.-Dibujar al funcin
z=
xy 2
x2 +y 2
1 x 31 y 4
Solucin
z = r
0 3600 r 2
Solucin
4.-Funciones
4.1. Escribir una funcin que convierta grados F (Fahrenheit) a grados C (Celsius) de acuerdo con la siguiente
frmula
C=
5
(F 32)
9
>> gradosF_C(32)
ans =
0
>> gradosF_C(212)
ans =
100
4.2. Las nuevas coordendas (X,Y) de un punto (x,y) del plano que es girado alrededor del eje Z un ngulo (en el
sentido de las agujas del reloj) viene dado por
X = x cos y sin
Y = x sin + y cos
X
cos sin
x
( )=(
)( )
Y
sin cos
y
{
Utilizar el comando compass para dibujar el vector posicin r=xi+yj y correspondiente el vector girado R=Xi+Yj
un ngulo .
>> u=[sqrt(3);1];
>> ang=120;
>> v=rotacion(ang,u)
v =
-1.7321
1.0000
>> hold on
>> compass(u(1),u(2))
>> compass(v(1),v(2))
>> hold off
5.-Sentencias condicionales
5.1.-Sea el vector x=[-4,0,5,-3,0,3,7,-1,6];
5.2.-Una empresa paga los siguientes tipos de salario anual: 12000, 15000, 18000, 24000, 35000, 50000 y 70000.
El nmero de empleados en cada una de las categoras es: 3000, 2500, 1500, 1000, 400, 100 y 25. Calcular:
El nmero total de empleados
El nmero de empleados de la empresa cuyos salarios son superiores a 32000 e inferiores a dicha cantidad
El salario medio por empleado en la empresa (media ponderada)
Solucin
5.3. Crear un script que realice la siguiente tarea: cuando se proporciona una medida de longitud expresada en
mm, cm, dm, m, km se obtiene la respuesta de dicha medida convertida a m (metros). Por ejemplo, medida=50 y
unidad='cm' aparece
0.5 m
El script es el siguiente
Solucin
5.4. El recibo de la electricidad de los residentes en una determinada ciudad se calcula del siguinete modo:
1. Si se consumen 500 Kwh o menos el coste es de 2 cntimos por Kwh
2. Si se consumen ms de 500 Kwh y pero no ms de 1000 el coste es 10 euros por los primeros 500 Kwh y 5
cntimos por Kwh para el consumo que exceda los 500 Kwh
3. Si se consumen ms de 1000 Kwh el coste es 35 euros por los primeros 1000 Kwh y 10 cntimos por Kwh para
el consumo que exceda los 1000 Kwh
4. La compaa elctrica incluye un gasto fijo de 5 euros, independiente del consumo.
Las lecturas del contador de electricidad de cinco familias ha sido el siguiente: 200, 500, 700, 1000, 1500 Kwh,
respectivamente. Mostrar los resultados del clculo en dos columnas, una del cosumo y la otra del coste de la
electricidad consumida.
200
500
700
1000
1500
9
15
25
40
90
Solucin
5.5. Escribir una funcin que convierta las coordendas rectangulares x e y a polares r, .
>> [r,ang]=r_polar(sqrt(3),1)
r =
2.0000
ang =
0.5236
>> [r,ang]=r_polar(-sqrt(3),-1)
r =
2.0000
ang =
3.6652
>> [r,ang]=r_polar(sqrt(3),-1)
r =
2.0000
ang =
5.7596
Solucin
6.-Sentencias iterativas
6.1.-Comprobar, utilizando un bucle for
1
1
1
1
= 1 + + + ...
4
3
5
7
9
Solucin
Para hallar la longitud de una circunferencia de radio R, primero se calcula el permetro de un tringulo equiltero
(3 lados) inscrito en dicha circunferencia, luego, de un hexgono (6 lados), un dodecgono (12 lados) y as,
sucesivamente. El lmite de la sucesin de permetros es precisamente la longitud de la circunferencia 2R.
Si tomamos una circunferencia de radio unidad, al dividir entre dos los valores de los permetros iremos
obteniendo las sucesivas aproximaciones del nmero irracional .
Podemos calcular la longitud del lado an un polgono regular de n lados inscrito en la circunferencia de radio R,
(en color rojo).
an = 2R sin ( )
n
Del mismo modo, obtenemos la longitud del lado de un polgono regular inscrito de 2n lados (en color azul)
a2n = 2R sin ( )
2n
1 cos
Teniendo en cuenta que sin ( ) =
2
2
Establecemos la relacin entre an y a2n y por tanto, entre el permetro Pn del polgono regular de n lados y el
permetro P2n del polgono regular de 2n lados.
Pn2
P2n = 2nR2 4 2 2
R n
Tomando como radio R, la unidad
Para obtener las sucesivas aproximaciones del nmero irracional mediante la frmula anterior procedemos del
siguiente modo:
1. Partimos del valor del permetro P de un tringulo equiltero inscrito en una circunferencia de radio unidad, el
valor de n es 3.
2. Calculamos el permetro P de un polgono de 2n lados a partir del valor del permetro de un polgono regular
de n lados.
3. El valor obtenido P ser el valor del permetro de un polgono regular de n=2n lados.
4. Se imprime el valor de P dividido entre dos (aproximacin de )
5. Se vuelve al paso 2.
El script es el siguiente
Solucin
6.4-Desarrollo en serie
sin(x) x
1 3
x
3!
N
1 5
x
5!
n=0
...
x2n+1
(2n + 1)!
Comparar el valor dado por la funcin MATLAB sin(x) con el valor obtenido al sumar un nmero determinado
de trminos (5, 10, 15..) del desarrollo en serie para un argumento dado, por ejemplo, x=/6 (30 grados).
Definir una funcin denominada serie_sin que admita como parmetros el nmero n de trminos de la serie y el
argumento x (radianes) de la funcin sin.
>> format long
>> serie_sin(2,pi/6)
ans =
0.499674179394364
>> serie_sin(5,pi/6)
ans =
0.500000000020280
>> sin(pi/6)
ans =
0.500000000000000
>> format short
n=0
x2n
(2n)!
6.5.-Generar un nmero aleatorio entero entre 1 y 10 mediante la funcin randi. Este es el nmero secreto que
hay que adivinar. Utilizar el bucle while del que se sale cuando el usuario introduce mediante el comando input el
nmero correcto. Orientar al usuario si el nmero que prueba es mayor o menor que el nmero secreto
Cul es el nmero secreto?: 3
Es ms pequeo
Cul es el nmero secreto?: 2
Es ms pequeo
Cul es el nmero secreto?: 1
Has acertado
El script es el siguiente:
Solucin
Para ordenar una lista de nmeros emplearemos el mtodo de la burbuja, un mtodo tan simple como poco eficaz.
Se compara el primer elemento, ndice 0, con todos los dems elementos de la lista, si el primer elemento es
mayor que el elemento j, se intercambian sus valores, siguiendo el procedimiento explicado en la figura. Se
continua este procedimiento con todos los elementos del array menos el ltimo. La figura explica de forma
grfica este procedimiento.
Crear una funcin denominada ordenar que devuelva un vector ordenado en orden ascendente cuando se le pasa
un vector de datos desordenado
Llamamos a la funcin ordenar y le pasamos el vector de datos desordenados: 1.65 1.82 1.72 1.75 1.73 1.85 1.90
1.74 1.76 1.77
>> ordenar([1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77])
ans = 1.6500
1.7200
1.7300
1.7400
1.7500
1.7600
1.7700
1.8200
1.8500
1.9000
MATLAB dispone de una funcin denominada sort que realiza la misma tarea
>> sort([1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77])
Temperatura
21
32
17
21
8
15
19
35
Fijarse en la importante diferencia entre los resultados de las llamadas a sort(a,1) y sortrows(a,1)
6.7.-Los primeros polinomios de Legendre y la frmula de recurrencia son, respectivamente
P0 (x) = 1
P1 (x) = x
P2 (x) = 12 (3x2 1)
P3 (x) = 12 (5x3 3x)
P4 (x) = 18 (35x4 30x2 + 3)
P5 (x) = 18 (63x5 70x3 + 15x)
P6 (x) =
1
(231x6
16
315x4 + 105x2 5)
...
(n + 1)Pn+1 = (2n + 1)xPn nPn1
Define una funcin recursiva legendre(n,x) para representar grficamente los cinco primeros polinomios de
Legendre para -1x1.
Utilizar la funcin plot para representar cada uno de los polinomios con la siguientes opciones
plot(x,y,color(n),'displayName',num2str(n))
....
legend('-DynamicLegend','location','Best')
Definir un vector de cinco colores, color(n) es el elemento n de dicho vector. Los otros dos parmetros nos
permiten identificar cada una de las curvas mediante el comando legend.
Solucin
Energas Renovables EUITI de Eibar