进一步研究Python和Ruby之间的差异,是否存在与SciPy等效的Ruby,或者Ruby可用的其他科学数学宝石?
我正在用python或octave进行数学计算,因为手头上有非常好的函数和库.但是最近我对ruby产生了兴趣,我想知道Ruby中是否存在类似于Python中用于科学编程的numpy,scipy.具体来说,我正在寻找一些我可以在matplotlib中绘制绘图的东西,并在numpy和scipy中快速进行数学,代数计算.
这是我正在做的事情:
(1..999).each do |a|
(1..999).each do |b|
if Math.sqrt(a**2 + b**2) % 1 == 0 && a + b + Math.sqrt(a**2 + b**2) == 1000 && a >= b
puts a * b * Math.sqrt(a**2 + b**2)
end
end
end
Run Code Online (Sandbox Code Playgroud)
发生了什么,a并且b在公式中是可互换的,因此有两个匹配,因此puts输出两次.为了解决这个问题,我补充说a >= b,现在只输出一次.但是,如果a == b它输出两次.我知道在我使用的例子中a和b总是不同的,但这对我来说似乎是糟糕的设计.
两个问题:
Ruby中是否有更好的模式来获取数组并将其与自身进行比较?
如何避免它始终输出两次.我可以设置一个变量,如果在下一个循环开始之前发生变化就会爆发.这是正确的方法吗?