常见问题解答:使用Sage
在我的电脑上安装Sage副本的先决条件是什么?
Sage的大多数依赖项都是与Sage一起发货的。在大多数情况下在这种情况下,您可以下载一个预构建的二进制文件,并在没有安装任何依赖项。如果使用Windows,则需要安装虚拟机,可以下载从页面https://www.virtualbox.org/wiki/下载.之后安装VirtualBox时,需要下载VirtualBox发行版鼠尾草的http://www.sagemath.org/download-windows.html。确保遵循然后启动Sage虚拟机使用VirtualBox软件。
您可以获得Sage的完整源代码,以便自己编译它Linux或Mac OS X系统。Sage住在一个孤立的目录中不要干扰你周围的系统。它与一起发货开发Sage所需的一切,源代码依赖项和完整的变更日志。在Linux系统上,如Debian/Ubuntu,您可能需要安装建造 本质的
包和4米
宏处理器。您的系统如果你想编译Sage,需要有一个工作的C编译器来源。打开Debian/Ubuntu,您可以按如下方式安装这些必备组件:
如果您有多核系统,您可以选择并行构建圣人。命令
将为支持的构建部分启用8个线程并行性。根据需要更改数字8,以适应系统核心。某些Sage安装可能具有支持OpenMP的BLAS(和其他)库。OpenMP并行度的大小由环境变量OMP_NUM_THREADS;然而,众所周知,它不是很好地使用Python并行性,您可能希望
以防崩溃或挂起。
有关更多详细信息,请参阅安装手册.
如何让Sage的Python识别我的系统的Tcl/Tk安装?
可能是您已经安装了Tcl/Tk,并且您的系统的Python认识到它,但Sage的Python没有。通常来说,很少现在需要构建Sage的Python(anno 2023),但如果您这样做了,它就在这里。确保您安装了Tcl/Tk开发库。在Ubuntu上,这是命令
或者类似的东西。接下来,重新安装Sage的Python:
$制作 python3-清洁 python3-卸载 && 制作 蟒蛇3
这将自动拾取Tcl/Tk库。成功之后从Sage命令行界面中重新安装Sage的Python,发出以下命令:
如果他们没有提出导入错误
然后它成功了。
如何将Sage导入Python脚本?
您可以在Python脚本中将Sage作为库导入。一个警告是需要使用Python版本运行Pythons脚本它与Sage捆绑在一起(Sage 9.2与Python 3.7.x一起提供)。要导入Sage,请在Python脚本中放入以下内容:
当您想要运行脚本时,需要使用选项-蟒蛇
它将使用Sage自带的Python。例如,如果Sage在您的路径
变量,然后可以执行以下操作:
$圣人 -蟒蛇 /路径/to/my/script.py
另一种方法是编写Sage脚本并使用Sage运行该脚本自身。Sage脚本具有文件扩展名.鼠尾草
并且更多或不是Python脚本,而是使用Sage-specific函数和命令。然后您可以这样运行Sage脚本:
这将负责加载必要的环境变量和默认导入。
如何在Sage会话中重新加载Python脚本?
您可以使用以下命令在Sage会话中加载Python脚本负载例如,我们可以使用Sage导入名为simple.py带有:
每次更改文件simple.py时重复此命令。但是,如果键入:
应用于文件simple.py的每个更改都将在Sage中自动更新。
我可以在Python 3.x中使用SageMath吗?
自2020年1月发布9.0以来,SageMath在Python 3之上运行。
我用XXX安装Sage X.Y,那个版本有很多错误。我能做什么?
您的XXX系统上提供的Sage版本,即Sage版本X.Y通过它的包管理器,是非常古老的。还没有人有时间更新Sage的XXX版本。任何帮助都是非常感谢。你应该下载Sage的最新版本来自下载页面.如果您想帮助更新XXX版本的Sage,请发邮件给sage开发邮件列表。
我应该使用官方版本还是开发版本?
我们鼓励您使用最新官方版本的圣人。开发版本经常在sage-水平和鼠尾草释放邮件列表。帮助Sage发展的一个简单方法是下载最新的开发版本,在系统上编译,运行所有doctest,并报告任何编译错误或doctest故障。
圣人难学吗?
圣人的基本特征应该像学习Python的基础知识。网上有很多教程可以帮助您学习圣人。为了最大限度地发挥圣人的作用,我们鼓励你学习Python编程语言的一些特性。这里有一个Python上的资源列表不完整。可以找到更多资源通过网络搜索。
我可以在Sage中做X吗?
我们鼓励您使用Sage的选项卡自动完成。只需键入几个字符,点击选项卡键,查看是否显示所需的命令在选项卡自动完成列表中。如果您有一个名为我的命令
,然后键入我的命令。
并点击选项卡键以获取列表该命令支持的功能。阅读文件mycmd公司
,类型mycmd?
然后按输入键至阅读该命令的文档。类似地,类型mycmd??
并点击输入键获取该命令的源代码。你是还鼓励搜索源代码和文档圣人图书馆。搜索圣人的源代码库,使用命令search_src(“<search-keyword>”)
你在哪里应更换<搜索关键字>
用你正在寻找的关键词的。此外,您还可以搜索圣人的文档库使用命令search_doc(“<search-keyword>”)
.
当我键入“0.6**2”时,Sage到底做了什么?
当您在Python中键入“0.6**2”时,它会返回如下内容0.35999999999999999. 但当你在Sage中做同样的事时,它又回来了0.360000000000000. 要了解Python的行为原因,请参阅这个Python入门指南,特别是“浮点运算:问题和限制”。Sage所做的是“预处理”输入并转换它这样地:
圣人:预处理("0.6**2")
“实数('0.6')**整数(2)”
那是什么呢事实上跑步是:
RealNumber(实数)('0.6')**整数(2)
Sage开发商(事实上是Carl Witty)决定Sage浮动默认情况下,点号应仅打印已知的正确小数尽可能避免出现Python的问题。这个这个决定有其利弊。请注意RealNumber(实数)
和整数
Sage是特定的,所以您不能只输入将上述内容导入到Python中,并期望它在不首先导入的情况下工作声明,如:
从 圣人所有 进口 RealNumber(实数), 整数, 预处理
为什么Sage的命令历史与Magma的不同?
使用Sage,您将丢失Magma命令行的一个功能接口。在Magma中,如果输入历史上发现的线,则使用箭头键,然后按向下箭头键,再按历史记录中的下一行已获取。此功能允许您获取尽可能多的连续行你喜欢的历史。然而,Sage没有类似的功能。这个IPython公司命令提示符使用readline库(通过pyreadline),该库显然不支持此功能。岩浆有自己的习惯“readline-like”库,它确实支持此功能。(自那时起如果有人知道怎么做的话,很多人都要求这个功能要实现它,那么这样的实现肯定是欢迎!)
我在使用Sage的SciPy、cvxopt或NumPy时遇到了类型问题。
您正在使用Sage中的SciPy或cvxopt或NumPy,您会得到类型错误,例如。
TypeError:这些类型不支持函数,并且无法安全强制为支持的类型。
当您在Sage中输入数字时,预处理器会将其转换为一个基环,通过执行以下操作可以看到:
圣人:预处理(“stats.uniform(0,15).ppf([0.5,0.7])”)
“stats.uniform(Integer(0),Integer(15)).ppf([RealNumber('0.5'),RealNumber('0.7')])”
不幸的是,NumPy支持这些高级Sage类型,如整数
或RealNumber(实数)
尚未达到100%。作为解决方案,重新定义真实编号
和/或整数
改变的行为Sage编写器,因此十进制文字是浮点而不是Sage任意精度实数和整数文字都是Python整数。例如:
圣人:RealNumber(实数) = 浮动; 整数 = 整数
圣人:从 松软的 进口 统计数据
圣人:统计数据.测试_ ID([1,2,三,4,5], [2,三,4,5,.6])
测试。。。结果(统计值=0.0767529…,p值=0.940704…)
圣人:统计数据.制服(0,15).购买力平价([0.5,0.7])
数组([7.5,10.5])
或者,明确数据类型,例如。
圣人:从 松软的 进口 统计数据
圣人:统计数据.制服(整数(0),整数(15)).购买力平价([浮动(0.5),浮动(0.7)])
数组([7.5,10.5])
作为第三种选择,使用原始后缀:
圣人:从 松软的 进口 统计数据
圣人:统计数据.制服(0第页,15第页).购买力平价([0.5第页,0.7第页])
数组([7.5,10.5])
您还可以通过以下方式禁用代码中的预处理器填表人(错)
。您可以通过以下命令单独启动IPython线圣人 -伊皮顿
它不会预加载任何内容鼠尾草特有。或者将Notebook语言切换为“Python”。
如何保存对象,以便每次打开工作表时不必计算它?
这个节约
和负载
命令将保存和加载对象,分别是。
Sage是否包含与Mathematica的ToCharacterCode[]类似的函数?
您可能希望将ASCII字符(如“巨无霸”)转换为ASCII用于进一步处理的数字。在Sage和Python中,您可以使用字
,例如
鼠尾草:列表(地图(字, “abcd”))
[97, 98, 99, 100, 101]
圣人:列表(地图(字, “巨无霸”))
[66, 105, 103, 32, 77, 97, 99]
如何像在Mathematica中那样隐式编写乘法?
圣人的作用是:
圣人:隐式乘法(真的)
圣人:x个 2 x个 #未测试
2*x^2
圣人:隐式乘法(False(错误))
这是Sage编写的Python代码。它可能无法在复杂的情况。要查看编制者的操作:
圣人:隐式乘法(真的)
圣人:预处理(“2 x”)
'整数(2)*x'
圣人:隐式乘法(False(错误))
圣人:预处理(“2个”)
'整数(2)x'
请参见https://wiki.sagemath.org/sage_mathematica网站了解更多信息关于Mathematica vs.SageMath。
我可以让Sage在启动时自动执行命令吗?
是的,只需制作一个文件$HOME/.sage/init.sage
而且会的只要你开始Sage就执行。这假设圣人环境变量点页面(_S)
指向隐藏目录$主页/.sage
,默认情况下是这样的。
当我编译Sage时,我的电脑会发出哔哔声,然后关机或挂起。
编译Sage对CPU来说很费力。上述行为通常表示您的计算机过热。在许多情况下,这可能是通过清洁CPU风扇并确保系统。请让您的系统管理员或专业人员来做以防你从未这样做过。此类硬件维护,如果如果不是由熟练的专业人员执行,则可能会造成潜在的损坏您的系统。
对于Linux用户,如果您怀疑编译失败的原因是资源问题,修复方法可能是编辑您的/等/inittab
以便Linux引导到运行级别3。文件/等/inittab
通常包含类似于以下代码段的内容:
#0-暂停(不要将initdefault设置为此)#1-单用户模式#2-多用户,不带NFS(如果没有,则与3相同#网络)#3-全多用户模式#4-未使用#5-X11#6-重新启动(不要将initdefault设置为此)#id:5:initdefault:
它指导您的Linux发行版引导到图形登录屏幕。注释掉该行id:5:initdefault:
并添加线条id:3:initdefault:
,这样你现在就有了这样的东西:
#0-暂停(不要将initdefault设置为此)#1-单用户模式#2-多用户,不带NFS(如果没有,则与3相同#网络)#3-全多用户模式#4-未使用#5-X11#6-重新启动(不要将initdefault设置为此)##id:5:initdefault:id:3:initdefault:
现在,如果您重新启动系统,您将收到一个基于文本的登录屏幕。这允许您使用文本登录到系统基于虚拟终端内的会话。基于文本的会话通常不会像实际情况那样消耗那么多系统资源使用图形会话。然后构建您的Sage源代码分发在基于文本的会话中。你需要确保可以先恢复图形会话,然后再尝试记录进入基于文本的会话。
当我启动Sage时,SELinux抱怨说“/path/to/libpari-gmp.so.2”需要文本重新定位。我怎样才能修好它?
通过运行以下命令可以修复此问题:
$chcon公司 -t吨 文本rel_shlib_t /路径/to/libpari-gmp.so.2
升级Sage进展顺利,但现在横幅仍显示旧版本。我该如何解决这个问题?
Sage的每一个新开始都会存储横幅,而不是计算横幅。如果它还没有更新,这不应该阻止Sage运行正确地。类型横幅()
在圣人会议上检查真实情况版本。如果你想要正确的旗帜,你需要再次建立圣人通过键入制作 建造
在终端中。
如何在守护程序模式下运行sage,即作为服务?
有几种可能性。使用屏幕
,无hup
或放弃
.
用于打印三维对象的show命令不起作用。
Sage 6.4+的默认实时三维绘图使用Jmol/JSmol(焦耳/焦耳)以供查看。从命令行使用Jmol Java应用程序,以及用于在浏览器中查看纯javascript或Java小程序使用。默认情况下,在浏览器中使用纯javascript来避免一些不支持javaapplet的浏览器的问题插件(即Chrome)。在每个浏览器工作表上都有一个在以下情况下,生成三维图之前必须选中的复选框用户想使用Java小程序(小程序快一点复杂曲线图)。
故障最可能的原因是您没有安装了Java Run Time Environment(JRE),或者您有一个早于版本1.7。如果从命令行运行,则有另一种可能性你的浏览器没有支持Java的合适插件小程序(目前,2014年,插件不适用于大多数版本的镀铬)。确保已安装IcedTea浏览器插件(对于linux,请参阅包管理器),请参阅:冰镇茶,或Oracle Java插件,请参阅:Java语言.
如果您在web上使用Sage服务器,甚至使用javascript渲染不起作用,您可能对浏览器的javascript有问题发动机或将其关闭。
我想编写一些使用有限域算法的Cython代码,但“cimport sage.rings.finite_field_givaro”失败。我能做什么?
您需要给Sage一些提示,以便它使用C++(Givaro和NTL是C++库),它还需要GMP和STDC++库。下面是一个小例子:
#这些注释是对Cython关于编译器和
#Givaro库所需的库:
#
#distutils:language=c++
#distutils:librarys=givaro gmpxx gmp m
cimport公司 圣人林斯有限域吉瓦罗
#构造一个11阶的有限域。
cdef公司 鼠尾草.戒指.有限域吉瓦罗.FiniteField_givaro有限公司 K(K)
K(K) = 圣人.戒指.有限域吉瓦罗.FiniteField_givaro有限公司(11)
打印(“K是{}”.格式(类型(K(K))))
打印(“K基数={}”.格式(K(K).基数()))
#在字段中构造两个值:
cdef公司 圣人.戒指.有限域吉瓦罗.FiniteField_givaro元素 x个
cdef公司 圣人.戒指.有限域吉瓦罗.FiniteField_givaro元素 年
x个 = K(K)(三)
年 = K(K)(6)
打印(“x是{}”.格式(类型(x个)))
打印(“x={}”.格式(x个))
打印(“y={}”.格式(年))
打印(“x具有乘法顺序={}”.格式(x个.乘法顺序()))
打印(“y具有乘法顺序={}”.格式(年.乘法顺序())
打印(“x*y={}”.格式(x个 * 年))
#显示x的行为类似于有限域元素:
对于 我 在里面 范围(1, x个.乘法顺序() + 1):
打印("{} {}".格式(我, x个**我))
断言 x个*(1/x个) == K(K).一()
要了解更多信息,请键入
圣人.戒指.有限域吉瓦罗.FiniteField_givaro有限公司.
在Sage提示符下点击tab,然后使用??
获取更多有关每个功能的信息。例如:
sage.rings.finite_field_givaro。FiniteField_givaro.one有限公司??
详细介绍有限元中的乘法单位元素字段。
我在Mac OS X上遇到了奇怪的构建失败。我该如何修复?
搜索构建日志(install.log)以查看是否获得以下日志消息:
如果是这样,请尝试以下操作。创建(或编辑)/etc/launchd.conf
和包括以下内容:
然后重新启动。请参见本页了解更多详细信息。
如何在Sage中使用按位XOR运算符?
Sage中的独占或运算符是^^
。这也适用于就地操作员^^=
:
圣人:三^^2
1
圣人:一 = 2
圣人:一 ^^= 8
圣人:一
10
如果定义了两个变量,然后按如下方式进行计算:
圣人:一 = 5; b条 = 8
圣人:一.__异或__(b条), 13
(13, 13)
你也可以
括号是必要的,这样Sage就不会认为你有实数。定义函数有几种方法:
圣人:异或 = λ x个, 年: x个.__异或__(年)
圣人:异或(三, 8)
11
另一个选择,悄悄绕过圣人编制人,是
圣人:定义 异或(一, b条):
....: 返回 评估("%秒^%秒" % (一, b条))
圣人:异或(三, 8)
11
你也可以用填表人(错)
,然后^
将像在Python中一样工作。您可以稍后打开编制人编制人(True)
。仅在命令行中有效圣人。在笔记本电脑中,切换到Python模式。
对于对象a和b以及函数f,我意外地键入了f(a)=b而不是f(a?
这是因为Sage中函数是如何定义的f(x) = 快递
使用编写器的注释。还要注意,如果您在如果
声明,您将获得语法错误
在其他事情发生之前。所以在这种情况下,没有问题。
如何在Sage笔记本上使用不同的浏览器?
您需要从命令行执行此操作。只需运行这样的命令。
的源代码在哪里<功能>
?
通常可以访问用Python或Cython编写的函数和类在IPython命令行上使用??
快捷方式:
圣人:情节?? #未测试
签名:plot(*args,**kwds)
资料来源:
...
编译内置到Python或IPython中的对象但没有显示。Sage中有许多功能实现为符号函数,即它们可以作为符号表达式。他们的源代码也可能无法访问从命令行,尤其是基本函数,因为出于效率的原因,它们是用C++编码的。