Dim*_*ris 0 matlab wolfram-mathematica octave scilab
我在Octave,Scilab和Matlab提示符下测试以下命令.
>> A = rand(10000,10000);
>> B = rand(10000,1);
>> tic,A\B;, toc
Run Code Online (Sandbox Code Playgroud)
时间分别为40,15.8和15.7秒.为了比较,Mathematica的表现是
In[7]:= A = RandomReal[{0, 1}, {10000, 10000}];
In[9]:= B = RandomReal[{0, 1}, 10000];
In[10]:= Timing[LinearSolve[A, B];]
Out[10]= {14.125, Null}
Run Code Online (Sandbox Code Playgroud)
这是否表明Octave不如线性方程领域的其他软件那么强大?
我认为你的测试存在缺陷.后面的算法A\B利用了方程组中的特殊模式和结构,因此执行时间在很大程度上取决于random(10000,10000)生成的内容.在4.0.0我的机器上使用Octave 进行三次不同的运行,您的代码将返回7.1s,95.1s并且16.4s.这表明随机生成的第一个矩阵可能是稀疏的,当您使用Scilab和Matlab测试代码时可能就是这种情况.因此,除非你确保算法正在评估相同的事情,或者除非你以合理的方式平均执行时间(这对我来说不是很容易找到),那么比较它们就像你做的那样没有意义.