320 likes | 338 Views
Math Review with Matlab:. Calculus. Differentiation. S. Awad, Ph.D. M. Corless, M.S.E.E. E.C.E. Department University of Michigan-Dearborn. Differentiation. General Derivatives Diff Command Differentiation Example Product Rule Example Chain Rule Example Partial Differentiation
E N D
Math Review with Matlab: Calculus Differentiation S. Awad, Ph.D. M. Corless, M.S.E.E. E.C.E. Department University of Michigan-Dearborn
Differentiation • General Derivatives • Diff Command • Differentiation Example • Product Rule Example • Chain Rule Example • Partial Differentiation • Partial Derivative Example • Total Difference Approximation • Sensitivity Analysis Example
General Derivatives • In general, derivatives are used to determine how quickly or slowly a function varies with respect to a changing variable • For a two dimensional continuous curve, the derivative can be thought of as representing the instantaneous slope of the curve with respect to the changing variable • The derivative operation is a limiting process defined as:
Differential Pairs • A few common differential pairs are shown below • Note that a is a constant
Higher Order Derivatives • Higher order derivatives can also be defined • The second derivative of a function f(x) is defined as: • The nth derivative of a function f(x) is defined as:
Diff Command • The diff command can be used to differentiate symbolic variables diff(s) differentiates s with respect to the Matlab default free variable diff(s,v) differentiates s with respect to the free variable v diff(s,v,n) differentiates sn times with respect to the free variable v (n must be positive)
Differentiation Example • Given the sinusoidal function f(x): 1) Use Matlab to determine the first derivative of f(x) 2) Plot f(x) and its first derivative to verify that the first derivative of f(x) corresponds to the scaled instantaneous slope of f(x) 3) Use Matlab to determine the second, third, and fourth derivatives of f(x)
First Derivative • Use the diff command to determine the first derivative thus verifying the differential pair: » syms x » f=sin(2*x); » dfdx=diff(f) dfdx = 2*cos(2*x)
Slope Analogy • Plot f(x)=sin(2x) and its df/dx=2cos(2x) • Show relationship between slope of f(x) and the derivative » subplot(2,1,1) » ezplot(f) » subplot(2,1,1) » ezplot(f,0,pi) » grid on » subplot(2,1,2) » ezplot(dfdx,0,pi) » grid on
Second Derivative • Calculate second derivative from the first derivative » d2fdx2=diff(dfdx) d2fdx2 = -4*sin(2*x) • Calculate second derivative f(x) by passing 2 as the number of times to differentiate » d2fdx2=diff(f,2) d2fdx2 = -4*sin(2*x) • Both methods give the same result!
Higher Order Differentiation • Calculate the third and fourth derivatives » d3fdx3=diff(f,3) d3fdx3 = -8*cos(2*x) » d4fdx4=diff(f,4) d4fdx4 = 16*sin(2*x)
Product Rule • The Product Rule is used to differentiate products of functions of the same variable and is defined as: • The Product Rule can be expressed in shorthand notation as:
Product Rule Example • Use Matlab to verify the Product Rule 1) Create two arbitrary functions u(x) and v(x) both dependent on x 2) Let f(x)=u(x)v(x) 3) Use Matlab to differentiate f(x) and verify that:
Product Rule Verification • Define u and v as functions of x » syms x » u=sym('u(x)'); » v=sym('v(x)'); • Create f as the product of u and v » f=u*v f = u(x)*v(x) • Differentiate f and verify the Product Rule » dfdx=diff(f,x); » pretty(dfdx) /d \ /d \ |-- u(x)| v(x) + u(x) |-- v(x)| \dx / \dx /
Chain Rule Example • The Chain Rule is used to differentiate a function of a function and is defined as: 2) Differentiate f(x) with respect to x 1) Given f(x) where a and b are constants: 3) Use Matlab to verify the result
Perform Chain Rule • Use the chain rule to differentiate f(x) • Break into sections and differentiate
Verify Chain Rule Result • The result is easily verified in Matlab » syms a b x » f=(a+b*x^3)^2; » dfdx=diff(f) dfdx = 6*(a+b*x^3)*b*x^2
Partial Differentiation • Used to determine the rate of changes for functions of multiple changing variables • Consider a function f(x,y) which is dependent on two variables x and y • To signify that a derivative is with respect to one variable that another variable exists use the notations: First Partial Derivative of f(x,y) with respect to x: (y held constant) First Partial Derivative of f(x,y) with respect to y: (x held constant)
Second Partial Derivatives • Second partial derivatives of f(x,y) can be defined as: • Provided that the second partial derivatives are continuous at the point of question, the following relationship holds true:
Partial Derivative Example • Given the function: • Use Matlab to determine: 1) The firstpartial derivatives: 2) The secondpartial derivatives: 3) Verifythe relationship:
First Derivatives • The standard diff command is used to determine the first partial derivatives in Matlab » syms x y; » f=2*x^3*y^2 + y^3; » dfdx = diff(f) dfdx = 6*x^2*y^2 » dfdy = diff(f,'y') dfdy = 4*x^3*y+3*y^2
Second Derivatives • The second derivatives with respect to the same variable can be found by instructing setting the n parameter to 2 » d2fdx2 = diff(f,2) d2fdx2 = 12*x*y^2 » d2fdx2 = diff(f,'y',2) d2fdx2 = 4*x^3+6*y
Second Derivatives • The second derivatives with respect to different variables must be calculated from the first derivatives » d2fdxy = diff( dfdy, 'x') d2fdxy = 12*x^2*y » d2fdyx = diff( dfdx, 'y') d2fdyx = 12*x^2*y Verified!
Total Difference Approximation • Given a function f(x,y) dependent upon the two variables x and y • Suppose that small changes Dx in x and Dy in y occur simultaneously • As a result, f changes to f + Df which can be approximated as:
Sensitivity Analysis • The total difference approximation can be extended to a function of N variables where: • The total difference approximation can be used to perform sensitivity analysis of analog and digital systems • A common application of sensitivity analysis is to examine the change in a digital filter’sfrequency response and stability due to coefficient quantization
Sensitivity Analysis Example • Given a circuit with a resistanceR=1kW and initial currentI=100mA flowing through it: • The power, P, in Watts, absorbed by the resistor can be calculated using the equation: 1) Approximate the total change in powerif : • Current may increase by 2% • Resistance may increase by 5% 2) Calculate the approximate new power and actual new power when both I and R change by the above percents
Sensitivity Equations • Create symbolic expressions to determine the approximate change in power given known changes in resistance, R, and current, I. » syms I R Idelta Rdelta » P=I^2*R; » dPdI=diff(P,'I') dPdI = 2*I*R » dPdR=diff(P,'R') dPdR = I^2 » Pdelta = Rdelta*dPdR + Idelta*dPdI Pdelta = Rdelta*I^2+2*Idelta*I*R
Determine Initial Power • Create symbolic variables to represent the desired conditions to analyze • Describe DR and DI in terms of percent changes » I1 = sym(0.1); % I=100mA » R1 = sym(1000); % R=1k Ohms » Idelta1 = sym(0.02*I1); % I changes 2% » Rdelta1 = sym(0.05*R1); % R changes 5% » P1_sym = subs(P,{'R','I'},{'R1','I1'}) P1_sym = I1^2*R1 » P1initial= double(eval(P1_sym)) P1initial = 10
Sensitivity Approximation • Substitute the desired parameters into the general symbolic expressions to determine approximate DP » P1delta_sym = subs(Pdelta,... {'R','I','Rdelta','Idelta'},... {'R1','I1','Rdelta1','Idelta1'}) P1delta_sym = Rdelta1*I1^2+2*Idelta1*I1*R1 » P1delta_approx = double(eval(P1delta_sym)) P1delta_approx = 0.9
New Power Calculations • Evaluate approximated new total power » P1final_approx = double(eval(P1_sym+P1delta_sym)) P1final_approx = 10.9000 • Calculate the actual new power » P1final_sym = subs(P,{'R','I'},... {'(R1+Rdelta1)','(I1+Idelta1)'}) P1final_sym = (I1+Idelta1)^2*(R1+Rdelta1) » P1final_act = double(eval(P1final_sym)) P1final_act = 10.9242
Compare Results • Notice that the approximated power and actual new power are very close • The smaller the values of DR and DI are, the more accurate that DP will be • Although this is a simplistic example, it demonstrates how the total difference approximation can be used to predict the response of more complicated systems without performing complex simulations
Summary • Differentiation is used to determine the rate at which a function changes with respect to a changing variable • The symbolic diff command can be used to differentiate functions. The user can specify the variable to differentiate with respect to and the number of times to differentiate • Partial differentiation is used to determine the rate of changes for functions of multiple changing variables • Total difference approximation and sensitivity analysis are used to approximate changes in a function based partial derivatives and on fixed changes in variables