matlab 求导的问题

>> l=(y+z)*sqrt(x*x+y*y+z*z-2*y*z)l =(y + z)*(x^2 + y^2 - 2*y*z + z^2)^(1/2) >> diff(l,✀y✀) ans =(x^2 + y^2 - 2*y*z + z^2)^(1/2) + ((2*y - 2*z)*(y + z))/(2*(x^2 + y^2 - 2*y*z + z^2)^(1/2)) >> diff(l,✀z✀)ans =(x^2 + y^2 - 2*y*z + z^2)^(1/2) - ((2*y - 2*z)*(y + z))/(2*(x^2 + y^2 - 2*y*z + z^2)^(1/2))如上,l表达式里Y和Z两个变量互换以后还是l,那么l对Y和l对Z的偏导数应该是一样的,为什么用MATLAB算出来差一个符号?
2026年09月29日 01:21
有1个网友回答
网友(1):

你看,如果把 diff(l,'y') 中答案里的 y,z互换, 那么就是diff(l,'z')了对不对?
所以
(x^2 + y^2 - 2*y*z + z^2)^(1/2) + ((2*y - 2*z)*(y + z))/(2*(x^2 + y^2 - 2*y*z + z^2)^(1/2))
把其中的yz互换,就成了下面的式子:
(x^2 + y^2 - 2*y*z + z^2)^(1/2) - ((2*y - 2*z)*(y + z))/(2*(x^2 + y^2 - 2*y*z + z^2)^(1/2))

所以结果是没错的。
我觉得应该是Matlab求导算法里的问题。式子中yz的顺序。