rocwoods 发表于 2009-10-21 22:26:04

刚发现Mupad也并非完全不如Maple

本帖最后由 rocwoods 于 2009-10-21 22:29 编辑

偶然间想起以前一个测试问题,这个测试问题是某年韩国的一个IMO竞赛题,可以证明的,原问题以及证明见下面帖子:http://bbs.matwav.com/viewthread.php?tid=575597&highlight=5%5E100%2B5%5E75
现在是用计算机暴力分解它,记得以前用赛扬2.4G,256M内存的台式机+MATLAB6.5时(MATLAB6.5用的maple内核应该比较老),曾经耗时1000多秒!!所以我个人没事的时候经常拿它测试个人计算机速度以及软件某项符号计算的能力,后来随着MATLAB版本的升高(用的maple内核越来越新),以及计算机CPU、内存的升级,所用时间不断减少。目前在我个人笔记本(酷睿T8100,2G内存,XP sp2,MATLAB 2008a)上,这个时间是
tic;result = maple('ifactor(5^100+5^75+5^50+5^25+1)');toc
Elapsed time is 106.496166 seconds.
MATLAB2008a是MATLAB和maple联姻的最后一个版本,这个时候MATLAB用的maple内核好像是maple9
为了看看纯maple下的时间,特地在maple12上运行了下(还是我个人笔记本,操作系统也没变):
> result = ifactor(5^100+5^75+5^50+5^25+1);
result = (767186663625251) (4032808198751) (24687045214139234043375683501) (
28707251) (3597751)
下方给出的提示:内存10.31M,时间8.53秒
从这一点可见MapleSoft公司给Mathworks公司还是留了好几手的。

一直以来,以为Mupad完全不如Maple,于是想看看MATLAB2009a下,暴力分解这个式子要多少时间,当然计算机硬件环境和操作系统没变。本来以为要很长时间,结果大出我的意料;
tic;result = factor(a),toc
result =
3597751*28707251*4032808198751*767186663625251*24687045214139234043375683501
Elapsed time is 1.762579 seconds.
纯Mupad环境没有试验,不过从这个例子看出,Mupad在某些地方还是可以和Maple一拼的。

feiyuzhen 发表于 2009-10-21 23:18:26

我想知道matlab是不是在这个命令上用到了多核,
楼主开任务管理器看cpu占用没?

TBE_Legend 发表于 2009-10-22 09:27:08

偶然间想起以前一个测试问题,这个测试问题是某年韩国的一个IMO竞赛题,可以证明的,原问题以及证明见下面帖子:http://bbs.matwav.com/viewthread.php?tid=575597&highlight=5%5E100%2B5%5E75
现在是用计算机暴力分 ...
rocwoods 发表于 2009-10-21 22:26 http://forum.simwe.com/images/common/back.gif

你的机器真快。 这是我的机器上的maple13.01和mmtc 7.0.1的时间和结果:

rocwoods 发表于 2009-10-22 23:51:26

2# feiyuzhen
看CPU占用了,没有多核计算。计算的时候CPU使用率一直都是50%上下

feiyuzhen 发表于 2009-10-23 12:29:55

本帖最后由 feiyuzhen 于 2009-10-23 12:32 编辑

我猜测是命令针对cpu进行了优化,
看来,matlab/mupad和mathematica都做得不错,maple要加油啊,
不过以后的方向是针对异构进行优化如cpu+gpu,那就更爽了

maplev12 发表于 2011-1-18 22:37:49

本帖最后由 maplev12 于 2011-1-18 22:41 编辑

在Command Line下进行运算,可见并不是Maple计算耗费时间,而是重新分配内存耗费了时间,当第一次运算之后,内存变大,时间耗费小于计算机计时器的最小时间单位,计时器显示为0。速度远远快于Mathematica以及MuPad。的确强大……
【Maple 14 cmaple 运行】
C:\Documents and Settings\Administrator>"C:\Program Files\Maple 14\bin.win\cmapl
e"
    |\^/|   Maple 14 (IBM INTEL NT)
._|\|   |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2010
\MAPLE/All rights reserved. Maple is a trademark of
<____ ____>Waterloo Maple Inc.
      |       Type ? for help.
> ti := time(): ifactor(5^100+5^75+5^50+5^25+1); time()-ti;
memory used=53.8MB, alloc=35.6MB, time=3.97
memory used=92.0MB, alloc=35.6MB, time=10.39
memory used=130.1MB, alloc=42.6MB, time=12.58
(767186663625251)(4032808198751)(24687045214139234043375683501)

   (28707251)(3597751)

                                    12.766

> tr := time(): ifactor(5^100+5^75+5^50+5^25+1); time()-tr;
(767186663625251)(4032808198751)(24687045214139234043375683501)

   (28707251)(3597751)

                                    0.                           #注意看这里,运算时间为“0”

>

【Mathematica Kernel运算结果】
C:\Documents and Settings\Administrator>"C:\Program Files\Wolfram

Research\Mathe
matica\7.0\math.exe"
Mathematica 7.0 for Microsoft Windows (32-bit)
Copyright 1988-2009 Wolfram Research, Inc.

