calculate derivative of a function using handle
Show older comments
Hi, Matlab community
I have two scripts, one is
syms f(x)
f=@(x)func(x);
df=diff(f,x);
fplot(@(x) df(x),[0 10])
the other one is
function f=func(x)
if x >= 1 && x <= 2;
f=-x*1/4+2;
else
f=0;
end
And the error shows like:
Conversion to logical from sym is not possible.
How to solve ths problem?
Thank you for your attention
2 Comments
KSSV
on 8 Jun 2020
How did you use those functions...show us the full code.
denial nakayama
on 8 Jun 2020
Answers (2)
Ameer Hamza
on 8 Jun 2020
You need to take the derivative of the original function and then apply the limits
syms x
f(x) = (-x*1/4+2);
df(x) = diff(f,x).*(1<=x&x<=2);
fplot(df,[0 10])
7 Comments
denial nakayama
on 9 Jun 2020
Ameer Hamza
on 9 Jun 2020
Can you paste complete error message?
denial nakayama
on 9 Jun 2020
Ameer Hamza
on 9 Jun 2020
Try your code again after running
clear f x
denial nakayama
on 9 Jun 2020
Ameer Hamza
on 9 Jun 2020
Not sure about the issue. I don't have R2014a. Maybe this will work
fplot(matlabFunction(df),[0 10])
Walter Roberson
on 9 Jun 2020
In R2014a, fplot() was not yet able to plot symbolic expressions.
Walter Roberson
on 8 Jun 2020
function f=func(x)
f = piecewise(x >= 1 && x <= 2, -x*1/4+2, 0);
3 Comments
denial nakayama
on 9 Jun 2020
denial nakayama
on 9 Jun 2020
Walter Roberson
on 9 Jun 2020
function f=func(x)
syms t
temp(t) = feval(symengine, 'piecewise', '([t >= 1 and t <= 2, -t*1/4+2], [Otherwise, 0])');
f = temp(x);
Categories
Find more on Common Operations 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!