numerical derivative in matlab

2 次查看(过去 30 天)
Christoppe
Christoppe 2022-8-4
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)
  2 个评论
Torsten
Torsten 2022-8-4
dy = subs(g,x,x0)
if you rename x in x0 in the preceeding input-command for x.
Dyuman Joshi
Dyuman Joshi 2024-1-5
inline is not recommended.
Simply define the expression/function by typing or use str2sym.
Don't you think the step size is too big for calculating numerical derivative?

请先登录,再进行评论。

回答(1 个)

Ayush
Ayush 2024-1-5
编辑:Ayush 2024-1-5
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
f(x) = 0.9250
% 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
g(x) = -0.9125
fprintf('x(xi+1) = %0.4f\n', x_val + h);
x(xi+1) = 1.0000
fprintf('f(xi+1) = %0.4f\n', f(x_val + h));
f(xi+1) = 0.2000
FDD = (f(x_val + h) - f(x_val)) / h;
fprintf('FDD (Truncated) = %0.4f\n', FDD);
FDD (Truncated) = -1.4500
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:
Regards,
Ayush
  7 个评论
Dyuman Joshi
Dyuman Joshi 2024-1-5
I see. Thank you for your response.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by