gpt4 book ai didi

python - 在 sagemath 中定义函数的不同方式

转载 作者:行者123 更新时间:2023-12-01 08:16:44 26 4
gpt4 key购买 nike

我想知道为什么这两个“程序”产生不同的输出

    f(x)=x^2
f(90).mod(7)

    def f(x):
return(x^2)
f(90).mod(7)

谢谢

最佳答案

问得好!让我们更深入地研究一下相关函数。

f(x)=x^2
def g(x):
return(x^2)

print type(g(90))
print type(f(90))

这会产生

<type 'sage.rings.integer.Integer'>
<type 'sage.symbolic.expression.Expression'>

因此,您所看到的是使用 f(x) 表示法定义的 符号 函数与使用def 关键字。在 Sage 中,前者可以访问普通旧 Sage 整数所没有的许多东西(例如微积分)。

在这种情况下,我推荐的只是为了满足您的需要,是

sage: a = f(90)
sage: ZZ(a).mod(7)
1

或者实际上可能更强大

sage: mod(a,7)
1
<小时/>

更长的解释。

对于象征性的东西,mod 并不是你想象的那样。事实上,我不确定它会做什么(不过,请参阅 mod 的文档以了解如何将它用于理想的多项式模块化工作)。这是代码(可以使用 x.mod?? 访问,可以使用 x.mod? 访问文档):

    from sage.rings.ideal import is_Ideal
if not is_Ideal(I) or not I.ring() is self._parent:
I = self._parent.ideal(I)
#raise TypeError, "I = %s must be an ideal in %s"%(I, self.parent())
return I.reduce(self)

事实证明,对于通用环(如象征性的“环”),最后一步没有任何反应:

return f 

这就是为什么我们需要以某种方式再次要求它是一个整数。请参阅Trac 27401 .

关于python - 在 sagemath 中定义函数的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54942165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com