Você está na página 1de 25

15/12/2014

Inicio

EjerciciosdeMATLAB.Partebsica

MATLAB

Bsico

Ejercicios

Clculosaritmticos
Variablesescalares

1.Variables

Vectoresymatrices
Entrada/salida
Grficos
bidimensionales
Funciones
Sentencias
condicionales

1.1.Evaluarlassiguientesexpresionesparaelvalordadodex
1

y =

x 3

, x = 2
x 6

tan x sin x
y =

, x =

x sin x

y =

2 (1 x )

Sentenciasiterativas

, x = 3
3

3 (1 x )

Solucin

Ejemplos

>>x=2
>>y=1/(x3)5/(x^2x6)
y=0.2500
>>x=pi/6
>>y=(tan(x)sin(x))/(xsin(x))
y=3.2777
>>x=3
>>y=1/(2*(1sqrt(x)))1/(3*(1nthroot(x,3)))
y=0.0707

1.2.Lalongituddelarcodeparboladelafiguraes

2
2
2

b
4a + b + 16a
b 2 + 16a 2 +
)
ln (
2
8a
b
1

s =

Calcularsparaa=12yb=8
Solucin
>>a=12b=8
>>s=sqrt(b^2+16*a^2)/2+b^2*log((4*a+sqrt(b^2+16*a^2))/b)/(8*a)
s=25.9922

1.3.Unproyectilsedisparaconunnguloyunavelocidadinicialv0.Calcularelalcancehorizontal,laaltura
mximayeltiempodevuelodelproyectil,desdequesalehastaqueimpactaconelsuelo
=60,v0=600m/s,g=10m/s2.

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html
max

sin(2)

1/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
2

v
x max =

sin(2)

g
2

v
y max =

sin

2g

tvuelo = 2

v0

sin

Solucin
>>th=60v0=600g=10
>>x_max=v0^2*sind(2*th)/g
x_max=3.1177e+004
>>y_max=v0^2*sind(th)^2/(2*g)
y_max=1.3500e+004
>>t_vuelo=2*v0*sind(th)/g
t_vuelo=103.9230

1.4.LeydelenfriamientodeNewton
T = T s + (T 0 T s ) e

kt

LatemperaturaambienteesTs=20,latemperaturainicialdelcuerpoT0=5.CalcularlatemperaturaTdelcuerpo
enelinstantet=3,sabiendoquek=0.45.
Solucin
>>Ts=20T0=5k=0.45
>>T=Ts+(T0Ts)*exp(k*3)
T=16.111396090311629

2.Vectoresymatrices
2.1.Crearelvectorquecontengalosnmerosparesentre10ycero.Crearunvectorquecontengalosmltiplos
de3entre6y36,ambosinclusive.
Solucin
>>x=10:2:0
x=1086420
>>x=6:3:36
x=69121518212427303336

2.2.Crearunamatriz32yotrade23conlosvectoresu=[1,0,3]v=[4,1,2]
Calcularelproductou.*vycocienteu./velementoaelementodelosdosvectores
Calcularelproductoescalardelosdosvectoresyelnguloentreellos
u v = uv cos

Solucin
>>u=[1,0,3]v=[4,1,2]
>>A=[u',v']
A=
14
01
32
>>A=[uv]
A=
103
412
>>u.*v
ans=
406
>>u./v

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

2/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
ans=0.250001.5000
>>p=u*v'
p=10
>>th=acosd(p/(norm(u)*norm(v)))
th=46.3647

2.3.Seaelvectoru=2:3:18
Accederalostresprimeroselementosdelvectoru
Accederalsegundo,cuartoysextoelementosdelvectoru
Accederalsexto,cuartoysextoelementodelvectoru
Accederalostresltimoselementosdelvectoru
Accederalprimero,terceroycuartoelementosdelvectoru
Solucin
>>u=2:3:18
u=258111417
>>u(1:3)
ans=258
>>u(2:2:6)
ans=51117
>>u(end2:end)
ans=111417
>>u([1,3,4])
ans=2811

2.4.CrearlamatrizA=[10:1:4ones(1,7)2:2:14zeros(1,7)]conlpizypapelyluego,comprobarconMATLAB
ObtenerlamatrizB=A([1,3],[1,3,5:7])conlpizypapelyluego,comprobarconMATLAB
Solucin
>>A=[10:1:4ones(1,7)2:2:14zeros(1,7)]
A=
10987654
1111111
2468101214
0000000
>>B=A([1,3],[1,3,5:7])
B=
108654
26101214

2.5.CrearestasdosmatricesAyBsininicializarcadaelementodelamatriz,enunasolalneaenlaventanade
comandos
1

0
0

10

10

15

20

20

30

40

50

11

25

60
4

Eliminarlaltimafiladelaprimeramatrizylaterceracolumnadelasegundamatriz
Solucin
>>A=[(1:5)',zeros(5,1),(6:2:2)']
A=
106

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

3/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
204
302
400
502
>>B=[1:2:110:5:2510:10:606:2:4]
B=
1357911
0510152025
102030405060
642024
>>A(end,:)=[]
A=
1357911
0510152025
102030405060
>>B(:,3)=[]
B=
137911
05152025
1020405060
64024

2.6.CrearlamatrizBde56apartirdeunvectorAde30elementosutilizandoelcomandoreshape,yaccedera
loselementosmarcadosencolorrojo

Nota:reshape(A,m,n)creaunamatrizmnapartirdeloselementosdelamatrizAquedebetenermn
elementos.
Solucin
>>A=1:30
>>B=reshape(A,5,6)
B=
1611162126
2712172227
3813182328
4914192429
51015202530
>>B([3,4,5],[4,5])
ans=
1823
1924
2025
>>B(2:4,3:5)
ans=
121722
131823
141924
>>B(2:end,end)
ans=
27
28
29
30
>>B(end,3:5)
ans=
152025

2.7.Sealamatriz

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

4/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

Crearunvectorcolumnadenueveelementosquecontengaloselementosdelaprimera,terceraycuarta
columna
Crearunvectorfiladeochoelementos,quecontengaloselementosdelasugundafilaydelaterceracolumna
Crearunvectorfiladecincoelementosquecontengalosdosltimoselementosdelaltimacolumnaylostres
primeroselementosdelaprimerafila.
Solucin
>>A=[0,2,3,4,22,3,1,5,10,2,4,3,1]
A=
02342
23151
02431
>>u=[A(:,1)A(:,3)A(:,4)]
u=
0
2
0
3
1
4
4
5
3
>>u=[A(2,:),A(:,3)']
u=
23151314
>>u=[A(end1:end,end)',A(1,1:3)]
u=11023

2.8.Crearunatabladevaloresdelcosenodelosnguloscomprendidosentre0y180,de30en30grados
ngulo
0

coseno

30
60
...

Solucin
>>ang=0:30:180
>>y=cosd(ang)
>>[ang',y']
ans=
01.0000
30.00000.8660
60.00000.5000
90.00000
120.00000.5000
150.00000.8660
180.00001.0000

2.9.Seanlasmatrices
1
A =

) B =
4

RealizarlassiguientesoperacionesconlpizypapelycomprobarluegoconMATLAB
A*BT(elsuperndiceTindicatraspuesta)
AT*B
A.*B(productoelementoaelemento)
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

5/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

A./B
Solucin
>>A=[1,0,14,2,3]
A=
101
423
>>B=[1,2,31,1,2]
B=
123
112
>>A*B'
ans=
21
10
>>A'*B
ans=
5611
224
459
>>A.*B
ans=
103
426
>>A./B
ans=
1.000000.3333
4.00002.00001.5000

2.10Seanlasmatrices
2

5 B =

A =

7 C =

Comprobarsisonverdaderasofalsasestasafirmaciones:
A+(B+C)=(A+B)+C,propiedadasociativa
2(A+B)=2A+2B
A*(B+C)=A*B+A*C,propiedaddistributiva
A*B=B*A,propiedadconmutativa
(A*B)T=BT*AT
(A*B)*C=A*(B*C)
(A+B)T=AT+BT

2.11.ResolverelsistemadetresecuacionesmediantelaoperacinX=A\b.dondeAeslamatrizdelos
coeficientes,beselvectordelostrminosindpendientesyXeselvectordelasincgnitas.
4x 2y + 6z = 8

2x + 8y + 2z = 4

6x + 10y + 3z = 0

2
8
10

2 y =
3

Solucin
>>A=[4,2,62,8,26,10,3]
A=
426
282
6103
>>b=[840]

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

6/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
b=
8
4
0
>>X=A\b
X=
1.8049
0.2927
2.6341
>>A*X
ans=
8.0000
4.0000
0

2.12.Dadoelvectordedatosu=[5,9,2,4,1,12,7,6,5,8]
Elvalormximoyelndicededichoelementoenelvectoru
Elvalormnimoyelndicededichoelementoenelvectoru
Lasumadetodosloselementos
Elproductodetodosloselementos
Elvalormedio
Crearunvectorvapartirdeluperoconloselementosordenadosenordenascendente,utilizandolafuncinsort
Solucin
>>u=[5,9,2,4,1,12,7,6,5,8]
u=
59241127658
>>[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=12455678912

2.13.Crearunatabladevaloresdelafuncin
y =

x + 4

paralossiguientesvaloresdex:3,2,1,0,1,2,3
Solucin
>>x=3:3
>>y=(x.^22)./(x+4)
>>[x',y']
ans=
3.00007.0000
2.00001.0000
1.00000.3333
00.5000
1.00000.2000
2.00000.3333
3.00001.0000

2.14.Comprobarque

sin x
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html
= 1

7/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
sin x
lim

= 1
x

x0

Establecerelformatolargoparaexpresarlosnmeroscon15decimales(formatlong)
Crearunvectorxcuyoselementosson1,0.1,0.01,0.001,...ycalcularelcocientesin(x)/x.Regresaralformato
pordefecto(formatshort)
Solucin
>>formatlong
>>n=0:5
>>x=1./10.^n
>>y=sin(x)./x
>>[x',y']
ans=
1.0000000000000000.841470984807897
0.1000000000000000.998334166468282
0.0100000000000000.999983333416666
0.0010000000000000.999999833333342
0.0001000000000000.999999998333333
0.0000100000000000.999999999983333
>>formatshort

2.15.Comprobarquelasuma

n=1

= 1

Establecerelformato,15decimales(formatlong).Calcularlasuma(a)n=10,(b)n=20,(c)n=40.
Crearelvectorn,luegoelvectory=1/2n,ysumarloselementosdelvectoryconlafuncinsumdeMATLAB
Restaurarelformatopordefecto
Solucin
>>formatlong
>>n=1:10
>>y=1./2.^n
>>sum(y)
ans=0.999023437500000
>>formatshort

2.16.Comprobarquelasuma
n

(3)

12
2n + 1

n=0

Calcularlasuma(a)n=10,(b)n=20,(c)n=40.
Solucin
>>formatlong
>>n=0:10
>>y=sqrt(12)*(3).^(n)./(2*n+1)
>>sum(y)
ans=3.141593304503082
>>pi
ans=3.141592653589793
>>formatshort

2.17.Comprobar

1
= 1

1
+

1
+

+ ...
9

Solucin
>>n=1:4:10001

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

8/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
>>sum(1./n1./(n+2))
ans=0.7853
>>pi/4
ans=0.7854
>>n=1:2:10001
>>sum((1).^((n1)/2)./n)
ans=0.7854

3.Grficos
3.1LapoblacindeEstadosUnidossepuedemodelarmediantelasiguienteformula
197273000
y =
1 + e

0.03134(t1913.25)

dondeteseltiempoenaos.HacerungrficoquemuestrelapoblacindeUSAcada10aosdesdeelao1790
hastael2000.Crearunscript

Solucin
t=1790:10:2000
y=197273000./(1+exp(0.03134*(t1913.25)))
plot(t,y)
axistight
xlabel('ao')
ylabel('n.habitantes')
title('PoblacinUSA17902000')

3.2Dibujarlafunciny=3x326x+10,suderivadaprimeraysuderivadasegunda,enelintervalo2x4,enla
mismagrficaycondistintoscoloresyestilodelnea.Crearunscript

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

9/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

Solucin
x=linspace(2,4,200)
y=3*x.^326*x+10
y1=9*x.^226
y2=18*x
plot(x,y,'b',x,y1,'.r',x,y2,'g')
legend('funcin','derivadaprimera','derivadasegunda',0)
xlabel('x')
ylabel('y,dy/dx,d^2y/dx^2')
title('Trazadodefunciones')
gridon

3.3Dibujarunacurvacicloide,queenecuacionesparamtricases
x=r(tsint),
y=r(tcost),
Tomarr=1.5y0t4

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

10/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

Solucin
r=1.5
t=linspace(0,4*pi,200)
x=r*(tsin(t))
y=r*(1cos(t))
plot(x,y,'r')
axisequal
gridon
xlabel('x')
ylabel('y')
title('Cicloide')

3.4.Dibujarlasuperposicinx1+x2dedosMovimientosArmnicosSimplesdelamismadireccinydistinta
frecuenciaenelintervalo0t4,
x1=sin(t)
x2=sin(2t)
Superponerenelmismogrficolaamplitudmodulada(envolvente)encolordiferenteycongrosordelnea1.5

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

11/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

Solucin
t=linspace(0,5*pi,400)
x=sin(5*t)+sin(6*t)
y=2*cos(0.5*t)
holdon
plot(t,x,'b')
plot(t,y,'r','linewidth',1.5)
plot(t,y,'r','linewidth',1.5)
holdoff
title('Sumadearmnicos')
xlabel('t')
ylabel('x')
set(gca,'XTick',0:pi:5*pi)
set(gca,'XTickLabel',{'0','pi','2pi','3pi','4pi','5pi'})

3.5.Tiroparablico

Uncuerposelanzadesdelaalturay0convelocidadv0,quehaceunnguloconlahorizontal.
Lasecuacionesdelmovimientoson:
x = v0 cos t
1
y = y 0 + v0 sin t +

(g)t

Laecuacindelatrayectoriadelmviles
2

2
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html
y =
+ x tan
=
+ x tan
0

(1 +

12/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
g
y = y 0 + x tan

x
2

v cos

= y 0 + x tan x

(1 + tan )

2v

Dadoslosdatosdelaalturainicialy0,lavelocidadinicialv0yelngulodetirocalcularelalcancehorizontaly
eltiempodevuelodelproyectil,cuandollegaalsueloy=0.
Escribirelscriptparabolicoqueproduzcaunagrficasemejantealadelafigura(msabajo)yquerealicelas
siguientestareas:
1. Establezcamediantecomandosinput,losvaloresdelaalturay0,velocidadinicialv0yngulodetiro
2. Determineeltiempodevuelocalculandounadelasracesdelaecuacindesegundogrado
3. Calcularelalcance,conocidoeltiempodevuelo
4. Representelatrayectoriayladecoreconttulo,etiquetasenelejeXyenelejeY.Utiliceelcomandoaxispara
estabecernuevosvaloresmximosymnimosparaelejeXyparaelejeYdistintosdelosqueMATLAB
establecepordefecto
5. Utiliceelcomandotext,paraqueaparezaenalgnlugardelagrfica,losdatosdeltiempodevueloydel
alcance
Ejemplo:Uncandisparaunabaladesdeloaltodeunacantiladode100mdealturaconunavelocidadde46
m/shaciendounngulode30porencimadelahorizontal.Tomarg=10m/s2
>>parabolico
altura:100
velocidadinicial:46
ngulo:30

Solucin
Escribimoselscriptparabolico
%entrada:altura,velocidadinicialyngulodetiro
y0=input('altura:')
v0=input('velocidadinicial:')
ang=input('ngulo:')
g=10
%calculaeltiempodevuelotf,resolviendolaecuacindesegundogrado
a=g/2b=v0*sind(ang)c=y0
tf=(bsqrt(b*b4*a*c))/(2*a)

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

13/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
%calculaelalcance
xf=v0*cosd(ang)*tf
%representacingrficadelatrayectoria
x=linspace(0,xf,50)
y=y0+x*tand(ang)x.2*(g/(2*v0*v0))*(1+tand(ang)*tand(ang))
plot(x,y,'r')
xlabel('x')
ylabel('y')
title('tiroparablico')
gridon
axis([0,xf+50,10,max(y)+10])
%marcaelalcanceconunalneahorizontaldecolornegro
line([0xf],[00],'color','k')
%datodelalcance
text(xf,0,num2str(xf))
%datodeltiempodevuelo
text(xf,max(y),'tiempo')
text(xf,max(y)10,num2str(tf))

3.6.Tiroparablico3D
Sedisparaunproyectilconvelocidadde60m/shaciendounngulode30,desdelaventanadelvagndeuntren
enmovimientoalolargodelejeXconvelocidadde20m/s.Tmeseg=10m/s2
Representarlatrayectoriadelproyectil
Ecuacionesdelmovimiento
ay = 0

v = 20

y = 20t

ax = 0
vx = 30 3
x = 30 3 t

2
a z = 10
vz = 30 10t
z = 30t 5t

Comprobarque
Elproyectilalcanzalamximaalturacuandovz=0,enelinstantet=3s,laalturaesdezmax=45m.
Elproyectilimpactacontraelsuelocuandoz=0,enelinstantet=6s.Enesteinstantelascoordenadasdelpunto
deimpactoson:x=120m,y=311.8m

Solucin
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

14/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
t=linspace(0,6,50)
z=30*t5*t.^2
x=30*sqrt(3)*t
y=20*t
plot3(x,y,z,'r')
gridon
axis([03500150050])
xlabel('x(m)')ylabel('y(m)')zlabel('z(m)')

UtilizarlaherramientaRotate3DdelmenFigureWindowparacambiarelngulodevisualizacindela
parbola.
3.7.Dibujaralfuncin
xy
z =
x

+ y

1 x 31 y 4

Solucin
x=1:0.1:3
y=1:0.1:4
[X,Y]=meshgrid(x,y)
Z=(X.*Y.^2)./(X.^2+Y.^2)
mesh(X,Y,Z)
xlabel('X')
ylabel('Y')
zlabel('Z')

3.8.Dibujarlafuncin
z = r
0 3600 r 2

Utilizarlafuncinpol2cartparaconvertircocordendaspolaresacoordenadasrectangulares.

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

15/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

Solucin
r=0:0.1:2
angulo=(0:5:360)*pi/180
[Ang,Radio]=meshgrid(angulo,r)
Z=Radio.*Ang
[X,Y]=pol2cart(Ang,Radio)
mesh(X,Y,Z)

4.Funciones
4.1.EscribirunafuncinqueconviertagradosF(Fahrenheit)agradosC(Celsius)deacuerdoconlasiguiente
frmula
5
C =

(F 32)
9

>>gradosF_C(32)
ans=0
>>gradosF_C(212)
ans=100

LadefinicindelafuncingradosF_Ces
Solucin
functiongC=gradosF_C(gF)
gC=5*(gF32)/9
end

Otraforma
>>gradosF_C=@(x)5*(x32)/9
>>gradosF_C(32)
ans=0
>>gradosF_C(212)
ans=100

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

16/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

4.2.Lasnuevascoordendas(X,Y)deunpunto(x,y)delplanoqueesgiradoalrededordelejeZunngulo(enel
sentidodelasagujasdelreloj)vienedadopor
X = x cos y sin
{
Y = x sin + y cos

X
(

cos
) =

sin

x
) (

sin

cos

)
y

Utilizarelcomandocompassparadibujarelvectorposicinr=xi+yjycorrespondienteelvectorgiradoR=Xi+Yj
unngulo.
>>u=[sqrt(3)1]
>>ang=120
>>v=rotacion(ang,u)
v=
1.7321
1.0000
>>holdon
>>compass(u(1),u(2))
>>compass(v(1),v(2))
>>holdoff

Definimoslafuncinrotacion
Solucin
functionv=rotacion(ang,u)
R=[cosd(ang),sind(ang)sind(ang),cosd(ang)]
v=R*u
end

5.Sentenciascondicionales
5.1.Seaelvectorx=[4,0,5,3,0,3,7,1,6]
Contarcuantoselementosdelvectorsonpositivos,negativosonulos
Solucin
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

17/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
>>x=[4,0,5,3,0,3,7,1,6]
>>ne=sum(x<0)
ne=3
>>pos=sum(x>0)
pos=4
>>cero=sum(x==0)
cero=2

5.2.Unaempresapagalossiguientestiposdesalarioanual:12000,15000,18000,24000,35000,50000y70000.
Elnmerodeempleadosencadaunadelascategorases:3000,2500,1500,1000,400,100y25.Calcular:
Elnmerototaldeempleados
Elnmerodeempleadosdelaempresacuyossalariossonsuperioresa32000einferioresadichacantidad
Elsalariomedioporempleadoenlaempresa(mediaponderada)
Solucin
>>salario=[12000,15000,18000,24000,35000,50000,70000]
>>empleados=[3000,2500,1500,1000,400,100,25]
>>n_empleados=sum(empleados)
n_empleados=8525
>>u=salario>32000
u=0000111
>>u.*empleados
ans=000040010025
>>n_alto=sum(u.*empleados)
n_alto=525
>>n_bajo=n_empleadosn_alto
n_bajo=8000
>>salario_medio=sum(empleados.*salario)/n_empleados
salario_medio=1.7038e+004

5.3.Crearunscriptquerealicelasiguientetarea:cuandoseproporcionaunamedidadelongitudexpresadaen
mm,cm,dm,m,kmseobtienelarespuestadedichamedidaconvertidaam(metros).Porejemplo,medida=50y
unidad='cm'aparece
0.5m

Elscripteselsiguiente
Solucin
medida=50
unidad='cm'
switch(unidad)
case{'km','kilmetro'}
y=1000*medida
case{'m','metro'}
y=medida
case{'dm','decmetro'}
y=medida/10
case{'cm','centmetro'}
y=medida/100
case{'mm','milmetro'}
y=medida/1000
otherwise
disp(['Unidaddesconocida:',unidad])
end
disp([num2str(y),'m'])

5.4.Elrecibodelaelectricidaddelosresidentesenunadeterminadaciudadsecalculadelsiguinetemodo:
1. Siseconsumen500Kwhomenoselcosteesde2cntimosporKwh
2. Siseconsumenmsde500Kwhyperonomsde1000elcostees10eurosporlosprimeros500Kwhy5
cntimosporKwhparaelconsumoqueexcedalos500Kwh
3. Siseconsumenmsde1000Kwhelcostees35eurosporlosprimeros1000Kwhy10cntimosporKwhpara
elconsumoqueexcedalos1000Kwh
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

18/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

4. Lacompaaelctricaincluyeungastofijode5euros,independientedelconsumo.
Laslecturasdelcontadordeelectricidaddecincofamiliashasidoelsiguiente:200,500,700,1000,1500Kwh,
respectivamente.Mostrarlosresultadosdelclculoendoscolumnas,unadelcosumoylaotradelcostedela
electricidadconsumida.
2009
50015
70025
100040
150090

Solucin
consumo=[200,500,700,1000,1500]
coste=5+10*(consumo>500)+25*(consumo>1000)
coste=coste+0.02*(consumo<=500).*consumo
coste=coste+0.05*(consumo>500&consumo<=1000).*(consumo500)
coste=coste+0.1*(consumo>1000).*(consumo1000)
disp([consumo',coste'])

5.5.Escribirunafuncinqueconviertalascoordendasrectangularesxeyapolaresr,.
>>[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

Ladefinicindelafuncinr_polares
Solucin
function[r,ang]=r_polar(x,y)
r=sqrt(x^2+y^2)
ang=atan2(y,x)
ifang<0
ang=ang+2*pi
end
end

6.Sentenciasiterativas
6.1.Comprobar,utilizandounbuclefor

= 1

1
7

+ ...

Solucin
sgn=1
s=0
forn=1:2:99
sgn=sgn
s=s+sgn/n
end
disp([pi/4,s])

6.2.Clculoderazcuadradadeunnmeron,medianteelsiguientealgoritmo
1. Establecerelformatoa15decimales,(long)
2. Establecerelvalorinicialden
3. Establecerelvalorinicialdexenn/2
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

19/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

4. Repetirseisveces
Reemplazarxpor(x+n/x)/2
5. Mostrarlarazcuadradadenyx.
6. Restaurarelformatopordefecto,(short)
Solucin
formatlong
n=2
x=n/2
fori=1:6
x=(x+n/x)/2
end
disp([sqrt(n),x])
formatshort

6.3.Elnmeroirracional
ParahallarlalongituddeunacircunferenciaderadioR,primerosecalculaelpermetrodeuntringuloequiltero
(3lados)inscritoendichacircunferencia,luego,deunhexgono(6lados),undodecgono(12lados)yas,
sucesivamente.Ellmitedelasucesindepermetrosesprecisamentelalongituddelacircunferencia2R.
Sitomamosunacircunferenciaderadiounidad,aldividirentredoslosvaloresdelospermetrosiremos
obteniendolassucesivasaproximacionesdelnmeroirracional.

PodemoscalcularlalongituddelladoanunpolgonoregulardenladosinscritoenlacircunferenciaderadioR,
(encolorrojo).

a n = 2R sin (

)
n

Delmismomodo,obtenemoslalongituddelladodeunpolgonoregularinscritode2nlados(encolorazul)

a 2n = 2R sin (

)
2n

Teniendoencuentaquesin (

1 cos

) =

Establecemoslarelacinentreanya2nyportanto,entreelpermetroPndelpolgonoregulardenladosyel
permetroP2ndelpolgonoregularde2nlados.
P 2n

Pn

= 2nR
2 4
2
2

R n

TomandocomoradioR,launidad
Parauntringulo,n=3,lalongituddelladoesa3=2sin60,yelpermetroP

= 3 3

Paraunhexgono,n=6,lalongituddelladoesa6=2sin30=1,yelpermetroP6=6.
yas,sucesivamente.
Paraobtenerlassucesivasaproximacionesdelnmeroirracionalmediantelafrmulaanteriorprocedemosdel
siguientemodo:
1. PartimosdelvalordelpermetroPdeuntringuloequilteroinscritoenunacircunferenciaderadiounidad,el
valordenes3.
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

20/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

2. CalculamoselpermetroPdeunpolgonode2nladosapartirdelvalordelpermetrodeunpolgonoregular
denlados.
3. ElvalorobtenidoPserelvalordelpermetrodeunpolgonoregularden=2nlados.
4. SeimprimeelvalordePdivididoentredos(aproximacinde)
5. Sevuelvealpaso2.
6lados,aproximacindepi:3.00000000
12lados,aproximacindepi:3.10582854
24lados,aproximacindepi:3.13262861
48lados,aproximacindepi:3.13935020
96lados,aproximacindepi:3.14103195

Elscripteselsiguiente
Solucin
perimetro=3*sqrt(3)
n=3
iter=5
fori=1:iter
perimetro=2*n*sqrt(2.0sqrt(4.0(perimetro/n)*(perimetro/n)))
n=2*n
fprintf('%ilados,aproximacindepi:%1.8f\n',n,perimetro/2)
end

6.4Desarrolloenserie
Eldesarrolloenseriedesin(x)es
1
sin(x) x

x
3!

1
+

sin(x) =

lim
N

...

5!

(1)

2n+1

(2n + 1)!

n=0

CompararelvalordadoporlafuncinMATLABsin(x)conelvalorobtenidoalsumarunnmerodeterminado
detrminos(5,10,15..)deldesarrolloenserieparaunargumentodado,porejemplo,x=/6(30grados).
Definirunafuncindenominadaserie_sinqueadmitacomoparmetroselnmerondetrminosdelaserieyel
argumentox(radianes)delafuncinsin.
>>formatlong
>>serie_sin(2,pi/6)
ans=0.499674179394364
>>serie_sin(5,pi/6)
ans=0.500000000020280
>>sin(pi/6)
ans=0.500000000000000
>>formatshort

Ladefinicindelafuncinserie_sineslasiguiente
Solucin
functionresultado=serie_sin(n,x)
resultado=x
signo=1
fori=3:2:2*n1
resultado=resultado+signo*x^i/factorial(i)
signo=signo
end
end

Repetiresteejercicioperoconlafuncincoseno
N

cos(x) =

lim

(1)

N
n=0

2n

(2n)!

6.5.Generarunnmeroaleatorioenteroentre1y10mediantelafuncinrandi.Esteeselnmerosecretoque
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

21/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

hayqueadivinar.Utilizarelbuclewhiledelquesesalecuandoelusuariointroducemedianteelcomandoinputel
nmerocorrecto.Orientaralusuariosielnmeroquepruebaesmayoromenorqueelnmerosecreto
Culeselnmerosecreto?:3
Esmspequeo
Culeselnmerosecreto?:2
Esmspequeo
Culeselnmerosecreto?:1
Hasacertado

Elscripteselsiguiente:
Solucin
secreto=randi(10,1)
numero=input('Culeselnmerosecreto?:')
while(numero~=secreto)
if(numero>secreto)
disp('Esmspequeo')
else
disp('Esmsgrande')
end
numero=input('Culeselnmerosecreto?:')
end
disp('Hasacertado')

6.6.Ordenarunalistadenmeros

Paraordenarunalistadenmerosemplearemoselmtododelaburbuja,unmtodotansimplecomopocoeficaz.
Secomparaelprimerelemento,ndice0,contodoslosdemselementosdelalista,sielprimerelementoes
mayorqueelelementoj,seintercambiansusvalores,siguiendoelprocedimientoexplicadoenlafigura.Se
continuaesteprocedimientocontodosloselementosdelarraymenoselltimo.Lafiguraexplicadeforma
grficaesteprocedimiento.
Crearunafuncindenominadaordenarquedevuelvaunvectorordenadoenordenascendentecuandoselepasa
unvectordedatosdesordenado
Llamamosalafuncinordenarylepasamoselvectordedatosdesordenados:1.651.821.721.751.731.851.90
1.741.761.77
>>ordenar([1.651.821.721.751.731.851.901.741.761.77])
ans=1.65001.72001.73001.74001.75001.76001.77001.82001.85001.9000

Ladefinicindelafuncinordenares
Solucin
functionx=ordenar(x)
n=length(x)
fori=1:n
forj=i+1:n

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

22/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
ifx(i)>x(j)
aux=x(j)
x(j)=x(i)
x(i)=aux
end
end
end
end

MATLABdisponedeunafuncindenominadasortquerealizalamismatarea
>>sort([1.651.821.721.751.731.851.901.741.761.77])

Enelcasodetablasbidimensionalesomultidimensionales,podemoselaborarnuestrapropiaversindela
funcinordenar,peroMATLABdisponedelafuncinsortrowsquerealizaestatarea.Porejemplo,queremos
odenarlasiguientetablaprimeropordasydespusportemperaturas
Da
15
3
17
21
8

Temperatura
21
32
15
19
35

>>a=[152133217152119835]
a=
1521
332
1715
2119
835
>>sort(a,1)
ans=
315
819
1521
1732
2135
>>sortrows(a,1)
ans=
332
835
1521
1715
2119
>>sortrows(a,2)
ans=
1715
2119
1521
332
835

Fijarseenlaimportantediferenciaentrelosresultadosdelasllamadasasort(a,1)ysortrows(a,1)
6.7.LosprimerospolinomiosdeLegendreylafrmuladerecurrenciason,respectivamente

P 0 (x) = 1
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

23/25

15/12/2014

EjerciciosdeMATLAB.Partebsica
P 0 (x) = 1
P 1 (x) = x
1
P 2 (x) =

(3x
1

P 3 (x) =

(5x

(35x

30x

+ 3)

(63x

70x

+ 15x)

8
1

P 6 (x) =

8
1

P 5 (x) =

3x)

2
1

P 4 (x) =

1)

(231x

315x

+ 105x

5)

16

...
(n + 1)P n+1 = (2n + 1)xP n nP n1

Defineunafuncinrecursivalegendre(n,x)pararepresentargrficamenteloscincoprimerospolinomiosde
Legendrepara1x1.
Utilizarlafuncinplotpararepresentarcadaunodelospolinomiosconlasiguientesopciones
plot(x,y,color(n),'displayName',num2str(n))
....
legend('DynamicLegend','location','Best')
Definirunvectordecincocolores,color(n)eselelementondedichovector.Losotrosdosparmetrosnos
permitenidentificarcadaunadelascurvasmedianteelcomandolegend.

Solucin
functionres=legendre(n,x)
ifn==0
res=1
elseifn==1
res=x
else
res=((2*(n1)+1)*x*legendre(n1,x)(n1)*legendre(n2,x))/n
end
end

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

24/25

15/12/2014

EjerciciosdeMATLAB.Partebsica

ElscriptpararepresentarlospolinomiosdeLegendre
x=1:0.05:1
y=zeros(length(x),1)
color=['b''g''r''m''k']
holdon
forn=1:5
fori=1:length(x)
y(i)=legendre(n,x(i))
end
plot(x,y,color(n),'displayName',num2str(n))
end
title('PolinomiosdeLegendre')
xlabel('x')
ylabel('y')
legend('DynamicLegend','location','Best')
gridon
holdoff

EnergasRenovablesEUITIdeEibar

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/ejercicios/basico/ejercicios_1.html

25/25

Você também pode gostar