# Forum: wxRuby ruby to solve a physics question

on 2011-09-14 02:34
```I am trying to solve one of my graduate level physics problems with
ruby...
Here is what I have so far...

a6=0.0
for n1 in -10..10
for n2 in -10..10
for n3 in -10..10
if n1!=0 and n2!=0 and n3!=0
p=Math.sqrt(n1**2+n2**2+n3**2+n1*n2/1.414+n1*n3/1.41+n2*n3/1.414)
a6+=(1/p)**6
end
end
end
end
puts a6

What I've got here is a 10x10x10 face-centered cubic lattice of atoms.
What I want to do is find this constant a6= sum(1/Pij)**6.  From a
starting point I want the distance to every other atom location point in
the structure, meanwhile inversing and power to the sixth each distance.
Then I want to add all those up.  This should return 14.4????```
on 2011-09-14 19:32
```-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 14.09.2011 02:34, schrieb thiess cunningham:
> I am trying to solve one of my graduate level physics problems
> with ruby...

Hi thiess,

this is the wxRuby mailinglist, related to the wxRuby GUI toolkit.
Your question should better be served on ruby-talk. Go to
http://www.ruby-forum.com/forum/ruby for posting there.

> location point in the structure, meanwhile inversing and power to
> the sixth each distance. Then I want to add all those up.  This
> should return 14.4????
>

I'm by no means someone who has any knowledge on how atom physics
work, but a few notes on your code:

* Don't use "for" in Ruby. There's the #each method that is the
correct idiom for this. And four your specific case you should use:
-10.upto(10) do |nx| ... end

* The test against zero can be made much more readable with the
Methods Integer#zero? and Integer#nonzero?

* I'm not willing to dig into the giant term you pass to Math.sqrt.
- From a first glance, you might want to have a look at the
Enumerable#inject method, which you can use to easily sum up things
that are computed the same way.

* Be aware that doing math with floating-point numbers is always
dangerous as they're not exact. The further you continue to compute
with floating-point results you got, the more unprecise your final
result will be. If I remember correctly, this is the industry standard
to blame for this: http://en.wikipedia.org/wiki/IEEE_754-2008

As I noted before, post your question to ruby-talk. It's not related
to wxRuby in any way.

Vale,
Marvin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOcORYAAoJELh1XLHFkqha3YgH/jv4i6v+5tLR/xdhN/LCMBeD
iHyDj6/Qsrq7r7Xg8J1GeiuXpdZzk3GlkjlJTCJ1+4mgP+zsHW+G4XwlMwvQCX69
88tfeeOAV1KxyOcAbU6CQkD/1O6HTV5/CP0EwJOPN+kZEDnQSVXoax0chykstNLS
EBvwbkjLaopfz5Hc5kXpsWFIeuMRO4OhW9eftmWm15zTjoscUOUcrAB+r8QUCeMq
jzqod7vbxrk9lw6PE5e2TqQmPuD+haAOdsM3R9/FqKA5I4tLxXaxymlUme/aOAL2
kMB8t8huHOWEW0OdzhdCCAHT7UY13IGgiNXDpXF1WOhFo6re00if13oxaQ9kNsU=
=mrX6
-----END PGP SIGNATURE-----```
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
 User name or e-mail address Password
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.