MATLAB求解一阶导数等于零的情况 10

symsys=(y^(-1)/(y^(-1)+y^0+y^4))*log(y^(-1)/(y^(-1)+y^0+y^4))+(y^0/(y^(-1)+y^0+y^4))*... syms y
s=(y^(-1)/(y^(-1)+y^0+y^4))*log(y^(-1)/(y^(-1)+y^0+y^4))+(y^0/(y^(-1)+y^0+y^4))*log(y^0/(y^(-1)+y^0+y^4))+(y^4/(y^(-1)+y^0+y^4))*log(y^4/(y^(-1)+y^0+y^4));
s=diff(s)
a=solve('s=0','y')
返回的是
a =

[ empty sym ]
但是如果把command window里的s(也就是一阶导数)写到solve函数里,也就是solve('一阶导数那个很长的式子','x'), 返回的就是a=1
问题是我如何能够不用这么手动的把一阶导数写到代码里,能否直接用一个变量代替,并让solve函数能够识别并发挥作用呢?
展开
 我来答
yanglei5658
2012-10-26 · TA获得超过4754个赞
知道大有可为答主
回答量:835
采纳率:100%
帮助的人:502万
展开全部

其实楼主的方法基本没有问题,只是solve函数这块表达有问题,直接把求导后的式子s传过来就行了,默认是整个式子为0。‘s=0’反而给弄错了。改成这样:

syms y

s=(y^(-1)/(y^(-1)+y^0+y^4))*log(y^(-1)/(y^(-1)+y^0+y^4))+(y^0/(y^(-1)+y^0+y^4))*log(y^0/(y^(-1)+y^0+y^4))+(y^4/(y^(-1)+y^0+y^4))*log(y^4/(y^(-1)+y^0+y^4));

s=diff(s)

a=solve(s,'y')

b=double(a)

就可以正确运行了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式