为什么在 Mathematica 中使用循环是低效的
1个回答
展开全部
因为在Mathematica中使用循环确实是低效的。。。。。。
深层次的原因涉及到Mathematica的底层实现所以我不太懂,但是至少从下面几个例子可以看出Mathematica里确实有很多比循环更好的方法
求和
首先举一个最简单的求和例子,求的值。为了测试运行时间取n=10^6
一个刚接触Mathematica的同学多半会这样写
sum = 0;
For[i = 1, i <= 10^6, i++,
sum += Sin[N@i]];
(*其中N@i的作用是把整数i转化为浮点数,类似于C里的double*)
sum
为了便于计时用Module封装一下,运行时间是2.13秒,如下图
然后一个有一定Mathematica经验的同学多半会知道同样作为循环的Do速度比For快,于是他可能会这么写
sum = 0;
Do[sum += Sin[N@i], {i, 1, 10^6}];
sum
如下图,用时1.37秒,比For快了不少
深层次的原因涉及到Mathematica的底层实现所以我不太懂,但是至少从下面几个例子可以看出Mathematica里确实有很多比循环更好的方法
求和
首先举一个最简单的求和例子,求的值。为了测试运行时间取n=10^6
一个刚接触Mathematica的同学多半会这样写
sum = 0;
For[i = 1, i <= 10^6, i++,
sum += Sin[N@i]];
(*其中N@i的作用是把整数i转化为浮点数,类似于C里的double*)
sum
为了便于计时用Module封装一下,运行时间是2.13秒,如下图
然后一个有一定Mathematica经验的同学多半会知道同样作为循环的Do速度比For快,于是他可能会这么写
sum = 0;
Do[sum += Sin[N@i], {i, 1, 10^6}];
sum
如下图,用时1.37秒,比For快了不少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询