Beruflich Dokumente
Kultur Dokumente
Por ejemplo, se desea crear una función que sume dos escalares a y b:
function [c]=suma(a,b)
c=a+b;
end
Los corchetes son necesarios sólo cuando se desee retornar más de una variable:
function [x1,x2,x3,…,xn]= nombre_función (a,b,c,..z)
x1 = …
x2 = …
end
function func
function func(a)
function func(a,b)
function x1=func
function x1=func(a)
function x1=func(a,b)
function [x1,x2]=func
function [x1,x2]=func(a)
function [x1,x2]=func(a,b)
Los argumentos de entrada y las variables de salida, cuando hay varios, se separan
por comas.
Es importante tener en cuenta, que al declarar una función en Matlab, para poder
ejecutarla debe haberse guardado previamente. Al guardarse, automáticamente
queda con la extensión .m bajo el nombre dado a la función. Si cambia dicho nombre
en el script se va a genera un error, pues Matlab no reconocerá esta variable como
propia.
Instrucción Descripción
disp Visualiza una salida.
fprintf Visualiza o guarda una salida.
input Pide al usuario una entrada por teclado.
uiimport Inicializa el asistente de importación de datos
xlsread Importa datos en formato Excel
xlswrite Exporta datos en formato Excel
1. Cuando se digita el % indica un comentario, por lo que Matlab lo ignora al
ejecutar la función o script.
4. Para ejecutar un script ****.m solo se digita su nombre **** (sin el punto ni la m).
Función disp
Ejemplos
x = [-2 4 7];
texto1='Los valores de x son: ';
texto2=num2str(x);
texto3=[texto1,texto2];
disp(texto3);
La salida es:
Los valores de x son: -2 4 7
Celsius = 0:10:100;
Farhnt = 1.8*Celsius+32;
Kelvin = Celsius+273.15;
A= ['Celsius Farhnt Kelvin'];
disp('*******************************')
disp(' Tabla de Temperaturas ')
disp('*******************************')
B = [Celsius' Farhnt' Kelvin'];
disp('*******************************')
disp(A), disp(B)
*************************************
Tabla de Temperaturas
*************************************
*************************************
Celsius Farhnt Kelvin
0 32.00 273.15
10.00 50.00 283.15
20.00 68.00 293.15
30.00 86.00 303.15
40.00 104.00 313.15
50.00 122.00 323.15
60.00 140.00 333.15
70.00 158.00 343.15
80.00 176.00 353.15
90.00 194.00 363.15
100.00 212.00 373.15
Función pause
Caja de dialogo
switch Eleccion
case 'Helado'
disp([Eleccion ' En un momento'])
postre = 1;
case 'Pastel'
disp([Eleccion ' En un momento.'])
postre = 2;
case 'No gracias'
disp('Ya le traigo la cuenta.')
postre = 0;
end
Figura 7.1
Función de menú
Matlab dispone de una función denominada menú que muestra una ventana con
botones que identifican opciones. La primera cadena de la función menú indica el
encabezado, y el resto son etiquetas que aparecen en los botones. La función
devuelve el número del botón que se presiona. Por ejemplo, crear un menú para la
siguiente lista de comidas: Hamburguesa, Papa fritas, Perro caliente y Sandwich
Figura 7.2
Como se aprecia hay cuatro botones, cuyos valores equivalentes son 1, 2, 3 y 4.
Por ejemplo, Si el usuario presiona el botón Perro caliente, la variable lista tendría
el valor 3, es decir, al digitar:
>> lista
lista =
Barras de estado
La barra de estado se emplea como una alerta para el usuario, tal como se observa
en la figura 7.3, para ello se emplea la instrucción waitbar.
Figura 7.3
Función fprintf
>> fprintf('%12.8f\n',pi)
3.14159265
>>a = pi;
>>fprintf('a = %5.3f 2*a = %5.3f\n', a, 2*a )
Ejemplos
Crear un script que pida por consola los datos de las variables y arroje el o los
resultados especificados
1. Debido a la curvatura de la Tierra, la distancia máxima dmax (en millas) que una
persona puede ver desde el último piso de un edificio de altura h (en pies) hacia
el horizonte se estima mediante la ecuación:
𝑑𝑑𝑚𝑚𝑚𝑚𝑚𝑚 = �2𝑟𝑟ℎ + ℎ2
Burj Khalifa
Taipéi 101
Empire State
Digite el Radio 10
Digite la Altura 2
El Área del cilindro es:
753.98
Digite el valor de n: 3
Digite el valor de x: 2
5
Digite el valor de n: 5
Digite el valor de x: 2
7
5. Crear un script que permita calcular la suma de los n primeros números de una
progresión armónica.
Cantidad de artículos 6
Valor a pagar
420000.00
Cantidad de artículos 3
Valor a pagar
240000.00
7.3 Práctica 1
Crear un script que pida por consola los datos dados y arroje el o los resultados
especificados con una leyenda. La condición es usar las instrucciones input y disp
apropiadamente.
2
⎡1 − 𝑎𝑎 + 0.326 �𝑎𝑎� ⎤
𝐾𝐾 = 𝜎𝜎 √𝜋𝜋𝜋𝜋 ⎢ 2𝑏𝑏 𝑏𝑏 ⎥
⎢ 𝑎𝑎 ⎥
�1 −
⎣ 𝑏𝑏 ⎦
Figura 7.4
- P se mide en atmósferas.
- Po es la presión atmosférica a nivel del mar;
- M es el peso molecular del aire 28.8 g/mol=0.0288 kg/mol;
- g es la aceleración de la gravedad;
- k=1.3805·10-23 J/K es la constante de Boltzmann
- T es la temperatura de la atmósfera en kelvin
- NA=6.0225·1023 es el número de Avogadro, número de moléculas que
caben en un mol.
9. Para hallar la altura de una montaña desde dos puntos P y Q que equidistan a
d millas entre sí, y a un punto M en la cima de la montaña, tal como se muestra
la gráfica
Figura 7.5
𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑(𝛼𝛼)𝑠𝑠𝑠𝑠𝑠𝑠(𝛽𝛽)
ℎ=
�𝑠𝑠𝑠𝑠𝑠𝑠2 𝛼𝛼 − 𝑠𝑠𝑠𝑠𝑠𝑠2 𝛽𝛽
10. Ley de Hubble. Esta ley física establece la relación que existe entre el
corrimiento al rojo que presenta una galaxia cuando se aleja de otra, la cual
es proporcional a la distancia a la que está. Esta ley es una evidencia que el
universo se expande.
𝐷𝐷𝐷𝐷𝑜𝑜
𝑧𝑧 =
𝑐𝑐
Donde z es el corrimiento al rojo (es un número adimensional); D, la distancia
actual a una galaxia (medida en Mega parsec (Mpc) = distancia equivalente a
unos 3,26 millones de años luz); Ho, es la constante de Hubble en el momento
de la observación, cuyo valor actual es del orden de 77 (km/s)/Mpc; c, es la
velocidad de la luz = 299792.458 Km/s.
11. El cuasi periodo de una estructura está determinado por la ecuación general:
𝑥𝑥(𝑡𝑡) = 𝐴𝐴𝑒𝑒 −𝜆𝜆𝜆𝜆 𝑠𝑠𝑠𝑠𝑠𝑠(𝜔𝜔𝜔𝜔 + 𝜙𝜙)
2√5
Determine 𝑥𝑥(1.2), 𝑥𝑥(2.5) y 𝑥𝑥(3.1), cuando 𝐴𝐴 = 3 , λ = 0.02 s-1, ω = 4.25 y
Φ= 5.6987. Estos datos deben ser solicitados por consola.
12. Una onda transversal se propaga a lo largo del eje x en un tiempo t, está
representada por la siguiente ecuación:
3
−𝑞𝑞 𝑞𝑞2 𝑝𝑝3 3�−𝑞𝑞 𝑞𝑞2 𝑝𝑝3
𝑥𝑥 = � + � + + − � +
2 4 27 2 4 27
Resolver para
a. 𝑥𝑥 3 − 5𝑥𝑥 + 7 = 0
b. 𝑥𝑥 3 + 3𝑥𝑥 + 4 = 0
c. 𝑥𝑥 3 − 27𝑥𝑥 − 54 = 0
d. 𝑥𝑥 3 + 9𝑥𝑥 + 11 = 0
15. Cree una caja de dialogo en la que se brinde la opción de escoger el tipo de
pizza (Queso, Hawaiana, Peperoni, Carnes).
Ejercicios resueltos
𝜋𝜋𝑟𝑟 2 ℎ
𝑉𝑉 =
3
% se declara la función con el nombre fvolumen
% volumen de un cono de radio r y altura h
function volumen=fvolumen(r,h)
volumen=pi*r^2*h/3;
end
Para calcular el volumen se invoca la función
fvolumen(r,h), desde el Command Window, así:
fvolumen(3,5)
ans =
47.1239
fvolumen(8,12)
ans =
804.2477
Figura 7.6
function area=areapol(L,n)
if nargin==0
error('Esta función necesita un argumento de entrada')
else
P=n*L;
Ap=n*L^2/(4*tan(pi/n));
area=P*Ap/2;
end
function [x1,x2]=ec2grado(a,b,c)
if nargin==0
error('Esta función necesita un argumento de entrada')
else
x1=(-b-sqrt(b^2-4*a*c))/(2*a);
x2=(-b+sqrt(b^2-4*a*c))/(2*a);
end
[x1,x2]=ec2grado(2,5,-12)
x1 =
-4
x2 =
1.5
4. Una función puede entregar más de un resultado, por lo que las variables que
entregan los resultados deben definirse entre [ ]. Por ejemplo, defina una función
que entregue el área y el volumen de un cilindro dados su radio (r) y su altura
(h).
r=5;
h=12;
[area, vol] = cilindro(r, h)
area =
534.0708
vol =
942.4778
function V=potencial(q,x,y,z)
epsilon= 8.8542e-12; % C2/Nm2
V=q/(4*pi*epsilon*sqrt(x^2+y^2+z^2));
End
potencial(5e-12,5e-6,8e-6,-3e-6)
ans =
4.5394e+03
𝜋𝜋 2 ℏ2 𝑛𝑛2
𝐸𝐸 =
2𝑚𝑚𝐿𝐿2
if nargin==0
error('Esta función necesita un argumento de entrada')
else
hr=1.055e-34;
m=9.1e-31;
a=1.6e-19;
L=sqrt(pi^2*hr^2*n^2/(2*m*E*a));
end
longitud(4,5)
L =
1.0987e-09
𝑥𝑥
7. Dada la función 𝑓𝑓(𝑥𝑥) = 2𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥 � �. Evaluar f(x) para los valores de 10, 20, 30,
3
40, 50 y 60 grados.
function funcioncos(x)
if nargin==0
error('Esta función necesita un argumento de entrada')
else
f = 2*x.*cos(x/3);
end
Una forma no muy ortodoxa sería de evaluar la función término a término, que
es válido por supuesto, pero no muy funcional a nivel operativo. Por ello, se
puede crear un vector con los datos dados y llamar la variable directamente
desde la función, así:
x=[10,20,30,40,50,60];
funcioncos(x)
f =
-19.6335 37.0947 -50.3443 57.6017 -57.4582 48.9698
r = linspace(0, R, 12);
theta = linspace(0, 2*pi, 100);
x = cos(theta')*r;
y = 5 + sin(theta')*r;
z = repmat(zo, size(x));
surf(x, y, z),grid on
title('Disco'),xlabel('x'),ylabel('y'),zlabel('z')
end
Figura 7.7
function d=depreciacion(p,t,n)
d = 100*(1-(t/p)^(1/n));
end
function da = cdepreciacion(p,i,n)
i = i/100;
da = p*i*(1-i)^(n-1);
end
𝑖𝑖
𝑅𝑅 = 𝑉𝑉𝑓𝑓 � 𝑁𝑁 �
𝑖𝑖 𝑁𝑁𝑁𝑁
�1 + 𝑁𝑁 � − 1
function r = valor_futuro(vf, i, N, t)
r = vf*(i/N)/((1+i/N)^(N*t)-1);
end
12. Parte de una vía de una montaña rusa se puede expresar mediante la función
polinomial,
1. function I = identity(n)
I = zeros(n);
I(1: n+1: n^2) = 1;
end
3. function v = int_col(n)
v = [n+1:n-1]';
end
4. function mc = mediacuad(n)
mc = mean((1:n).^2);
end
5. function H = vector1(v)
H = [v', (v').^2, (v').^3];
end
6. function Q = cuadrantes(n)
a = ones(n);
Q = [a 2*a; 3*a 4*a; 5*a 6*a];
end
7. function b = Tablero(n,m)
b = ones(n,m);
b(1:2:n,2:2:m) = 0;
b(2:2:n,1:2:m) = 0;
end
8. function r = aleatorio(limite,n,m)
r = fix(limite*rand(n,m)) + 1;
end
9. function [t s] = mtable(n,m)
t = (1:n)' * (1:m);
s = sum(t(:));
end
Definir en cada ejercicio la función respectiva, en la que se solicite por consola las
variables propias de cada ecuación.
Determine los valores de y cuando x = 0.5, 1, 1.2, 1.7, 2.1, 2.5 y 2.7.
18. La potencia P (en watts) generada por un molino de viento que tiene una
eficiencia e, está dada por la ecuación:
𝑃𝑃 = 0.31𝑒𝑒𝑑𝑑 2 𝑣𝑣 3
𝑥𝑥 2
𝑒𝑒 − 2
𝑓𝑓(𝑥𝑥) =
√2𝜋𝜋
Calcular f(0), f(0.5), f(1), f(1.5) y f(2)
21. El potencial electrostático producido por una carga eléctrica q, evaluado a una
distancia r (en metros), está representado por la ecuación:
𝑞𝑞
𝑉𝑉(𝑟𝑟) =
4𝜋𝜋𝜀𝜀𝑟𝑟
Determine el nivel de intensidad para valores de: 0.1 W/m2, 0.01 W/m2, 0.001
W/m2, 1 W/m2.
25. Las ecuaciones que describen el movimiento de caída libre de los cuerpos son:
1
𝑣𝑣 = 𝑣𝑣𝑜𝑜 + 𝑔𝑔𝑔𝑔; 𝑥𝑥 = 𝑥𝑥𝑜𝑜 + 𝑣𝑣𝑜𝑜 𝑡𝑡 + 𝑔𝑔𝑡𝑡 2
2
Donde Q representa el caudal de fluido que circula por un conducto (en m3/s).
P1 y P2 son las presiones a lo largo del conducto (la diferencia de presiones
(en Pa) es la que hace moverse al fluido a lo largo del tubo, P2 > P1). L es
dimensión del tubo (en m), r el radio (en m), y η es la viscosidad del fluido
(medido en poise =0.1 pascal segundo Pa s).
28. El valor de una propiedad es de 250.000 dólares con una tasa de inflación i del
9.5% anual. La función que representa la inversión está dado por la siguiente
ecuación:
√𝑡𝑡
𝑉𝑉(𝑡𝑡) = 250000𝑒𝑒 2 𝑖𝑖
Crear la función que permita calcular el valor de la propiedad para los primeros
4 años (es decir de 0 a 3), registre los datos en una tabla.
Hallar el interés cuando el depósito es de 200 US, con una tasa del 2.5% a 12,
24 y 36 meses. Estos datos deben ser solicitados por consola.
𝑇𝑇1 − 𝑇𝑇2
𝑄𝑄 = −2𝜋𝜋𝜋𝜋𝜋𝜋
𝑅𝑅
𝑙𝑙𝑙𝑙 �𝑅𝑅2 �
1
𝑇𝑇1 − 𝑇𝑇2 1 1
𝑇𝑇 = 𝑇𝑇1 + � − �
1 1
�𝑅𝑅 − 𝑅𝑅 � 𝑅𝑅1 𝑅𝑅
1 2
1 1 1
Donde = +
𝑅𝑅 𝑅𝑅1 𝑅𝑅2
𝑇𝑇1 − 𝑇𝑇2
𝑄𝑄 = 4𝜋𝜋𝜋𝜋
1 1
�𝑅𝑅 − 𝑅𝑅 �
1 2
Figura 7.13
Para la entrada del programa, cree el script que pida al usuario que introduzca
valores de las temperaturas y los radios. Para la salida del programa que
muestre el mensaje:
"la temperatura de flujo radial en grados centígrados es: "
2𝑔𝑔ℎ
𝑉𝑉2 =
� 𝐴𝐴 2
1 − �𝐴𝐴2 �
1
Figura 7.14
Donde g es la gravedad, 𝐴𝐴1 y 𝐴𝐴2 son las áreas de carga y descarga de agua
respectivamente, tal como se indica en la figura.
39. La sensación térmica (𝑇𝑇𝑠𝑠𝑠𝑠 ), es la temperatura del aire que se siente en la piel
expuesta al viento.
Cree una función en un script que calcule 𝑇𝑇𝑠𝑠𝑠𝑠 . Para la entrada del programa, se
pida al usuario que digite los valores para T y v. Para la salida del programa
que muestre el mensaje: "la temperatura de sensación térmica es: ".
Suponga que se tiene las coordenadas (50, 18.3) y (80, 21.5), y los valores de
x para interpolar son 63.2 y 85.4.
Determine los valores de y, donde los valores se pidan por consola. Para la
salida del programa muestre el mensaje: "El valor de y es: ".
41. Acción dinámica del viento. El período fundamental para edificios puede
calcularse mediante fórmulas empíricas:
ℎ ℎ
𝑇𝑇 = 0.08 �
√𝐿𝐿 𝐿𝐿 + ℎ
ℎ
𝑇𝑇 = 0.09
√𝐿𝐿
Crear las funciones para cada caso, donde las constantes se pidan por consola.
Figura 7.15
b. Calcule las áreas que tendría el ducto, con base en los resultados del punto
anterior.
c. Dada el área A, sobre la cual fluye el fluido a una velocidad uniforme v con
un ángulo 𝜃𝜃 desde la dirección perpendicular a A, la tasa del caudal
volumétrico es:
𝑄𝑄 = 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴
Para la entrada del programa, el script debe pedir al usuario que digite los
valores dados. Para la salida del programa debe mostrar el mensaje:
44. La fuerza Fp que ejerce la pared vertical sobre una escalera de longitud L y
peso mg está determinado por la ecuación:
1 2𝑣𝑣𝑜𝑜2
𝐹𝐹𝑝𝑝 = 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 �1 − �
2 3𝑔𝑔𝑔𝑔𝑐𝑐𝑐𝑐𝑐𝑐 3 𝜃𝜃
Figura 7.16
𝐶𝐶𝐶𝐶
𝑃𝑃(𝑥𝑥 ) =
1
1−(
𝑥𝑥 + 1)60
Cree un función en la que se solicite por consola tanto el monto del préstamo,
que para este caso es de $ 65000000, y la tasa de interés anual, que es de 8.5
%, 9 %, 9.5 %, y 10 %.
Tenga en cuenta que la tasa es anual, por ende, debe dividirse entre 12 meses.
Los datos de entrada son T = 305; Ec = 2.45 ev; EF = 1.68 ev y 𝑚𝑚𝑛𝑛∗ = 0.42 veces
la masa del electrón.
48. Las fuerzas Fx y Fy que se ejercen sobre la varilla en su eje de rotación están
representadas por las siguientes ecuaciones:
3𝑚𝑚𝑚𝑚
𝐹𝐹𝑥𝑥 = 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠(3𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 − 2𝑐𝑐𝑐𝑐𝑐𝑐𝜃𝜃𝑜𝑜 )
4
3
𝐹𝐹𝑦𝑦 = 𝑚𝑚𝑚𝑚 �1 − (1 + 2𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝜃𝜃𝑜𝑜 − 2𝑐𝑐𝑐𝑐𝑐𝑐 2 𝜃𝜃)�
4
Cree una sola función que permita digitar los siguientes parámetros para hallar
las fuerzas en x e y. m = 2.3 Kg; 𝜃𝜃 = 35o y 𝜃𝜃𝑜𝑜 = 12.7o
Para la entrada del programa, cree el script de nombre Fuerzas, que pida al
usuario que digite los valores dados. Para la salida del programa debe mostrar
los mensajes:
Ejemplos
f1=@cos
f1 =
@cos
y=f1(pi/3)
y =
0.5000
>> whos f1
Name Size Bytes Class Attributes
f1 1x1 32 function_handle
function y = fun(x)
g= -2*x.^2.15 + 53.12*(x+1).^-2;
f2=@fun
g=fun(0)
f2 =
@fun
g =
53.1200
ezplot(@fun, [0,6])
fun
60
40
20
-20
-40
-60
-80
-100
0 1 2 3 4 5 6
x
Con la función handles se puede crear estructuras de datos con funciones. Por
ejemplo, crear un conjunto de celdas, donde los elementos sean las seis funciones
trigonométricas evaluada para el ángulo π/4.
funtrig={@sin,@cos,@tan,@cot,@sec,@csc}
funtrig{6}(pi/4)
ans =
1.4142
Cuando una función requiere a otra como argumento, puede asignarla también por
nombre o por la sentencia inline, aunque lo recomendable es utilizar un Function
handle. Por ejemplo, resolver la integral mediante la función quad:
𝜋𝜋
𝐼𝐼 = � cos(𝑥𝑥)𝑑𝑑𝑑𝑑
−𝜋𝜋/3
I=quad('cos(x)',-pi/3,pi)
I =
0.8660
I=quad(inline('cos(x)'),-pi/3,pi)
I =
0.8660
La tercera solución equivale a pasar antes la función handle con la función coseno
a una variable, es decir:
f3=@cos
f3 =
@cos
I=quad(f3,-pi/3,pi)
I =
0.8660
7.9 Práctica 3
x5 −5x4−7x3 −x2−4x+15
6. 𝑓𝑓(𝑥𝑥 ) = , con x= 1, 2, 3, 4.
5x3 −3x2
π
7. y = 5cos � (x + 1)�, con x= 0, 1, 2, 3, 4, 5.
2
8. 𝑓𝑓(𝑥𝑥 ) = 𝑎𝑎𝑥𝑥 2 + 𝑒𝑒 𝑏𝑏𝑏𝑏 , donde a=5, b=0.5, calcular f(0), f(1), f(2) y f(3).
𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥(1+cos(2𝑥𝑥)))
9. 𝑓𝑓(𝑥𝑥 ) = , con x= π(0, 1, 2/3, 7/3, 11/3). Graficar f(x)
𝑠𝑠𝑠𝑠𝑠𝑠(2𝑥𝑥)
π 11π
10. f(t) = hcos � 𝑡𝑡 − �, cuál es el valor de f(t) cuando h = 0.5 y t= 0, 2, 4, 6.
6 12
𝑡𝑡
12. 𝑦𝑦(𝑡𝑡) = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑡𝑡) �𝑒𝑒 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 − 2𝑐𝑐𝑐𝑐𝑐𝑐3𝑡𝑡 − 𝑠𝑠𝑠𝑠𝑠𝑠4 12�, con x= 0, 2, 4, 6, 8. Graficar f(x).
2�2𝑔𝑔ℎ
𝑣𝑣 =
�𝑟𝑟22 − 𝑟𝑟12
14. Si una masa que está unida a un resorte se eleva ho pies y se suelta con una
velocidad vertical de vo (ft/s), entonces la posición h subsiguiente de la masa
está dada por:
𝑣𝑣𝑜𝑜
ℎ = ℎ𝑜𝑜 cos(𝜔𝜔𝜔𝜔) + sen(𝜔𝜔𝜔𝜔)
𝜔𝜔
15. La distancia d (Km) de una zona de baja presión a otra, se expresa mediante
la fórmula:
1/3
𝑣𝑣𝑣𝑣
𝑑𝑑 = 2𝜋𝜋 � �
0.52𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐
16. El número de horas de luz diurna D(t) en un tiempo t del año, se puede calcular
mediante la ecuación:
𝑘𝑘 2𝜋𝜋
𝐷𝐷(𝑡𝑡) = 𝑠𝑠𝑠𝑠𝑠𝑠 � (𝑡𝑡 − 79)� + 12 , 0 ≤ 𝑡𝑡 ≤ 365
2 365
Donde k determina la variación total de duración del día, que depende de la
latitud del lugar.
17. Un proyectil se dispara desde el nivel del suelo a una velocidad de v (ft/s), con
un ángulo de ϴ grados con la horizontal. El alcance máximo del proyectil está
dado por:
𝑣𝑣 2
𝑅𝑅 = 𝑠𝑠𝑠𝑠𝑠𝑠(θ)cos(𝜃𝜃)
16
𝜋𝜋𝜋𝜋 𝑘𝑘𝜋𝜋𝑛𝑛
𝑓𝑓 (𝑥𝑥 ) = 𝑠𝑠𝑠𝑠𝑠𝑠 � 𝑥𝑥� 𝑐𝑐𝑐𝑐𝑐𝑐 � 𝑡𝑡�
𝑙𝑙 𝑙𝑙
20. Un objeto al ser lanzado verticalmente hacia arriba desde una altitud de ho pies,
con una velocidad inicial v (ft/s), entonces la distancia h(t) sobre el suelo
después de t segundos es:
ℎ(𝑡𝑡) = −16𝑡𝑡 2 + 𝑣𝑣𝑣𝑣 + ℎ0
3/2
8𝜋𝜋𝑝𝑝2 𝑎𝑎2
𝑆𝑆 = ��1 + 2 � − 1�
3 4𝑝𝑝
𝑚𝑚 3/2 2 −𝑚𝑚𝑣𝑣2
𝜌𝜌(𝑣𝑣 ) = 4𝜋𝜋 � � 𝑣𝑣 𝑒𝑒 2𝑘𝑘𝑘𝑘
2𝜋𝜋𝜋𝜋𝜋𝜋
Determinar 𝜌𝜌(𝑣𝑣 ) para una partícula cuya masa es 10.5 veces la masa del
electrón, expuesta a una temperatura absoluta de 420 K, donde la velocidad
coordenada es (-2.3, 4, 5.1)x105 m/s.
Crear un manipulador de la función 𝑓𝑓(𝑥𝑥, 𝑦𝑦), para x= 0.5, 0.4 y 0.1, con tiempos
respectivos 1.2, 1.45 y 1,72 s. Tome valores constantes de k=4 m-1, ω=0.35
rad/s, φ=300.
La función es anónima porque no tiene ningún nombre fijo, seguirá siendo la misma
función independientemente del nombre de la variable.
Ejemplo
1. Sea 𝑓𝑓 (𝑥𝑥 ) = 2𝑥𝑥 2 − 3𝑥𝑥 + 1, evaluar la función para los siguientes casos:
a. f(2.5486) y f(-1.451)
y =
9.5638
𝑥𝑥 3 +2𝑥𝑥+1
2. Dibujar la curva 𝑓𝑓 (𝑥𝑥 ) = para 𝑥𝑥 ∈ [−3,4]
𝑥𝑥+3
f = @(x) (x.^3+2*x+1)./(x+3);
x = linspace(-3,4);
plot(x,f(x))
50
-50
-100
-150
-200
-250
-300
-350
-400
-450
-3 -2 -1 0 1 2 3 4
Figura 7.18
f1=@(x,y) x.*exp(-(x.^2+y.^2));
f1(2,0.6)
ans =
0.0256
%%
f2=@(x,y,z) f1(x,y)*sqrt(z+3);
f2(2,2,12)
ans =
0.0026
4. Dadas las funciones 𝑓𝑓 (𝑥𝑥 ) = 3𝑠𝑠𝑠𝑠𝑠𝑠3 (𝑥𝑥)𝑐𝑐𝑐𝑐𝑐𝑐 2(2𝑥𝑥) y 𝑔𝑔(𝑥𝑥 ) = 2𝑒𝑒 𝑥𝑥 − 2𝑥𝑥 + 1 para 𝑥𝑥 ∈
[−2,2], graficar en la misma ventana.
f = @(x) 3*sin(x).^3.*cos(2*x).^2;
g = @(x) 2*exp(x)- 2*x +1;
x = linspace(-2,2);
plot(x,f(x),x,g(x))
12
10
-2
-4
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
Figura 7.19
5. Dada la integral I, implemente las funciones a integrar mediante funciones
anónimas.
𝜋𝜋/4
𝐼𝐼 = � cos(𝑥𝑥 ) 𝑑𝑑𝑑𝑑
0
Tome 1000 particiones
f =@(x) cos(x);
I = trapecio(f,0,pi/4,1000)
I =
0.7071
Para el acceso a las variables desde las funciones anónimas, las variables internas
no tienen ninguna relación con las variables del resto del entorno de ejecución. Por
ejemplo. Se desea definir la siguiente función de dos variables:
f=@(x,y) 2*x.*exp(sqrt(x+y))
f =
@(x,y)2*x.*exp(sqrt(x+y))
f(sin(30),cos(-30))
ans =
-1.2079 - 1.5639i
f(5,3)
ans =
169.1883
a=1;
f=@(x,y) 2*x.*exp(sqrt(x+a))
f =
@(x,y)2*x.*exp(sqrt(x+a))
De este modo se pide que la función tome una variable que en realidad es externa
como propia. Al evaluar en algún punto se tiene:
f(log(10))
ans =
28.3459
7.12 Práctica 4
Funciones anónimas
𝑥𝑥+1
d. ℎ(𝑥𝑥 ) = , para el vector [-3,3]
𝑥𝑥 2 −3𝑥𝑥+8
3𝑡𝑡 2
f. 𝑔𝑔(𝑡𝑡) = √𝑡𝑡 2 , g(-1.5), g(0.5), g(3/2) y g(2.51)
+3𝑡𝑡−1
Donde 10 ≤ 𝑥𝑥 ≤ 100
𝑥𝑥 2 +1
4. Dibujar la curva 𝑓𝑓(𝑥𝑥 ) = para 𝑥𝑥 ∈ [−2,3]
𝑥𝑥+3
2𝐽𝐽
𝑇𝑇𝑐𝑐 (𝐽𝐽) =
𝐾𝐾𝐵𝐵 log(√2 + 1)
2 1
𝑦𝑦(𝑡𝑡) = − 𝑠𝑠𝑠𝑠𝑠𝑠(15𝑡𝑡)
3 cos(15𝑡𝑡) 4
15. El costo de pedido y transporte C (en miles de dólares) para los componentes
empleados en un proceso de manufactura se representa por la fórmula:
1 1.15𝑥𝑥
𝐶𝐶 (𝑥𝑥 ) = 12.5 � + �
𝑥𝑥 𝑥𝑥 + 3.5
Figura 7.20
El área de la sección transversal del canal es de 100 ft2. Para reducir el costo
del concreto x, se ha minimizado la longitud perimetrla L del canal.
1 ℎ2 100 ℎ 2ℎ
𝑥𝑥 = �100 − 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡�; 𝐿𝐿 = − +
ℎ ℎ 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠
𝑡𝑡 2𝜋𝜋𝜋𝜋
𝑣𝑣 (𝑡𝑡) = 10𝑒𝑒 −0.05 𝑠𝑠𝑠𝑠𝑠𝑠 � �
0.03
20. Cree una función anónima para probar las siguientes funciones:
𝑥𝑥 + 𝑦𝑦 + 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥 − 𝑦𝑦)
c. 𝑓𝑓 (𝑥𝑥, 𝑦𝑦) = � �
𝑥𝑥 − 𝑦𝑦 + 2cos(𝑥𝑥 + 𝑦𝑦)
Una función puede contener varias funciones anidadas al mismo nivel, y una función
anidada puede también ser contenedora, es decir contener a su vez una ó más
funciones anidadas.
En cuanto a las variables, estas son de carácter local, por lo que no pueden ser
vistas por otras funciones o subfunciones. Por consiguiente, las funciones
contenedoras pueden modificar las variables locales. Como regla general, una
variable definida en una función anidada, pertenece al espacio de trabajo de la
función contenedora más exterior que a posteriori accede a dicha variable.
Ejemplos
Adicione las instrucciones que muestren por pantalla las respuestas de las raíces
y los valores de la comprobación.
function [r1,r2]=comprobar_raices(a,b,c)
dis=sqrt(b*b-4*a*c);
function calcula_raiz1
disp('La raiz x1 es: ')
x1=(-b+dis)/(2*a)
end
function calcula_raiz2
disp('La raiz x2 es: ')
x2=(-b-dis)/(2*a)
end
calcula_raiz1;
calcula_raiz2;
r1=x1+x2;
r2=x1*x2;
disp('La comprobación de las raices es: ')
end
[r1,r2]=comprobar_raices(1,-1,-6)
La raiz x1 es:
x1 =
3
La raiz x2 es:
x2 =
-2
La comprobación de las raíces es:
r1 =
1
r2 =
-6
function z=tresxcuadrado(x)
function [y]=cuadrado(x)
y=x*x;
end
z=3*cuadrado(x);
end
Prueba
x=10;
tresxcuadrado(x)
ans =
300.00
function y=funprincipal(a,b)
y=subfun1(a,b);
end
function x=subfun1(y,z)
x=subfun2(y,z);
end
function x=subfun2(y,z)
x=2*y+3*z-5;
end
funprincipal(5,-3)
ans =
-4.00
%Calcula el promedio.
a = sum(v)/n;
function m = median(v, n)%Subfunción 2
%Calcula la mediana.
w = sort(v);
if rem(n, 2) == 1
m = w((n+1) / 2);
else
m = (w(n/2) + w(n/2+1))/2;
end
medmed(10)
ans =
10
mean(5,6)
ans =
5
median(5,6)
ans =
5
7.14 Práctica 4
1. Dadas las fórmulas de caída libre, cree las subfunciones o funciones anidadas
donde se soliciten las variables de cada ecuación, excepto la gravedad.
1 2
ℎ= 𝑔𝑔𝑡𝑡
2
2ℎ
𝑡𝑡 = �
𝑔𝑔
1
𝑣𝑣𝑎𝑎 = 𝑔𝑔𝑔𝑔
2
Donde 𝑃𝑃1 y 𝑃𝑃2 son las presiones medidas en pascales; 𝜌𝜌 densidad del fluido
(kg/m3); 𝑣𝑣1 y 𝑣𝑣2 la rapidez del fluido en diferentes secciones medida en m/s; ℎ1 y
ℎ2 la altura con respecto a la horizontal medida en metros.
b. Calcule las áreas que tendría el ducto, con base en los resultados del punto
anterior.
c. Dada el área A, sobre la cual fluye el fluido a una velocidad uniforme v con
un ángulo 𝜃𝜃 desde la dirección perpendicular a A, la tasa del caudal
volumétrico es:
𝑄𝑄 = 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