Effacer les filtres
Effacer les filtres

How does Symbolic diff() Operate When the Order of Derivative is Symbolic?

4 vues (au cours des 30 derniers jours)
Simple symbolic function
syms n integer positive
syms x real
f(x) = x^n
f(x) = 
First, second, and sixth (just to check) derivatives as expected (or at least justified assuming n >= order of derivative)
[diff(f(x),x,1) diff(f(x),x,2) diff(f(x),x,6)]
ans = 
Taking the nth derivative returns a peculiar result.
diff(f(x),x,n)
ans = 
Actually, I was quite surprised that call didn't generate an error as I thought the third argument had to be an actual number, not a symbolic variable. In any case, it returned w/o error, but the result looks incorrect.
Try a different function that is not defined in terms of n
g(x) = x^5;
diff(g(x),x,n)
ans = 
0
Seems like this result, if anything, should have returned as a piecewise for the cases when n <= 5 and otherwise. Returning 0 doesn't seem like the right thing to do.
As an aside, trying the n+1th derivative of f(x) results in an error. The error message indicates the differentiation order can be a symbolic variable, though that's not clear from the symbolic diff doc page.
diff(f(x),x,n+1)
Error using sym/diff (line 79)
Second and third arguments must either be both variables, or a variable and a nonnegative integer specifying the number of differentiations.

Réponse acceptée

Shishir Reddy
Shishir Reddy le 11 Juil 2024
Hi Paul,
As per my understanding, you would like to get more clarification on how “diff” function works in MATLAB when operated using symbolic variables.
Let me discuss few of the scenarios for f(x) = x^n when passed as input to the “diff” function.
  • Case 1 : diff(f(x),x,1) - Output of this will be the derivative of function “f” with respect to “x”, which is n*x^(n-1)
  • Case 2 : diff(f(x),x,2)- This gives the second derivative of “f” with respect to “x” which is n*(n-1)*x^(n-2)
  • Case 3 : diff(f(x), x, n) - This means that “f” is differentiated with respect to “x” and the result is then differentiated with respect to “n”. Which means the output will be x^(n-1) + n*log(x)*x^(n-1)
  • Case 4 : diff(x^5, x, n) - As stated in Case 3, x^5 is first differentiated with respect to “x”, which gives 5*x^4. Now, if this is differentiated with respect to “n”, we get 0 because 5*x^4 is independent of n.
  • Case 5 : diff(f(x), x, n+1) -This gives error because performing arithmetic operations is not allowed between symbolic variables and constants.
For further reference, please refer to the following documentation:
I hope this helps.
  1 commentaire
Walter Roberson
Walter Roberson le 11 Juil 2024
This analysis is correct. Symbolic orders of differentiation are not recognized by MATLAB.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by