Está en la página 1de 18

S 3 Funciones y funciones

simbólicas
EFAIC
Contenido
• Estructura de una función • Funciones simbólicas
• Matrices simbólicas
• Función anónima
• Cálculos simbólicos
• Buenas prácticas de • Asunciones en variables simbólicas
programación
• for vs vectores
• Advertencias
• tic y toc
• Funciones simbólicas
• Números, variables y expresiones
simbólicas
Estructura de una función
• Es una rutina realizada para resolver una actividad repetitiva no
contenida en el paquete original o cuando es ineficiente
• Se realiza en el editor y a diferencia de un script tiene un encabezado
con el nombre function salida= nombre_function(parámetros de
entrada)

• Se puede realizar prácticamente cualquier operación con ella y se


pueden llamar otras funciones dentro de la misma, solo hay que
cuidar la ruta y los nombres.
Ejemplo de function
• Calcular la longitud de entre dos vectores de “coordenadas”.

• function L=longitud(A,B)

• try
• C = (A- B);
• catch ME
• if (strcmp(ME.identifier,'MATLAB:dimagree'))
• msg = ['Ocurrio un error de dimensiones: El primer argumento tiene ', ...
• num2str(size(A,2)),' columnas mientras que el segundo ', ...
• num2str(size(B,2)),' columnas.'];
• causeException = MException('MATLAB:myCode:dimensions',msg);
• ME = addCause(ME,causeException);
• end
• rethrow(ME)
• end
• C=(A-B);
• L=sqrt(sum(C.^2,2));
Función anónima
• Es una función que declara sus propias variables y no requiere de un
script
• Su estructura es
• f=@(variables) expresión
• Ejemplo
• f=@(a,b,c,d,x) (x-a)/(x-b)+(x-c)/(x-d)
• f(1,2,3,4,5)
• ans =
• 3.3333
Buenas practicas de programación
• Vectorización vs for
• tic
• (1:2:1000)*(1:500)'
• toc
• % vs
• tic
• S=0;
• B=1;
• for i=1:1000
• if mod(i,2)~=0
• S=S+i*B;
• B=B+1;
• end
• end
• disp(S)
toc
Funciones simbólicas
• Números simbólicos
• sym (1/3)
• %vs
• 1/3
• sin(sym(pi))
• sin(pi)
Variables simbólicas
• syms x
• y = sym('y’)
• syms a b c

• clear all
• A = sym('a', [1 20])
• Whos
• clear all
• syms(sym('a', [1 10]))
• whos
Expresiones simbólicas
Supón que deseamos obtener la expresión de la relación
dorada

phi = (1 + sqrt(sym(5)))/2;
f = phi^2 - phi – 1
O un polinomio cuadrático

syms a b c x
f = a*x^2 + b*x + c;

subs( f, [a b c], [2 3 5])


Crear funciones simbólicas
• syms f(x,y) • dfx = diff(f,x)
• f(x,y) = x^2*y • dfx(y+1,y)

• f(3,2)
• f(1:3,2:4)
• xVal = 1:5;
• yVal = 3:7;
• f(xVal,yVal)
Matrices simbólicas
• syms a b c
• A = [a b c; c a b; b c a]
• sum(A(1,:))
• A = sym('A', [2 4])
• A = sym('A%d%d', [2 4])
• A = hilb(3)
• A = sym(A)
Cálculos simbólicos
• syms x • diff(diff(f, y))
• f = sin(x)^2; Integración simbólica
• diff(f) • syms x
Derivadas parciales • f = sin(x)^2;
• syms x y • int(f)
• f = sin(x)^2 + cos(y)^2; • syms x y n
• diff(f) • f = x^n + y^n;
• int(f)
• syms x y • syms x y n
• f = sin(x)^2 + cos(y)^2; • f = x^n + y^n;
• diff(f, y, 2) • int(f, y)
vpasolve

• Integración definida • f = phi^2 - phi – 1


• syms x y n • simplify(f)
• f = x^n + y^n; • syms x
• int(f, 1, 10) • f = (x ^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2
Solución de expresiones algebraicas - x + 1);
• syms x • expand(f)
• solve(x^3 - 6*x^2 == 6 - 11*x) • syms x
• syms x • g = x^3 + 6*x^2 + 11*x + 6;
• solve(x^3 - 6*x^2 + 11*x - 6) • factor(g)
• syms x y • syms x
• solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, • h = x^5 + x^4 + x^3 + x^2 + x;
y) • horner(h)
• syms x y z • Vpasolve
• [x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2) • Vpa (obtiene aproximación númerica)
• Simplificación
• phi = (1 + sqrt(sym(5)))/2;
• syms x • f = x^3 - 15*x^2 - 24*x + 350;
• f = 2*x^2 - 3*x + 1; • A = [1 2 3; 4 5 6];
• subs(f, 1/3) • subs(f,A)
• syms x y • syms x
• f = x^2*y + 5*x*sqrt(y); • f = x^3 - 15*x^2 - 24*x + 350;
• subs(f, x, 3) • A = magic(3)
• subs(f, y, x) • b = sym2poly(f)
• syms x • polyvalm(b,A)
Graficas simbólicas
• Explicitas • Implicitas
• syms x • syms x y
• f = x^3 - 6*x^2 + 11*x - 6; • eqn = (x^2 + y^2)^4 == (x^2 -
• fplot(f) y^2)^2;
• xlabel('x') • fimplicit(eqn, [-1 1])
• ylabel('y')
• title(texlabel(f))
• grid on
3-D
• syms t
• fplot3(t^2*sin(10*t), t^2*cos(10*t), t)
• syms x y
• fsurf(x^2 + y^2)
Primer evaluación
• días!
• https://web.microsoftstream.com/video/98bd5382-4742-42d5-aa52-
a107c2dbb29b
• https://web.microsoftstream.com/video/4513afd2-2ada-4826-8433-7
6714559c4da
• https://web.microsoftstream.com/video/369847cd-a4b4-44b0-9be8-
bc6af7fda4a8
• https://web.microsoftstream.com/video/22d0920e-7238-490d-a543-
804fbddeced6

También podría gustarte