数学研发论坛

 找回密码
 欢迎注册
查看: 581|回复: 2

[求助] mathematica求导绘制隐函数疑问!是不是bug呢?

[复制链接]
发表于 2021-4-12 11:54:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
  1. Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
  2. ff=2*a*Exp[2*x]-Log[x]+Log[a]
  3. gg=D[ff,{x}]
  4. (*下面的是直接给出求导结果,为什么能画出两条曲线*)
  5. h1=ContourPlot[{ff==0,gg==0},{x,0.0001,6},{a,0.0001,1}]
  6. (*下面有求导语句,为什么就画不出两条曲线?*)
  7. h2=ContourPlot[{ff==0,D[ff,{x}]==0},{x,0.0001,6},{a,0.0001,1}]
复制代码


Clear["Global`*"];(*mathematica11.2,win7(64bit)Clear all variables*)
ff=2*a*Exp[2*x]-Log[x]+Log[a]
gg=D[ff,{x}]
(*下面的是直接给出求导结果,为什么能画出两条曲线*)
h1=ContourPlot[{ff==0,gg==0},{x,0.0001,6},{a,0.0001,1}]
(*下面有求导语句,为什么就画不出两条曲线?*)
h2=ContourPlot[{ff==0,D[ff,{x}]==0},{x,0.0001,6},{a,0.0001,1}]

运行结果为了节省论坛空间,就不上传了,注意带颜色的文字,为什么求导后带入能出结果,而放在里面求导就不行了呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-4-12 21:44:23 | 显示全部楼层
应该不是bug。逻辑上说挺合理的。

虽然对函数求导得到的是一个函数,但系统里定义的求导运算和Plot一样,不是数学函数,没记错的话,应该叫命令函数。

具体到当前的例子,有两个可能的解释。一个是它的返回值不是通常的函数。而ContourPlot的参数类型必须是数学函数。但直接看求导函数的返回结果,似乎又不是这样。

还有一个可能就是內建命令函数的运行顺序。

注意到在图绘制完成前的报错信息提示说:几个具体的浮点小数不是变量,而要求是变量。有这个要求的应该就是指求导运算那一步吧,而输入的显然是变量函数,怎么会变成具体的数字,导致报错?

最先被执行的是绘图指令。个人猜测是,执行过程中,先把输入的函数插值描点离散化。所以,里面的变量都变成数值散列了。然后这个时候又开始执行内部的求导。但求导的对象变成了数列,所以就报错了。最后系统跳过了这一部分,把图像绘制完成。

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2021-4-13 08:18:14 | 显示全部楼层
@chyanog @wayne 你们来看看这个问题应该如何解释?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2021-9-29 10:11 , Processed in 0.057691 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表