Question about diff function
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Matt J
le 9 Déc 2014
It is dangerous to use "A" as both a variable name and the name of your function.
Réponses (3)
Star Strider
le 9 Déc 2014
2 commentaires
Star Strider
le 9 Déc 2014
Modifié(e) : Star Strider
le 9 Déc 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
le 9 Déc 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 commentaires
Azzi Abdelmalek
le 9 Déc 2014
a=[ 2 4 8]
b=diff(a)
b= [4-2 8-4]
a is 1x3 and b is 1x2
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!