相关疑难解决方法(0)

构造具有内存的函数的最佳方法

美好的一天,

我说,我有一些非常懒散和复杂的功能f[x,y].我需要详细ContourPlot介绍它.此外,f[x,y]由于缺乏物理内存,该功能有时会失败.在这种情况下,我必须自己停止评估并调查点{x,y}的问题情况.然后我应该将元素{x,y,f [x,y]}添加到计算值列表f[x,y](比如"缓存")并重新开始评估ContourPlot.ContourPlot必须f从缓存中获取所有已计算的值.我宁愿将这样的列表存储在某个文件中,以便以后能够重用它.并且手动向该文件添加有问题的点可能更简单.

如果计算值列表f可能包含10000-50000个点,那么实现此方法的最快方法是什么?

wolfram-mathematica

19
推荐指数
2
解决办法
2503
查看次数

删除重复列表元素,保留外观顺序

我正在制作10 ^ 6到10 ^ 7实数的平面列表,其中一些正在重复.

我需要删除重复的实例,只保留第一次出现,而不修改列表顺序.

这里的关键是效率,因为我有很多要处理的清单.

示例(假):

输入:

  {.8, .3 , .8, .5, .3, .6}
Run Code Online (Sandbox Code Playgroud)

期望的输出

  {.8, .3, .5, .6}  
Run Code Online (Sandbox Code Playgroud)

除了注意

用Union删除重复元素(不保留顺序)给我的穷人的笔记本电脑:

DiscretePlot[a = RandomReal[10, i]; First@Timing@Union@a, {i, 10^6 Range@10}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

wolfram-mathematica

9
推荐指数
3
解决办法
2417
查看次数

在Mathematica包中输出"Private""内容

我试图在Mathematica 7.0中解决以下实现问题已有几天了,我不知道到底发生了什么,所以我希望有人可以给我一些提示.我有3个函数,我在Mathematica中实现了一个扩展名为*.nb的源文件.他们对所有的例子都很好.现在我想将这些功能放到3个不同的包中.所以我用扩展名.*m创建了三个不同的包,其中我放了所有想要的Mathematica函数."stereographic.m"包中的一个示例,其中包含以下代码:

BeginPackage["stereographic`"]

stereographic::usage="The package stereographic...."
formEqs::usage="The function formEqs[complexBivPolyEqn..."
makePoly::usage="The function makePoly[algebraicEqn] ..."
getFixPolys::usage="The function..."
milnorFibration::usage="The function..."

Begin["Private`"]
Share[];

formEqs[complex_,{m_,n_}]:=Block[{complexnew,complexnew1, realeq, imageq, expreal, 
expimag, polyrealF, polyimagF,s,t,u,v,a,b,c,epsilon,x,y,z},
complexnew:=complex/.{m->s+I*t,n->u+I*v};
complexnew1:=complexnew/.{s->(2 a epsilon)/(1+a^2+b^2+c^2),t->(2 b 
epsilon)/(1+a^2+b^2+c^2),u->(2 c epsilon)/(1+a^2+b^2+c^2),v->(-
epsilon+a^2 epsilon+b^2 epsilon+c^2 
epsilon)/(1+a^2+b^2+c^2)};
realeq:=ComplexExpand[Re[complexnew1]];
imageq:=ComplexExpand[Im[complexnew1]];
expreal:=makePoly[realeq];
expimag:=makePoly[imageq];
polyrealF:=expreal/.{a->x,b->y,c->z};
polyimagF:=expimag/.{a->x,b->y,c->z};

{polyrealF,polyimagF}
]

End[]
EndPackage[]
Run Code Online (Sandbox Code Playgroud)

现在测试我加载包的功能

Needs["stereographic`"]
Run Code Online (Sandbox Code Playgroud)

一切正常.但是当我用例如测试函数时

formEqs[x^2-y^2,{x,y}]
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

{Private`epsilon^2 + 2 Private`x^2 Private`epsilon^2 + 
 Private`x^4 Private`epsilon^2 - 
 6 Private`y^2 Private`epsilon^2 + 
 2 Private`x^2 Private`y^2 Private`epsilon^2 + 
 Private`y^4 Private`epsilon^2 - 
 6 Private`z^2 Private`epsilon^2 + 
 2 Private`x^2 …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

8
推荐指数
2
解决办法
2123
查看次数

如何存储长符号计算的结果以供以后使用?

我的计算是这样的:

f[x_]:= (*runs fast*)
g[x_]:=(*runs fast*)
h[x_]=depends on f[x],g[x] (*runs slow ~5mins*)
Run Code Online (Sandbox Code Playgroud)

现在我只需要结果,h[x]并且每次重新启动mma时,我基本上重做相同的计算,以便h[x]在可以存储时获取.有什么方法可以保存符号结果,只需在需要的时候导入它吗?

wolfram-mathematica

4
推荐指数
1
解决办法
1733
查看次数

标签 统计

wolfram-mathematica ×4