Está en la página 1de 3

% Calculo de derivadas en MATLAB

clear all;
close all;
clc;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fprintf( '\n----------------------------------------------------------' );
fprintf( '\n DERIVADAS. ' );
fprintf( '\n Ejemplo: 4x^3 + 5x^2 + 7x + 10' );
fprintf( '\n----------------------------------------------------------\n' );

fprintf( '\nPresione cualquier tecla para continuar...\n' );


pause
% Por ejemplo: 4x^3 + 5x^2 + 7x + 10
y = [4 5 7 10]; % La función representada en forma de vector
PrimeraDerivada = polyder(y) % Se realiza la derivación
% Se evalua la derivada en x(2) o sea en x = 2 :)
PrimeraDerivada_Evaluada_en_x_igual_a_2_USANDOpolyval = polyval(PrimeraDerivada, 2)

% El ANTERIOR ejemplo pero utilizando el lenguaje


% simbolico de MATLAB. Symbolic Math
syms x Y
Y = '4*x^3 + 5*x^2 + 7*x + 10';
PrimeraDerivada = diff(Y,x) % Primera derivada
SegundaDerivada = diff(Y,x,2) % Segunda derivada
TerceraDerivada = diff(Y,x,3) % Tercera derivada
% Se evalua la primera derivada D1 en x(2) o sea en x = 2 :)
PrimeraDerivada_Evaluada_en_x_igual_a_2_USANDOdiff = subs(PrimeraDerivada,2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Derivada de un PRODUCTO

% Ejemplo 1: y1 = 4x^2 + 2x + 6; y2 = 8x^2 + 3


y1 = [4 2 6]
y2 = [8 0 3]
Derivada_del_Producto_y1_x_y2 = polyder(y1, y2)

% Ejemplo 2: f1 = -2x^2 + 3x; f2 = 4x + 5


f1 = [-2 3 0];
f2 = [0 4 5];
Derivada_del_Producto_f1_x_f2 = polyder(f1, f2)
% Ejemplo 3: F1 = 1;

% Derivada de un COCIENTE
% Ejemplo 1: Fa = 7x^3 + 4x^2 +3; Fb = 5x^2 + 5x + 8
Fa = [7 4 0 3]
Fb = [0 5 5 8]
[NUMERADOR_delaDERIVADA_del_Cociente_de_Fa_y_Fb,
DENOMINADOR_delaDERIVADA_del_Cociente_de_Fa_y_Fb] = polyder(Fa,Fb)

% Ejemplo 2: Ya = 5x - 2; Yb = x^2 + 1
Ya = [0 5 -2];
Yb = [1 0 1];
[NumeradorCocienteDERIVADAYaYb, DenominadorCocienteDERIVADAYaYb] = polyder(Ya,Yb)

% Ejemplo 3: s1 = 1; s2 = s^2 + 2s + 2
s1 = [0 0 1];
s2 = [1 2 2];
[numeradorCocienteDERIVADA_s1_y_s2, denominadorCocienteDERIVADA_s1_y_s2] = polyder(s1,s2)

X = polyval(numeradorCocienteDERIVADA_s1_y_s2,0)
Y =polyval(denominadorCocienteDERIVADA_s1_y_s2,0)
D = X/Y

% Ejemplo 4
% S1 = -2s - 2
% S2 = (s^2 + 2s + 2)^2
clear all;
close all;
clc;
% Expando el polinomio S2
syms s
S2 = (s^2 + 2*s + 2)^2;
S2e = expand(S2)
% El polinomio expandido es s^4 + 4*s^3 + 8*s^2 + 8*s + 4

% Se va a calcular la SEGUNDA DERIVADA del


% COCIENTE de S1/S2 y se EVALUA en s=0
% PRIMERA forma usando la funcion polyder
S1 = [0 0 0 -2 -2 ]
S2 = [1 4 8 8 4 ]
% Se obtiene la PRIMERA derivada del cociente de esos dos polinomios
% OJO. Esta derivada se obtiene en forma de cociente Numerador/Denominador
[NumDerivadaS1, DenDerivadaS2]=polyder(S1,S2)
% Se evalua s=0 en el numerador de la derivada
N_evaluado = polyval(NumDerivadaS1, 0)
% Se evalua s=0 en el numerador de la derivada
D_evaluado = polyval(DenDerivadaS2, 0)
% Se obtiene el resultado de evaluar s=0 en la derivada de ese cociente
Resultado = N_evaluado/D_evaluado

% Por ejemplo, tenemos el polinomio S = (s^2 + 2s + 2)^2


% Le vamos a calcular sus raices, a factorizar, a expandir en suma de
% productos, a calcular su primera derivada, a evaluar en s=0, esa
% primera derivada y a graficarlo.
clear all;
close all;
clc;

syms s
S = (s^2 + 2*s + 2)^2
raices = solve((s^2 + 2*s + 2)^2) % Calcula las raíces de S.
Factoriza_S = factor(S) % Factoriza el polinomio S.
Expande_S = expand(S) % Expande los productos en sumas del polinomio S.
FirstDerivada = diff(S,s) % Calcula la primera derivada.
Expande_FirstDerivada = expand(FirstDerivada) % Expande la primera derivada del polinomio S.
EvaluaFirstDerivada_enScero = subs(FirstDerivada, 0) % Se evalua la S' en s=0
% Realiza la grafica de una función simbolica en el dominio especificado.
ezplot(S,[0, 100])
grid

%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
% Tips para la solución en MATLAB del 2do punto del II Parcial
% de Matemáticas para Electrónica 3, semestre B de 21016.
%
clear all;
close all;
clc;

syms t
fprintf( '----------------------------------------------------------------------------------------------------------------' );
fprintf( '\n Primero se calcula la respuesta RAMPA del motor DC: ' );
fprintf( '\n Theta(t) = (1/4) - (1/2)*t + (1/4)*t^2 - (1/4)*exp(-t).*cos(t) + (1/4)*exp(-t).*sin(t) ');
fprintf( '\n-------------------------------------------------------------------------------------------------------------\n' );
fprintf( ' Presione cualquier tecla para continuar...\n' );
pause

Rta_RAMPA = (1/4) - (1/2)*t + (1/4)*t^2 - (1/4)*exp(-t).*cos(t) + (1/4)*exp(-t).*sin(t)

fprintf( '--------------------------------------------------------------------------' );
fprintf( '\n Luego, derivando la respuesta rampa se obtiene ' );
fprintf( '\n la respuesta PASO o ESCALON (Heaviside): ' );
fprintf( '\n-------------------------------------------------------------------------\n' );
fprintf( ' Strike any key to continue...\n' );
pause

Rta_PASO_Heaviside = diff(Rta_RAMPA, t)

fprintf( '---------------------------------------------------------------------------------' );
fprintf( '\n Por ultimo, derivando la respuesta escalon se obtiene ' );
fprintf( '\n la respuesta IMPULSO (delta de Dirac): ' );
fprintf( '\n-------------------------------------------------------------------------------\n' );
fprintf( ' "Espiche" :) any key to continue...\n' );
pause

Rta_IMPULSO_deltaDirac = diff(Rta_PASO_Heaviside, t)

fprintf( '------------------------------------------------------------------------------' );
fprintf( '\n Usando la funcion pretty, la mostramos de otra forma ' );
fprintf( '\n-----------------------------------------------------------------------------\n' );
fprintf( ' Continue please...\n \n' );
pause

pretty(Rta_IMPULSO_deltaDirac)

fprintf( '-------------------------------------------------------------------------------' );
fprintf( '\n Derivando dos veces la respuesta RAMPA, ' );
fprintf( '\n se calcula de forma directa la respuesta IMPULSO ' );
fprintf( '\n------------------------------------------------------------------------------\n' );
fprintf( ' Presione cualquier tecla para continuar...\n' );
pause

Rta_IMPULSO_deltaDirac = diff(Rta_RAMPA, t, 2) % Note que se ha incluido el 2.


pretty(Rta_IMPULSO_deltaDirac)

fprintf( '------------------------------------------------------------------------------------' );
fprintf( '\n Ahora bien, si integramos dos veces la respuesta Impulso, ' );
fprintf( '\n se obtiene la respuesta RAMPA ' );
fprintf( '\n--------------------------------------------------------------------------------\n' );
fprintf( ' Presione cualquier tecla para continuar...\n' );
pause

rtaPaso_1raIntegracion = int(Rta_IMPULSO_deltaDirac, 0, t) %OJO con el 0 y la t


rtaRAMPA_2daIntegracion = int(rtaPaso_1raIntegracion, 0, t); % Idem
rtaRAMPA_obtenida_con_una_2daIntegracion = expand(rtaRAMPA_2daIntegracion)

%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$