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算出来差一个符号?

第1个回答  2011-05-04
你看,如果把 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的顺序。