找回密码
 欢迎注册
查看: 20978|回复: 14

[原创] 被Mathematica的bug气失眠了,求确认

[复制链接]
发表于 2012-7-3 04:44:13 | 显示全部楼层 |阅读模式

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

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

×
版本 7.0
PolynomialQ函数

In[1]:=PolynomialQ[x1,x2]
Out[1]:=True

In[2]:=PolynomialQ[Log[x],x2]
Out[2]:=True

In[3]:=PolynomialQ[Log[x],xn]
Out[3]:=True
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 08:22:36 | 显示全部楼层
第二个参数似乎只能是x,而不可以是x1
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 09:27:37 | 显示全部楼层
1# zeroieme
失眠不至于吧,呵呵.

============
第一个第二个都是可以理解的.因为都是关于变量的常量表达式,所以是True.

第三个我也吃惊了,查了文档,发现:
The vari  need not be symbols; PolynomialQ[f[a]+f[a]^2,f[a]] -> True.

就明白了:
PolynomialQ 的第二个参数是既可以是变量,也可以是表达式.
如果前面的表达式是后面的表达式的多项式的形式,PolynomialQ 就返回True
另外需要注意的是,表达式都是Unevaluated的符号形式的.PolynomialQ 执行的是pattern matching 算法.
所以楼主的第三个也是常量多项式.
============

所以,个人理解,应该不是bug
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 09:46:43 | 显示全部楼层
才发现,楼主帖子的时间戳是 凌晨4点44,
这个,.....
熬夜不好啊,
熬夜容易长胡子,长痘痘的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-3 11:33:33 | 显示全部楼层
才发现,楼主帖子的时间戳是 凌晨4点44,
这个,.....
熬夜不好啊,
熬夜容易长胡子,长痘痘的
wayne 发表于 2012-7-3 09:46

谢谢关心,不是熬夜,是临睡发现的问题不吐不快。调了2天的程序被玩死。

PolynomialQ[f[a]+f[a]^2,f[a]] -> True.
没问题

PolynomialQ[f[a]+f[a]^2,AnyOne[a]] -> True.
问题就大了
PolynomialQ[Log[x], x]                    False

PolynomialQ[Log[x], Sqrt[x]]           True
PolynomialQ[Log[x], Exp[x]]            True
PolynomialQ[Sin[x], Log[x]]             True
…………

而x下标本来是下标不同数字代表不同变量,却成为x的函数。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 11:57:08 | 显示全部楼层
5# zeroieme
PolynomialQ[f[a]+f[a]^2,AnyOne[a]] -> True.  没关系.
PolynomialQ[f[f[a]]+f[a]^2,f[a]] -> True.  就是有问题了.

而x下标本来是下标不同数字代表不同变量,却成为x的函数。

这有何不可了?
这就相当于多元函数 f(x,y) =x*y+x^2+y^2  关于x的常数项是 y^2 一样
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 12:07:53 | 显示全部楼层
查了一下wikipedia的多项式环的词条.
多项式形如:

这里的 X只是一个形式符号.

可以对比一下这些结果:
  1. a =.; PolynomialQ[x^2 + a x y^2 - b Sin[c], {x, y}]
复制代码
  1. a = Sin[x]; PolynomialQ[x^2 + a x y^2 - b Sin[c], {x, y}]
复制代码
  1. a =.; y =.; x = Sin[a]; PolynomialQ[x^2 + f[a] x y^2 - b Sin[c], {x, y}]
复制代码
  1. a =.; y =.; x = Sin[a]; PolynomialQ[x^2 + f[a] f[x] y^2 - b Sin[c], {x, y}]
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-3 13:06:12 | 显示全部楼层
5# zeroieme
PolynomialQ[f[a]+f[a]^2,AnyOne[a]] -> True.  没关系.
PolynomialQ[f[f[a]]+f[a]^2,f[a]] -> True.  就是有问题了.


这有何不可了?
这就相当于多元函数 f(x,y) =x*y+x^2+y^2  关于x的常数项是 ...
wayne 发表于 2012-7-3 11:57


跟我给的例子不同吧
这个是正常的
PolynomialQ[Log[x], x]
False

一旦自变量x换成随便一个x的非直接计算函数,那么结果必然True
PolynomialQ[Log[x], Sign[x]]-> True
PolynomialQ[Log[x], Sin[x]]-> True

ClearAll["Global`*"];   PolynomialQ[f[x], g[x]]-> True
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-7-3 16:22:49 | 显示全部楼层
貌似不是bug,赫赫,PolynomialQ[Sin[Sin[x]], Sin[x]]的结果就不是True的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-7-3 19:18:13 | 显示全部楼层
貌似不是bug,赫赫,PolynomialQ[Sin[Sin[x]], Sin[x]]的结果就不是True的。
zgg___ 发表于 2012-7-3 16:22

要是永远错的我还可以反着用


新案例
{PolynomialQ[Zeta1, Alpha], PolynomialQ[Zeta1, Mu],
PolynomialQ[Zeta1, Sigma], PolynomialQ[Zeta1, Psi],
PolynomialQ[Zeta1, Nu]}
  
{True, True, True, True, True}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-23 22:51 , Processed in 0.053176 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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