How to evaluate a function that has been saved to a variable

1 view (last 30 days)
I have a function:
f = @(x) 2*tanh(x/2)
I'm taking the 1,2,3 derivatives of
d1 = diff(f(x))
d2 = diff(f(x),2)
d3 = diff(f(x),3)
I want to plot them now but not sure how to do this. If I try the following it gives me an error:
x = -1:0.01:1;
plot(x, d1(x))
How do you plot them if they are stored in a variable? or evaluate them?
  2 Comments
Adam Danz
Adam Danz on 13 May 2021
> How do you plot them if they are stored in a variable? or evaluate them?
Your example uses values stored in a variable so I'm not sure what you're asking.
Don't forget that d1 will have 1 less value than x since you're differentiating, d2 will have 2 less values, etc.
Eth
Eth on 13 May 2021
Edited: Eth on 13 May 2021
Hi @Adam Danz I can plot the function with no issues as:
plot(x,f(x))
But when I try to plot the the derivatives as:
plot(x,d1(x))
I get the error:
Array indices must be positive integers or logical values.
Error in sym/subsref (line 909)
R_tilde = builtin('subsref',L_tilde,Idx);

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 13 May 2021
%provided that x is symbolic
d1(x) = diff(f(x))
d2(x) = diff(f(x),2)
d3(x) = diff(f(x),3)
  2 Comments
Walter Roberson
Walter Roberson on 13 May 2021
f = @(x) 2*tanh(x/2)
f = function_handle with value:
@(x)2*tanh(x/2)
syms x
d1(x) = diff(f(x))
d1(x) = 
d2(x) = diff(f(x),2)
d2(x) = 
d3(x) = diff(f(x),3)
d3(x) = 
simplify(d2(2))
ans = 
Looks fine to me.
If you are expecting decimal values, then use vpa()

Sign in to comment.

More Answers (1)

David Hill
David Hill on 13 May 2021
syms x;
f = 2*tanh(x/2);
d1 = diff(f);
d2 = diff(f,2);
d3 = diff(f,3);
fplot(f,[-1,1]);
hold on;
fplot(d1,[-1,1]);
fplot(d2,[-1,1]);
fplot(d3,[-1,1]);

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!