1 Ctrl+N或者通过顶部菜单新建了一个笔记本。
2 写完代码后直接保存,存的时候选择存为.m文件。
对吧?
如果是这样——八成就是这样吧——那么,不对。你可以把你建出来的这个.m文件打开看一下。代码的背景色是灰的吧?就像这样:
正确的方法应该是在写完代码后,选中代码单元,右键,“样式”->“Code”,然后再存为.m文件,或者在新建的时候,就使用顶部菜单,建一个.m文件,然后再在其中写代码,这种情况下,你再次打开.m文件时,代码的背景色是白的:
这样的程序包应该就可以正常载入了。
近期因为要在 Linux 集群上运行一个计算量很大的 Mathematica 程序,所以我把核心的函数写为一个程序包,然后使用 Wolfram Mathematica 脚本来调用这个程序包。写完程序包之后发现在程序包的 Begin["Private`"]...End[] 内定义的函数不能直接使用并行化的函数,如 ParallelSum 、 ParallelMap 等等。
这是因为程序包里的迭代变量在命名空间 MyPackage`Private` 之内,而并行化的函数默认使用的符号定义在 Context 之内。也就是说默认情况下,并行化的函数会去 Global` 寻找变量或函数等的定义,这便出错了 [1] 。
很简单,我们只需要为并行化的函数指定并行计算中函数的定义。具体方法如下 [1][2] :
其原理是:( 1+1/n )^n = 1+ 1+ 1/2!+ 1/3!+1/4!+1/5!+1/6!+ … + 1/n! Mathematica程序如下(默认取n=10,10!=360万,已经很大了):n = 10y1 = 1.0
y = 1.0
For[i = 1, i <= n, i++,
For[j = 1, j <= i, j++,
y1 = y1*j]
y = y + 1.0/y1
]
Print["近似值为: ", y, " 误差为: ", E - y]运行结果如下: 近似值为: 2.58683 误差为: 0.131447
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)