Question about diff function
1 view (last 30 days)
Show older comments
I have defined a function as follows
function A = A(V, h)
A = V/h + 2*sqrt(V*pi*h)
end
In another function, I try to call it:
h = h - A (V, h) / diff (A (V, h), h);
But I get the error
Error using / Matrix dimensions must agree.
I am at a loss. Can someone give me a hand?
1 Comment
Matt J
on 9 Dec 2014
It is dangerous to use "A" as both a variable name and the name of your function.
Answers (3)
Star Strider
on 9 Dec 2014
2 Comments
Star Strider
on 9 Dec 2014
Edited: Star Strider
on 9 Dec 2014
That requires the Symbolic Math Toolbox.
EDIT —
If you are satisfied with an approximation, you can do a numeric version of the definition of the derivative as an anonymous funciton:
dfdx = @(f,x) (f(x+1E-8)-f(x))./1E-8; % Conventional Derivative
A = @(V,h) V./h + 2*sqrt(V*pi*h);
V = 3;
h = linspace(0.1,10);
dAdh = dfdx(@(h) A(V,h), h);
figure(1)
plot(h, A(V,h), '-b')
hold on
plot(h, dAdh, '-r')
hold off
legend('A(V,h)', 'dA(V,h)/dh')
You may want to experiment with the 1E-8 value (this is the value that most often ‘works’ for me). At the very least, it will provide you with something to experiment with.
Roger Stafford
on 9 Dec 2014
h = h - (V/h+2*sqrt(V*pi*h))/(-V/h^2+V*pi/sqrt(V*pi*h));
(Maybe I am old-fashioned, but with elementary functions like this, it's easier to use calculus than to have to mess around with the 'diff' function in my opinion.)
0 Comments
Azzi Abdelmalek
on 9 Dec 2014
a=[ 2 4 8]
b=diff(a)
b= [4-2 8-4]
a is 1x3 and b is 1x2
See Also
Categories
Find more on Symbolic Math Toolbox 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!