%% HOW DO I DO THAT IN MATLAB SERIES?
% In this series, I am answering questions that students have asked
% me about MATLAB.  Most of the questions relate to a mathematical 
% procedure.

%% TOPIC
% How do I differentiate a mathematical function
%% SUMMARY
% Language : Matlab 2010a; 
% Authors : Autar Kaw and Sri Harsha Garapati; 
% Mfile available at
% http://numericalmethods.eng.usf.edu/blog/calc_operations_diff_blog.m
% Last Revised : January 23, 2012; 
% Abstract: This program shows you how to differentiate a mathematical
% function
clc
clear all
clf
%% INTRODUCTION

disp('ABSTRACT')
disp('   This program shows you how to differentiate a mathematical expression')

disp(' ')
disp('AUTHOR')
disp('   Autar Kaw and Sri Harsha Garapati of http://autarkaw.wordpress.com')
disp(' ')
disp('MFILE SOURCE')
disp('   http://numericalmethods.eng.usf.edu/blog/calc_operations_diff_blog.m')
disp(' ')
disp('LAST REVISED')
disp('   January 23, 2012')
disp(' ')

%% INPUTS
  
% Inputs
% x is symbolic
syms x   
% enter desired equation
eqn1 =4*sin(4*x^2)+exp(x); 
% value of x at which the differential is to be found 
xnew =3.75; 

%% DISPLAYING INPUTS
disp('  ')
disp('INPUTS')
% convert the eqn to a string
eqn1d=char(eqn1); 
% printing the converted string to show the function
fprintf('  y = %s\n',eqn1d)
%printing the value of x at which the differential is to be found
fprintf('The value at which the differential of the function to be found =%g\n',xnew)

%% THE CODE
% derivative of the function(2 represents 2nd derivative)
dydx =diff(eqn1,x,2);   
% converted to string
dydx2=char(dydx);     
% subs command being used to calculate the value
seqn =subs(dydx2,x,xnew); 
%% DISPLAYING OUTPUTS AND PLOTS
disp('  ')
disp('OUTPUTS')
fprintf('  d2y/dx2 = %s\n',dydx2)
fprintf('  d2y/dx2 @ %g = %g\n\n',xnew,seqn)


