Documente Academic
Documente Profesional
Documente Cultură
Funciones definidas por el usuario; generalmente para representar una función que se
usara en varios programas adicionales.
x FUNCIÓ y f x
N
La primera línea en el editor es la definición de la función que comienza con la palabra clave
function
function [variables_salida]=nombre_funcion(variables_entrada)
sentencias
end
O tambien
function variable_salida=nombre_funcion(variables_entrada)
sentencias
end
1. nombre_funcion, es el nombre significativo que se le asigna a la función y
coincide con el nombre del fichero de extensión .m en el que se guarda el código
02 archivos de función 1
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
de dicha función. Las reglas para nombrar una función son las mismas que para
las variables, los nombres no deben de incluir espacios, ni se pueden utilizar
palabras reservadas por MATLAB.
2. variables_entrada, es el conjunto de parámetros que se le pasa a la función.
Los nombres de las variables van entre paréntesis y separadas por coma.
3. variabales_salida, es el valor o conjunto de valores de las variables devueltos
por la función. Las variables de salida van después de la palabra reservada
function entre corchetes cuadrados y separados por comas si hay varios.
3. sentencias, líneas de código que tomando los valores de los parámetros de
entrada calculan mediante expresiones los valores que devuelve la función.
4. end, marca el final de la función es opcional (salvo en las funciones anidadas)
pero es conveniente acostumbrarse a ponerlo al finalizar la función.
function y=nombre_funcion(a,b,c)
4. En general, definiremos una función del siguiente modo:
function [y1, y2]=nombre_funcion(a,b,c)
Con tres argumentos a, b y c variables de entrada y que devuelve dos resultados en las
variables y1 e y2.
Una función se llama del mismo modo que las funciones predefinidas. Las funciones se
pueden llamar desde la ventana de comandos, desde un fichero script o desde otra
función.
Todas las variables en una función son locales a dicha función, incluyendo las de
entrada y las de salida.
02 archivos de función 2
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Cuerpo de la función
Aquí se tiene el código del programa mismo, que incluirá operaciones de entrada y/o
salida, también salida de gráficos si el problema lo amerita.
Con esta función se podrían hacer muchas cosas, como: graficar, derivar, integrar, etc.
Veamos una de ellas, grafiquemos en el intervalo [-10,10]
02 archivos de función 3
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
350
300
250
200
150
100
50
-50
-10 -5 0 5 10
( ) ( ) ( )
V=[-b/(2*a),c-(b^2/(4*a))]
V = -1 2
p=1/(4*a) p = 0.2500
F=V+[0,p] F = -1.0000 2.2500
dx=(e-d)/100 dx = 0.0900
x=d:dx:e;
y=a*x.^2+b*x+c; Intgral = 99.0000
inty=[a/3 b/2 c 0]; >>
Intgral=polyval(inty,e)-
polyval(inty,d)
n=length(x);
dz=(V(2)-p)*ones(n,1);
plot(x,y,x,dz)
02 archivos de función 4
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
40
35
30
25
20
15
10
0
-4 -3 -2 -1 0 1 2 3 4 5
g=9.81;
v0x=v0*cos(theta*pi/180);
v0y=v0*sin(theta*pi/180);
thmax=v0y/g;hmax=v0y^2/(2*g);
ttot=2*thmax;dmax=v0x*ttot;
Grafico resultante
02 archivos de función 5
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
TRAYECTORIA DE UN PROYECTIL
250
200
ALTURA (m)
150
100
50
0
0 100 200 300 400 500 600
DISTANCIA (m)
02 archivos de función 6
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
FUNCIONES ANÓNIMAS
Las funciones anónimas nos permiten definir una función simple sin necesidad de crearla y
guardarla en un fichero .m. Se pueden definir en la ventana de comandos, en un fichero script o
dentro de otra función, con la siguiente sintaxis:
variable=@(parámetros) expresion
expresion consiste en una única y válida expresión, puede tener una o más variables de entrada
que se especifican en la lista de argumentos separadas por comas. Puede incluir variables que se
han definido previamente
Las funciones se pueden asignar a variables y estas variables se pueden pasar a otras funciones
como se pasan escalares o vectores. Más adelante veremos cómo se llama a una función dentro
de otra función que se le pasa en uno de sus parámetros.
Comparamos la definición de una función func que se guarda en un fichero func.m y su
equivalente anónima
function y=func(x)
y=cos(x)-x;
end
Llamada a la función
>> z=func(0.5)
z = 0.3776
Su equivalente anónima se escribe en la ventana de comandos sin necesidad de guardarla en un
fichero y se llama del mismo modo que cualquier otra función
>> f=@(x) cos(x)-x;
>> z=f(0.5)
z = 0.3776
f guarda un valor asociado a una función que denominaremos manejador ( function handle)
02 archivos de función 7
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
En la ventana Workspace, vemos que aparece una variable f de distinto tipo que guarda la
referencia a la función anónima.
Sea una función anónima f que incluye una variable a cuyo valor definimos previamente
>> a=4;
>> f=@(x) a*x;
>> f(3)
ans = 12
Si cambiamos el valor de la variable a, el cambio no tiene efecto en la función f como vemos en
el siguiente código
>> a=5;
>> f(3)
ans = 12
02 archivos de función 8
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Existen mucha situaciones en las que una función f1 utiliza otra función f2. Por ejemplo,
MATLAB tiene una función fzero que se utiliza para calcular las raíces de una ecuación f (x)=0.
La función f se le pasa a fzero cuando se llama para encontrar las raíces de f(x). Hay varias
formas de pasar una función f a otra función para su uso.
Ya hemos visto el significado de manejador para una función anónima, un valor que guarda una
variable f o c y que está asociado a una función.
Si definimos una función de forma explícita en un fichero por ejemplo, la función func,
obtenemos el manejador anteponiendo el carácter @ al nombre de la función
Para
Un fichero función puede contener más de una función. Las funciones se definen una a
continuación de la otra. La primera función es la primaria y tiene el mismo nombre que el
fichero, las otras funciones son secundarias y se denominan subfunciones y pueden estar en
cualquier orden dentro del fichero. Solamente se puede llamar a la función primaria en la
ventana de comandos o por otras funciones. Cada función tiene sus propias variables que son
locales a la función, no se puede acceder a las variables de una subfunción desde la función
primaria o desde otra subfunción. No se puede acceder a las variables de la función primaria
desde una subfunción.
Las subfunciones permiten organizar tareas grandes en otras más pequeñas.
02 archivos de función 9
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Más adelante veremos la utilidad de estas funciones cuando los programas sean más largos y
complejos, de momento vamos a ver un ejemplo que nos permita vislumbrar como se definen y
llaman las subfunciones.
Vamos a crear una función que nos permita comprobar las propiedades de las raíces de una
ecuación de segundo grado, y dos subfunciones, la primera calcula la raíz y la segunda la
raíz .
En el editor de funciones creamos la función comprobar_raices, a la que se le pasa los
coeficientes a, b y c de la ecuación de segundo grado y devuelve los cocientes -b/a y c/a de la
suma y producto de las dos raíces x1 y x2. Guardamos el código de la función primaria
comprobar_raices y de las subfunciones calcula_raiz1 y calcula_raiz2 en el fichero
comprobar_raices.m
Archivo en MatLab: comprobar raíces.m
function [suma,producto]=comprobar_raices(a,b,c)
x1=calcula_raiz1(a,b,c);
x2=calcula_raiz2(a,b,c);
suma=x1+x2;
producto=x1*x2;
end
function raiz=calcula_raiz1(a,b,c)
raiz=(-b+sqrt(b*b-4*a*c))/(2*a);
end
Para comprobar las raíces de la ecuación de segundo grado x2-x-6=0, llamamos a la función
comprobar_raices y le pasamos los coeficientes 1,-1,-6 y nos devolverá -b/a=1 y c/a=-6
>> [-b/,c/a]=comprobar_raices(1,-1,-6)
b_a = 1
c_a = -6
FUNCIONES ANIDADAS
Una función anidada es una función definida dentro de otra función. Las funciones primarias y
las anidadas deben obligatoriamente terminar con end
Las funciones anidadas tienen acceso a las variables de la función primaria y la función primaria
tiene acceso a las variables definidas por la función anidada.
Una función anidada puede contener otra y así sucesivamente, pero este proceso puede llevar a
confusión. Existen reglas para llamar a una función anidada dentro de otra pero no tiene por el
momento interés para el lector.
En el editor de funciones creamos la función comprobar_raices1, a la que se le pasa los
coeficientes a, b y c de la ecuación de segundo grado y devuelve los cocientes -b/a y c/a de la
suma y producto de las dos raíces x1 y x2. Guardamos el código de la función primaria
02 archivos de función 10
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Vemos que las funciones anidadas calcula_raiz1 y calcula_raiz2 tienen acceso a los parámetros
a, b y c de la función primaria, que son variables locales a la función comprobar_raices y
también, a la variable local dis, que guarda el discriminante de la ecuación de segundo grado.
Por otra parte, la función primaria tiene acceso a las variables x1 y x2 declaradas en cada una de
las funciones anidadas.
Estas funciones anidadas no precisan de variables de entrada y no devuelven nada.
Para comprobar las raíces de la ecuación de segundo grado x2-x-6=0, llamamos a la función
comprobar_raices1 y le pasamos los coeficientes 1,-1,-6 y nos devolverá -b/a=1 y c/a=-6
>> [b_a,c_a]=comprobar_raices(1,-1,-6)
b_a = 1
c_a = -6
Como ejercicio se porpone al lector crear la función estadistica_1, que devuelva la media y la
desviación estándar, cuando se le pasa un vector de datos. El valor medio se calculará mediante
la función anidada media y la desviación estándar mediante la función anidada desviacion.
En primer lugar, creamos la función estadistica_1, y dos funciones auxiliares: la función media
y la función desviacion en el mismo fichero estadistica_1.m
function [med,des]=estadistica_1(datos)
n=length(datos);
med=media(datos,n);
des=desviacion(datos,med,n);
end
%calcula la media del vector de datos
function res=media(x,num)
res=sum(x)/num;
end
%calcula la desviación estándar
function res=desviacion(x,m,num)
xd=x-m;
xd_suma=sum(xd.^2);
res=sqrt(xd_suma)/(num-1);
end
Ahora trasladamos las funciones media y desviacion al interior de la función estadistica _1.
function [med,des]=estadistica_1(x)
n=length(x);
media;
desviacion;
%calcula la media del vector de datos
function media
02 archivos de función 11
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
med=sum(x)/n;
end
%calcula la desviación estándar
function desviacion
xd=x-med;
xd_suma=sum(xd.^2);
des=sqrt(xd_suma)/(n-1);
end
end
En la ventana de comandos probamos las dos versiones de la función estadistica_1.
>> [med,des]= estadistica_1([1.65 1.82 1.72 1.75 1.73 1.85
1.90 1.74 1.76 1.77])
med =
1.7690
des =
0.0713
FUNCIONES EN LINEA
Se usan para realizar funciones simples, que también pueden tener una o más variables
de entrada.
nombre inline 'exp resion matematica en forma de cadena '
nombre inline 'exp resion matematica ','arg1','arg 2', ,'arg n '
y f x 3x 2 6 x 8
Ejemplo: Considerando la función cuadrática:
>> f=inline('3*x^2+6*x-8') % definiendo una function en linea
f = Inline function:
f(x) = 3*x^2+6*x-8
>> f=inline('3*x^2+6*x-8','x') % agregando la variable
f = Inline function:
f(x) = 3*x^2+6*x-8
>> f(1)
ans = 1
>> f(2)
ans = 16
Ejemplo: Ahora consideraremos una función real de dos variables:
>> G=inline('3*x+6*y+9*x*y-6','x','y')
G = Inline function:
G(x,y) = 3*x+6*y+9*x*y-6
>> G(1,2)
ans = 27
>> G(1,2),G(6,8)
ans = 27
ans = 492
>> [G(1,2), G(3,5), G(8,1), G(3,7)]
ans = 27 168 96 234
>> x=[1 2 3],y=[7 6 4]
x= 1 2 3
y= 7 6 4
>> G(x,y)
??? Error using ==> inlineeval at 15
Error in inline expression ==> 3*x+6*y+9*x*y-6
Inner matrix dimensions must agree.
Error in ==> inline.subsref at 27
02 archivos de función 12
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Como aparece un error debemos redefinir la función, para cuando los argumentos son
vectores o matrices.
>> G=inline('3*x+6*y+9*x.*y-6','x','y') % véase la diferencia
G = Inline function:
G(x,y) = 3*x+6*y+9*x.*y-6
>> G(x,y)
ans = 102 144 135
>>
Ahora una función de dos variables de entrada y dos de salida
>> g=inline('[3*x+6*y+9,x+y-6]','x','y')
g = Inline function:
g(x,y) = [3*x+6*y+9,x+y-6]
>> g(2,3)
ans = 33 -1
>> x=[1 3 5],y=[9 8 4]
x= 1 3 5
y= 9 8 4
>> g(x,y)
ans = 66 66 48 4 5 3
>> g(1,9),g(3,8),g(5,4)
ans = 66 4
ans = 66 5
ans = 48 3
>>
Ejemplo: g x, y 4 x5 y 7 x3 y 2 8x 2 y 4 6 x 29 y 6
>> G=inline('4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)')
G = Inline function:
G(x,y) = 4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)
>> G(5,6),G(8,7),G(9,1)
ans = -1505694
ans = -3547965
ans = 240676
>> x=[-2 -1 0 1 2 3 4 5],y=[-3 -2 -1 0 1 2 3 4]
x = -2 -1 0 1 2 3 4 5
y = -3 -2 -1 0 1 2 3 4
>> G(x,y)
ans = -23865 -2010 -29 6 135 -290 -15165 -105954
EL COMANDO “feval”
Este comando evalúa el valor de una función, en algún o algunos valores dados. La
diferencia con el caso anterior, está en que aquí se da la función, solo el nombre, y se
evalúa en el valor dado.
variable = feval(„nombre_funcion‟,valor_argumento)
02 archivos de función 13
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Ejemplo 01: Aquí vamos a definir una función H, y luego la evaluamos en x=1.
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591
>>
Ejemplo 02:
>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591
Ejemplo 03:
>> G=inline('exp(x.^2)./(y+x.^4)')
G = Inline function: G(x,y) = exp(x.^2)./(y+x.^4)
>> feval(G,1,1)
ans = 1.3591
>> feval(G,4,5)
ans = 3.4046e+004
Ejemplo 04:
>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> D=feval('sin',0)
D= 0
>> D=feval('sin',pi/6)
D = 0.5000
>> D=feval(inline('cos(x)+tan(x)'),pi/7)
D = 1.3825
02 archivos de función 14
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
r 2 1,1 sen 2
La entrada de la función será (en radianes) y la salida será r . Escriba la función de forma
que pueda ser un vector, y utilícela para:
a) Calcular r / 3 y r 3 / 2
b) Representar gráficamente (en coordenadas polares) r para 0 2
4. Escriba una función MATLAB que calcule el máximo o mínimo local de una función
cuadrática de la forma: f ( x) ax 2 bx c . Utilice la siguiente línea de definición de la
función : x,y maxmin(a,b,c) . Los argumentos de entrada son las constantes. a, b y c y los
argumentos de salida son las coordenadas x e y del máximo o el mínimo de la función.
Utilice la función para calcular el máximo o el mínimo de las siguientes funciones:
a) f ( x) 3x 2 18x 48
b) f ( x) 5x 2 10 x 3
5. El valor P de una cuenta de ahorros, con un capital inicial P0 y una tasa de interés anual r
(en %) después de t años, viene dado por:
t
r
P P0 1
100
Escriba una función que calcule el valor futuro de una cuenta de ahorros. Utilice para ello la
siguiente línea de definición de función: P saval PO, r , t . Las entradas de la función serán
en capital inicial, la tasa de interés y el número de años. La salida será el valor de la cuenta a
partir de los datos especificados en la entrada. Utilice posteriormente está función para
calcular el valor de un capital inicial de 10 000 €, a un interés anual del 6%, después de 13
años.
6. Escriba una función que convierta las unidades de un par de torsión (fuerza que causa la
rotación de un objeto) de libras-pulgadas a newtons-metro. Utilice la siguiente línea de
definición para la función: Nm = lbintoNm(lbin) . El argumento de entrada será el par en
libras-pulgadas, y el argumento de salida el par en newtons-metro. Utilice posteriormente esta
función para convertir 500 libras-pulgada a newtons-metro.
7. Escriba una función que calcule los ángulos de un triángulo a partir de las longitudes de sus
lados. Utilice para ello la siguiente línea de definición de función:
alp,bet,gam triangulo(a,b,c) . Utilice posteriormente esta función para calcular los
siguientes triángulos:
a = 10, b = 15, c = 7
a = 6, b = 8, c = 10
a = 200, b = 75, c = 250
8. Escriba una función que calcule el vector unitario en la dirección de la recta que une dos
puntos (A y B) en el espacio. Utilice la siguiente línea de definición de función:
n = unitvec (A,B) . La entrada de la función serán dos vectores A y B, cada uno con tres
elementos correspondientes a las coordenadas cartesianas de dichos puntos. La salida será un
vector con tres componentes que representan las coordenadas del vector unitario en la
dirección de A a B. Utilice posteriormente esta función para determinar los siguientes vectores
unitarios:
En la dirección del punto (2,6,5) al punto (-10,15,9)
En la dirección del punto (-10,15,9) al punto (2,6,5)
En la dirección del punto (1,1,2) al punto (2,1,1)
02 archivos de función 15
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
10. Escriba una función que calcule la nota final de un estudiante a partir de la nota de su
examen final, sus dos exámenes parciales y de los cinco trabajos realizados durante el curso.
Los exámenes parciales se puntúan de 0 a 100, y cada uno es un20% de la nota final. El examen
final tiene la misma escala de puntuación, y es un 40% de la nota final. Los trabajos, sin
embargo, puntúan de 0 a 10, y todos ellos en conjunto representan un20% de la nota final.
La función debe tener la siguiente definición: g = notasfinales (R) , donde la entrada será una
matriz R que contenga en cada fila las notas de cada estudiante. Además por cada fila, se
tendrá 8 columnas que representarán las notas de los trabajos (las cinco primeras), la nota de
los dos, exámenes parciales (las dos siguientes) y la nota del examen final (la última columna)
de cada estudiante. La salida de la función será un vector columna g con la nota final del
curso. Cada fila de este vector será la nota final del estudiante cuyas notas se relacionan con la
correspondiente la fila de la matriz R .
La función debe usarse para calcular las notas finales de cualquier número de estudiantes.
Para el caso de un solo estudiante, la matriz R tendrá una sola fila. Aplique esta función en los
siguientes casos:
a) Utilice la Ventana de Comandos para calcular la nota de un estudiante con las siguientes
calificaciones: 10, 5, 8, 7, 9, 75, 87, 69.
b) Escriba un fichero script que pida al usuario las notas de los estudiantes y las almacene en
un array (cada estudiante en una fila). El programa debe calcular seguidamente las notas
finales utilizando la función notasfinales . Ejecute el fichero script en la Ventana de Comandos
para calcular las notas finales de los siguientes cuatro estudiantes:
Estudiante A: 7, 9, 5, 8, 10, 90, 70, 85
Estudiante B: 6, 4, 7, 0, 7, 60, 71, 50
Estudiante C: 5, 9, 10, 3, 5, 45, 75, 80
Estudiante D: 8, 8, 7, 7, 9, 82, 81, 88
11. Cuando se conectan n resistencias en paralelo, su resistencia equivalente REq viene
determinada por:
02 archivos de función 16
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
1 1 1 1
...
REq R1 R2 Rn
Escriba una función que calcule REq . Utilice la siguiente definición: REQ = req (R) , donde la
entrada será un vector en el cual cada elemento representa un valor de la resistencia, y la
salida será el valor de la resistencia equivalente REq . Utilice esta función para calcular la
resistencia equivalente de las siguientes resistencias en paralelo:
50, 75, 300, 60, 500, 180 y 200
12. Escriba una función que proporcione un número entero aleatorio en un rango concreto
especificado a partir de dos números. Utilice para ello la siguiente definición de función:
n = r a n d i n t (a,b) , donde los dos argumentos de entrada a y b son los números que
determinan el rango, y la salida será el número aleatorio calculado n .Utilice posteriormente
está función en la Ventana de Comandos para:
Generar un número aleatorio entre 1 y 49
Generar un número aleatorio entre -35 y -2
13. El momento de inercia superficial I x0 de un rectángulo alrededor del eje x0 que pasa por el
1 3
Centroide viene determinado por I x0 bh . El momento de inercia alrededor del eje x
12
paralelo a x0 viene dado por I x I x0 Ad x2 , donde A es el área del rectángulo, y d x la
distancia entre los dos ejes.
b
w
x0 t
h
dx h
t
x
Escriba una función que calcule el momento de inercia superficial de una viga en forma de "I"
alrededor del eje que pasa por su Centroide (ver dibujo). Utilice para ello la siguiente
definición de función: I = I v i g a (w, h, t) . Las entradas de la función serán el ancho w , la
altura h y el grosor t del nervio y las pestañas de la viga. (El momento de inercia del área
compuesta se obtiene dividiendo el área en distintas partes y sumando el momento de inercia
de cada una de ellas.)
Utiliza la función para calcular el momento de inercia de una viga en forma de "I" cuyas
dimensiones son w 200 mm, h 300 mm y t 22 mm.
14. La representación bidimensional del estado de tensión en un punto de un material cargado
queda definido por las tres componentes de la tensión xx , yy , xy .Las tensiones normales
máxima y mínima (tensiones principales) en el punto, max y min , se calculan a partir de las
min 2 2
02 archivos de función 17
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
Escriba una función que calcule las tensiones principales a partir de las componentes de la
tensión. Utilice para ello la siguiente línea de definición de función:
Smax,Smin TensionPrincipal (Sxx,Syy,Sxy) . Los argumentos de entrada serán las tres
componentes de la tensión, y la salida las tensiones máxima y mínima.
Utilice posteriormente esta función para calcular las tensiones principales para los siguientes
estados de tensión:
xx 150 MPa, yy 40 MPa y xy 80 MPa
xx 12 ksi, yy 16 ksi y xy 7 ksi.
15. En un filtro paso-bajo (filtro que pasa señales de bajas frecuencias), la relación de voltajes
viene determinada por:
V0 1
RV
Vi 1 RC
2
V0 RC
RV
Vi 1 2 LC RC
2 2
02 archivos de función 18
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
horizontal . Cuando se ejecute el fichero script , éste debe pedir al usuario que introduzca
los valores de R , C y L . Etiquete los ejes convenientemente y ejecute el script para los
siguientes casos:
R 1100 C 9 F y L 7 mH
R 500 C 300F y L 400 mH
in = cm/2.54;
lb = kg/0.460;
Ahora vienen algunos ejemplos de ejecución:
>> [in,lb]=SIaSTi(170,70)
in = 66.9291
lb = 152.1739
>> [in,lb]=SIaSTi(150,80)
in = 59.0551
lb = 173.9130
>> h=[120 130 140 150 160 170 180]
h = 120 130 140 150 160 170 180
>> p=[50 60 70 80 90 100 110]
p = 50 60 70 80 90 100 110
>> [in,lb]=SIaSTi(h,p)
in = 47.2441 51.1811 55.1181 59.0551 62.9921 66.9291 70.8661
lb = 108.6957 130.4348 152.1739 173.9130 195.6522 217.3913 239.1304
Capitulo 06 problema 02
pol4.m Ejecucion
function y=pol4(x) >> pol4(1)
%Funcion que evalua una funcion de polinomial ans = -16.1000
de grado 4. >> pol4(1),pol4(2)
%la variable de entrada puede ser un numero, un ans = -16.1000
vector o una matriz, ans = -43.6000
% la variable de salida tendra la misma estructura
y=0.9*x.^4-12*x.^2-5*x;
Ahora vienen algunos ejemplos de ejecución:
>> m=[1:10]
m = 1 2 3 4 5 6 7 8 9 10
>> pol4(m)
ans = 1.0e+003 *
-0.0161 -0.0436 -0.0501 0.0184 0.2375 0.7044 1.5379 2.8784 4.8879 7.7500
>> x=[1:0.1:4];
>> y=pol4(x);
>> plot(x,y)
>> grid
02 archivos de función 19
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
20
10
-10
-20
-30
-40
-50
-60
1 1.5 2 2.5 3 3.5 4
Capitulo 06 problema 03
funpolar.m Ejecucion
function r=funpolar(x) >> funpolar(-3)
%Función polar que asume valores
ans = 2.1602
angulares reales.
%El argumento de entrada esta en >> funpolar(5)
radianes ans = 0.3609
%El argumento de salida es un numero >> funpolar(pi/4)
real ans = 1.2000
r=2*(1.1-sin(x).^2); >>
Ahora vienen algunos ejemplos de ejecución:
>> x=[0:0.1:2*pi];
>> y=funpolar(x);
>> polar(x,y)
90
2.5
120 60
2
1.5
150 30
1
0.5
180 0
210 330
240 300
270
Capitulo 06 problema 04
extcuad.m Ejecucion
function [x,y]=extcuad(a,b,c) >> [x,y]=extcuad(3,-18,48)
%Funcion que da como resultado el
x= 3
extremo de una funcion cuadratica
% de la forma y = a*x^2 + b*x +c y = 252
%Habra mínimo si el valor de a es >> [x,y]=extcuad(-5,10,-3)
positivo x= 1
%Habra máximo si el valor de a es y = -40
negativo
x=-b./(2*a); >>
y=(4*a.*c-b.^2);
Capitulo 06 problema 05
saval.m Ejecucion
function P=saval(P0,r,t) >> saval(10000,6,13)
% Funcion que calcula el valor
ans = 2.1329e+004
futuro de una cuenta de ahorros
% Los valores de entrada son: >> saval(1000,5,10)
% P0: el capital inicial ans = 1.6289e+003
% r: la tasa de interes anualizada >>
% t: el tiempo en años
% el valor de salida es:
% P: El valor final de la cuenta
02 archivos de función 20
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
P=P0*(1+r/100).^t;
>> x=[1:10]
x = 1 2 3 4 5 6 7 8 9 10
>> y=saval(1000,15,x)
y = 1.0e+003 *
1.1500 1.3225 1.5209 1.7490 2.0114 2.3131 2.6600 3.0590 3.5179 4.0456
>> plot(x,y)
>> xlabel('tiempo')
>> ylabel('capital e intereses')
>> title('Capitalizacion')
>> grid
Capitalizacion
4500
4000
3500
capital e intereses
3000
2500
2000
1500
1000
1 2 3 4 5 6 7 8 9 10
tiempo
Capitulo 06 problema 06
lbintoNm.m Ejecucion
function Nm=lbintoNm(lbin) >> Nm=lbintoNm(345)
% Función que convierte las
Nm = 92.2875
unidades de un par de torsión
% Un par de torsión es una fuerza >> Nm=lbintoNm(500)
que causa la rotación de un objeto Nm = 133.7500
% Las unidades pasan de libras- >> Nm=lbintoNm(800)
pulgadas a newton-metro Nm = 214
% El argumento de entrada será un
par en libras-pulgadas >>
% el argumento de salida es un par
en newton-metro
Nm=lbin*0.2675;
Capitulo 06 problema 07
triangulo.m
function [alp,bet,gam]=triangulo(a,b,c)
% Funcion que resuelve un triangulo a partir de
los lados
% los argumentos de entrada seran los lados del
triangulo
% los argumentos de salida son los angulos de
este triangulo, en radianes
% Ademas debemos saber que:
% a+b<=c , b+c<=a, c+a<=b
alp=acos((b.^2+c.^2-a.^2)./(2*b.*c));
bet=acos((c.^2+a.^2-b.^2)./(2*a.*c));
gam=acos((a.^2+b.^2-c.^2)./(2*a.*b));
>> [alp,bet,gam]=triangulo(10,15,7)
alp = 0.5942 bet = 2.1446 gam = 0.4027
02 archivos de función 21
Métodos numéricos 02 Funciones y ficheros de función Mg. Amado Malca Villalobos
>> [alp,bet,gam]=triangulo(6,8,10)
alp = 0.6435 bet = 0.9273 gam = 1.5708
>> [alp,bet,gam]=triangulo(200,75,250)
alp = 0.7227 bet = 0.2507 gam = 2.1682
Capitulo 06 problema 08
unitvec.m
function n=unitvec(A,B)
% Funcion que calcula un vector unitario en la
dirección que
% une dos vectores en el espacio tridimensional
de A a B
% los argumentos de entrada seran dos puntos en
R3
% El argumento de salida es un vector unitario
V=[B(1)-A(1),B(2)-A(2),B(3)-A(3)];
mod=sqrt(V(1)^2+V(2)^2+V(3)^2);
n=(1/mod)*V;
>> unitvec([2 6 5],[-10 15 9])
ans = -0.7730 0.5797 0.2577
>> unitvec([-10 15 9],[2 6 5])
ans = 0.7730 -0.5797 -0.2577
>> unitvec([1 1 2],[2 1 1])
ans = 0.7071 0 -0.7071
Capitulo 06 problema 09
DistPaL.m
function d=DistPaL(x0,y0,A,B,C)
% Funcion que calcula la distancia del punto P=(x0,y0),
% ala recta: Ax + By + C = 0
% los argumentos de entrada seran las coordenas de P: x0 e
y0
% y los coeficientes de la ecuacion de la recta: A, B y C
% El argumento de salida es la distancia del punto P a la
recta L.
N=abs(A*x0+B*y0+C);
D=sqrt(A^2+B^2);
d=N/D;
>> d=DistPaL(2,-4,-2,3.5,-6)
d = 5.9537
>> d=DistPaL(11,2,-2,-1,6)
d = 8.0498
Capitulo 06 problema 10
DistPaL.m
function d=DistPaL(x0,y0,A,B,C)
% Funcion que calcula la distancia del punto
P=(x0,y0),
% ala recta: Ax + By + C = 0
% los argumentos de entrada seran las coordenas de P:
x0 e y0
% y los coeficientes de la ecuacion de la recta: A,
B y C
% El argumento de salida es la distancia del punto P
a la recta L. ;
02 archivos de función 22