我正在使用Maxima进行一些符号计算,但我遇到了错误Heap exausted,我认为这意味着Maxima占用了太多内存(超过1GB)。我如何告诉Maxima使用更多的内存?
我在32 Gb内存的机器上使用了最新的CentOS。
编辑这里是我正在使用的代码
load("ctensor");
ct_coordsys(kerr_newman);
rho(r,theta):=r^2+a^2*cos(theta);
delta(r):=r^2-2*m*r+a^2;
lg:matrix([-(1-2*m*r/rho(r,theta)),0,0,-2*a^2*m*r*sin(theta)^2/rho(r,theta)],[0,rho(r,theta)/delta(r),0,0],[0,0,rho(r,theta),0],[-2*a^2*m*r*sin(theta)^2/rho(r,theta),0,0,sin(theta)^2*(r^2+a^2+2*a^2*m*r*sin(theta)^2/rho(r,theta))]);
lriemann(true);
uriemann(true);
rinvariant();代码在计算uriemann(true);时停止。
发布于 2019-12-12 20:35:54
“累加”通常意味着某种操作(例如,分解、简化有理表达式或包含自由基的表达式等)导致越来越大的表达式的产生。增加内存分配很少能解决这样的问题--通常情况是,它只运行更长时间,然后最终又耗尽内存。
几件事要试一试。(1) Maxima使用什么Lisp实现编译?您可以看到,通过build_info(); GCL (GCL)使用内存的效率低于其他Lisp实现,因此您可以尝试使用SBCL构建Maxima。在典型的Linux发行版上重建Maxima非常简单。如果你想走那条路,我会给出更多的细节。
(2)你到底想做什么?你能把你给出的导致记忆错误的输入发出来吗?也许我们可以重新组织事物,或者尝试一些不同的操作,以防止巨大的表达式在一开始。
https://stackoverflow.com/questions/59303081
复制相似问题