为什么老显示“没有足够的内存...”?
mathcad吧
全部回复
仅看楼主
level 13
LNSZDZG 楼主
最近Mathcad在运算时总显示“没有足够的内存。。。”
查看机器内存的话,还有大量空闲内存的啊,为什么呢?
2014年02月19日 03点02分 1
level 15
在开始做julia时,我也遇到过同样的问题。当时,我的办法是,想办法缩减矩阵的大小,其后果是图的质量不好。不治本。
2014年02月19日 05点02分 2
level 12
可能和结果的大矩阵有关,更可能和过程中出现的大矩阵有关。
你每次退出MC的时候都保存了么?我建议你先用MC干点儿1+1=2的事儿,存盘,退出,然后再打开你的大矩阵工作表,如此可能开始计算慢一些,不过估计不会出现内存不足的情况了。
MC对未存工作表有预留空白内存的毛病。
在MC的quicksheet里给出了一个主动造出空白内存的方法,用来提高MC的计算速度。
尽量避免在运算过程中出现大矩阵操作,最好是在计算表结尾处再把所有的数组装成你所要的矩阵,而在过程中出现的都是小矩阵的赋值。
MC和matlab的最大区别我想就是对大矩阵的内存控制方法不一样了,matlab在操作大矩阵的时候不会遇到因空白内存而报错的情况。
使用大矩阵操作测试内存,是测试内存能力的很常用的方法。
2014年02月19日 09点02分 3
谢谢朱老师。
2014年02月19日 10点02分
level 13
LNSZDZG 楼主
矩阵不大啊,比起Julia集中400×400的矩阵,这里的小多了,这里的矩阵连512×2都不行。
再者在Julia集中的循环次数是400×400×255次的,这里只有3×9次,过会将程序发上来,请您看看。
2014年02月19日 12点02分 4
level 13
LNSZDZG 楼主
源程序
矩阵X,这里只有5行,调用的只有4行
调用n=7时的图形,很粗糙
n=9时出现问题
注:在次其他的矩阵M1,M2都禁止计算了。
2014年02月19日 12点02分 5
发个工作表出来,我下载下来看看。另外,你源程序里的p在后面没有用到,删了可以么?
2014年02月19日 12点02分
回复 朱老剑客 :已经发到您的邮箱了
2014年02月19日 13点02分
level 13
LNSZDZG 楼主
2014年02月19日 13点02分 6
level 15
LNSZDZG老师:
您现在的M有5.2429*10^5行,图像中也就有(5.2429*10^5)*(5.2429*10^5)个点,计算机当然吃不消了。我的Julia图形才600*400个点,二者不可比。我没有看懂您的算法中的(x,y)的函数关系,不然我就改写了。建议:
用Julia中的方法,给每一个像素点赋值。先算出z:=f(x,y),然后P.i,j:=z ,这样既可以减少计算机的操劳,也可以由您确定图形的像素点的多少。
对否,莫笑话。仅供参考。
2014年02月19日 14点02分 7
rows(M)=5.2429*10^5 cols(M)=2
2014年02月19日 14点02分
回复 月城公寓寓公 :确实如此啊,但图形却依然比较粗糙啊,看来还得另谋出路啊。
2014年02月19日 14点02分
回复 月城公寓寓公 :这是您给的那本书中的“代数迭代系统做分形”的内容啊。我在试着写程序,您看看那本书上的VB程序就明白了。
2014年02月20日 02点02分
回复 月城公寓寓公 :就是“树上的蝉”的那个,朱老剑客已经做出了非常好的图了,您看看。
2014年02月20日 02点02分
level 13
LNSZDZG 楼主
问题在这!!
2014年02月19日 15点02分 8
level 13
LNSZDZG 楼主
谢谢朱老剑客和月城,正如朱老剑客所言“分形本身就是在制造大矩阵,真是矛盾呀。”
我通过查看矩阵,发现重复元素非常多,(也许是试用了rnd)的缘故吧!而在分形作图时重复元素无疑是一个浪费,所以我试着写了一个减肥的小程序,调用之后才发现:几乎十有八九是重复元素啊,太惊人了。
朱老剑客的那个图就是最好的结果。树上几个蝉!
2014年02月20日 02点02分 10
level 13
LNSZDZG 楼主
减肥程序
我做的图
2014年02月20日 02点02分 11
level 13
LNSZDZG 楼主
这句没懂,能否明示?
2014年02月21日 14点02分 13
其它3张IFS表用1-y,唯独C3要用0.5-y,否则mathcad提示u,v值有错。等一会儿,我发加了背景的图。您问这儿,也改了。这个程序占用电脑太厉害,我转换成图片都得好一会儿(大概十多分钟)。啊,已经好了,马上传上来。改了几处小地方,整体算法没变。
2014年02月21日 15点02分
level 15
LNSZDZG老师:
您的“蝉”程序有一个错误,就是在迭代循环中使用了矩阵A,随着计算次数的增加,A的行数越来越多,造成图形矩阵十分巨大,其中自然有很多冗余的数据。还是用x,y的好。
我的程序已经照书改编好,那本书也不能全部照搬,有我自己的理解。程序中有4张IFS表,可以用同一个程序,生成4幅图形。
现上传上来供您参考,敬请指正。
刚才正在抱怨太占电脑资源,系统就出错,把我刚编好的程序丢失了。好在有编程中途的备份,又补充修改了一下。
2014年02月21日 15点02分 15
level 13
LNSZDZG 楼主
其实背景可以直接这样加:
2014年02月22日 02点02分 19
您的方法可以随意添加各种颜色的背景,是值得采用的一种方法。但是,因为我的程序中,有 if G.u,v=0 的条件语句,所以在理论上还是有区别的。其差别,眼睛未必能区分出来。
2014年02月22日 04点02分
level 15
为了提高计算速度,我采用了两个办法:
1.去除了原来的IFS表中冗余的第0行的数据;
2.把彩图挪动到单色函数图的前面。因为,彩图的RGB矩阵,在程序中已经生成,而单色图是在需要显示时才边算边显示。如果不看单色图,计算机还懒得算呢。
这样改进后,自我感觉,计算的时间缩短了。为做动画,提供了条件。
为了在一张A4纸中可以容纳更多的IFS表,我把各表挤得很近。
要程序执行,在IFS表组的右下方用鼠标点击菜单。注意,选择好后,要用鼠标另在空白处点击一下,否则,选好的IFS对象有可能改变。
动画:rnd() 产生闪烁。“树”的效果最差。[无效] http://pan.baidu.com/s/1dDHxzcH
程序:[无效] http://pan.baidu.com/s/1i3n3ccX
2014年02月23日 07点02分 20
您的程序已经很完善了,您还加了控件啊,很棒了!
2014年02月23日 11点02分
上色还是没有解决的问题。
2014年02月23日 12点02分
1