In:= FactorInteger//Timing

Out= {1.609, {{3597751, 1}, {28707251, 1}, {4032808198751, 1},

>   {767186663625251, 1}, {24687045214139234043375683501, 1}}}

In:=

maplev12 发表于 2011-1-18 22:46:22

无图无真相,重新运行了一下,把图贴上~~谁说Maple不如M@~~
^_^
以下是Maple 14的:


以下是Mathematica 7的:

waynebuaa 发表于 2011-1-18 22:51:15

7# maplev12
都Mathematica 8 了

liuyalong008 发表于 2011-1-19 10:41:06

为什么我出错?

clear
tic;
a=5^100+5^75+5^50+5^25+1
f=factor(a)
toc


??? Error using ==> factor at 27
The maximum value of n allowed is 2^32.


clear
tic;
digits(300)
a=5^100+5^75+5^50+5^25+1
f=factor(a)
toc

??? Error using ==> factor at 27
The maximum value of n allowed is 2^32.

liuyalong008 发表于 2011-1-19 11:02:46

还有一个错误答案


>> feval(symengine, 'factor',a)

ans =

2^180*997*1367*8243*458197

maplev12 发表于 2011-1-19 11:46:33

clear
tic;
digits(300)
a=sym(5^100+5^75+5^50+5^25+1)
f=factor(a)
toc
a =

5147557589468029*2^(180)



f =

(2)^180*(997)*(1367)*(458197)*(8243)


Elapsed time is 1.161588 seconds.


楼上的……你的做法是符号计算的…应该是上边的这段代码~否则数太大就溢出了…
楼主的意思“暴力分解”啊~~就是把数值一个一个穷举算出~不是符号计算的~

liuyalong008 发表于 2011-1-19 12:06:49

clear
tic;
digits(300)
a=sym(5^100+5^75+5^50+5^25+1)
f=factor(a)
toc
a =

5147557589468029*2^(180)



f =

(2)^180*(997)*(1367)*(458197)*(8243)


Elapsed time is 1.161588 secon ...

maplev12 发表于 2011-1-19 11:46 http://forum.simwe.com/images/common/back.gif

但是你的答案明显是错的!
正确答案是:

f:=factor(a)
3597751*28707251*4032808198751*767186663625251*24687045214139234043375683501

bainhome 发表于 2011-1-19 12:23:54

从这一点可见MapleSoft公司给Mathworks公司还是留了好几手的
我注意到这两段代码前者是在MATLAB中调用MAPLE引擎,后者是直接在MAPLE中执行,感觉时间上很大的差异会不会是前者在做初始化?

liuyalong008 发表于 2011-1-19 12:38:11

个人觉得matlab在计算

a=sym(5^100+5^75+5^50+5^25+1)

的时候会溢出,导致计算出错

所以首先得把a的准确的syms类型的结果计算出来再分解:
clear
tic;
factor( evalin(symengine,'5^100+5^75+5^50+5^25+1'))
toc

ans =

3597751*28707251*4032808198751*767186663625251*24687045214139234043375683501

Elapsed time is 1.137125 seconds.


还是比较慢
PS:四核ie3,内存4G

maplev12 发表于 2011-1-19 21:51:56

本帖最后由 maplev12 于 2011-1-21 14:21 编辑

Sorry……把sym()与sym('')写混了~~应该是这样的:>> clear
tic;
digits(300)
a=sym('5^100+5^75+5^50+5^25+1')
f=factor(a)
toc

a =

5^100+5^75+5^50+5^25+1



f =

(767186663625251)*(24687045214139234043375683501)*(4032808198751)*(28707251)*

(3597751)


Elapsed time is 0.028711 seconds.
>> 符号计算在相当情况下还是挺高效的~~
这样够快吧0.028711s…当时我还开着Splayer、foobar2000、Safari等等来着~PC配置1.67GHz主频、1G内存~

rocwoods 发表于 2011-10-9 16:16:30

本帖最后由 rocwoods 于 2011-10-9 16:16 编辑

maplev12 发表于 2011-1-19 21:51 http://forum.simwe.com/static/image/common/back.gif
Sorry……把sym()与sym('')写混了~~应该是这样的:符号计算在相当情况下还是挺高效的~~
这样够快吧0.028711 ...

最近又测试了下,
采用Mupad内核:
>> tic;factor(sym('5^100+5^75+5^137+5^55+1')),toc
ans =
47*113*191*380346198138430183870192306511493813939537992576921062833101930565220127*189491*7850788148293
Elapsed time is 2.688395 seconds.采用Maple内核:
tic;maple('ifactor(5^100+5^75+5^137+5^55+1)'),toc
ans =
   (47)(113)(191)(7850788148293)(380346198138430183870192306511493813939537992576921062833101930565220127)(189491)
Elapsed time is 1348.521825 seconds.很无语啊。

liysman 发表于 2011-10-30 20:21:44

我用mathematica8试了下,0.76s,Core2Duo,P7570,2.26GHz,4G内存。
页: [1]
查看完整版本: 刚发现Mupad也并非完全不如Maple