numerical derivative in matlab
    7 views (last 30 days)
  
       Show older comments
    
Hi! How can I show the numerical value of the first derivative of a function in this code?
(-0.1*x^4) - (0.15*x^3) - (0.5*x^2) - (0.25*x) + 1.2
Enter Step Size: 
0.5
Enter the point you want to approximate the Derivative: 
0.5
clear
clc
format short
syms x
P=input ('Enter the Equation: ','s');
f=inline(P)
g=diff(f(x),x);
h=input ('Enter Step Size: ')
x=input ('Enter the point you want to approximate the Derivative: ')
fprintf('f(x) = %0.4f', f(x))
dy=g(x) % How Can I get the derivative equation of g in numerical answer by substituting the value of x?
fprintf('x(xi+1) = %0.4f', x+(1*h))
fprintf('f(xi+1) = %0.4f', f(x+(1*h)))
FDD=(f(x+(1*h))-f(x))/h;
fprintf('FDD (Truncated) = %0.4f', (f(x+(1*h))-f(x))/h)
Answers (1)
  Ayush
      
 on 5 Jan 2024
        
      Edited: Ayush
      
 on 5 Jan 2024
  
      Hi Christoppe, 
I understand that you want to show the numerical value of the first derivative of a function in the given code. 
To do so, you need to substitute the value of “x” into the derivative function “g” and then evaluate it. This can be done by using the “subs” function or by converting the symbolic expression to a function and then evaluating it at the given point. 
Refer the modified code below for better understanding: 
clear
clc
format short 
syms x 
% P = input('Enter the Equation: ','s'); 
P = (-0.1*x^4) - (0.15*x^3) - (0.5*x^2) - (0.25*x) + 1.2;
f = inline(P); 
g = diff(f(x),x); 
% h = input('Enter Step Size: ');
h = 0.5;
% x_val = input('Enter the point you want to approximate the Derivative: '); 
x_val = 0.5;
fprintf('f(x) = %0.4f\n', f(x_val)); % Display the value of the function at x 
% Calculate the numerical value of the derivative at x 
g_val = double(subs(g, x, x_val)); 
fprintf('g(x) = %0.4f\n', g_val); % Display the numerical value of the derivative 
fprintf('x(xi+1) = %0.4f\n', x_val + h); 
fprintf('f(xi+1) = %0.4f\n', f(x_val + h)); 
FDD = (f(x_val + h) - f(x_val)) / h; 
fprintf('FDD (Truncated) = %0.4f\n', FDD);
The "inline" function is not recommended, instead use the "anonymous function". For more information on the “subs” function and "anonymous function" refer the documentation page given below: 
- "subs function": https://www.mathworks.com/help/symbolic/subs.html
 - "anonymous function": https://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html
 
Regards, 
Ayush 
7 Comments
See Also
Categories
				Find more on Calculus in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!