One that I have found already is that this pattern is repeated again and again when maximizing the number of spheres within an enclosed container. Any other arrangement leads to more wasted volume. I guess that this arrangement also suggests a point of stable equilibrium for potential energy.
Well, thanks to everyone who I pestered on this topic. I appreciate all of the input, as even the now irrelevant posts did serve to drive me closer to the solution that I was looking for.
]]>R = [2sin((90n - 180)/n) / sin(360/n)] - 1
Does not even have a solution when x = 0 at n = 2.
This makes sense as n is the number of spheres enveloping a single inner sphere.
Actually n has a domain of 3 to ∞.
The successive Rs are:
((2√3)/3)-1, n=3
√(2) - 1, n=4
[(√(5) + 1)√(2)] / [√(√(5) + 5)], n=5
1, n=6
Essentially, the sin((90n - 180)/n) / sin(360/n) part has to be rational. You are only multiplying this value by 2 and then subtracting 1 to get R.
I put this function into my TI-89 and then looked at the table. After scanning up to n = 1000, it seems clear that this function does not produce any further rational ratios. I guess that I will not be able to prove it mathematically at this time.
The implication is that a 1:1 ratio (exterior spheres radius to the interior sphere radius) is the only time when such an arangement can be made where all spheres touch each other. This occurs when n = 6, meaning that the seven sphere arrangement is unique.
]]>x = 180n = 180*6 ≠ 60
x = 360ny = 360(6)(60) ≠ 60
Heh, just kidding of course. Degrees works just as well.
sin(x)/sin(y) is only rational when x = 180*n or x = 360*n*y, where n is an integer.
]]>Oh, is there C++ code that mimmicks trigonomic functions? I will need them if I am going to use the computer to do this one.
#include <math.h>
http://www.cplusplus.com/ref/cmath/
R = [2sin((90n - 180)/n) / sin(360/n)] - 1
sin(x)/sin(y) is only rational when x = 0 or x = 2Pi*n*y, where n is an integer. It should be easy to solve from there.
]]>R = [2sin((90n - 180)/n) / sin(360/n)] - 1
The problem with a rational test is that 1.1 / 2.4 is rational. That's 11 / 24. And there's even more problems with that. Values such as 1.1 can not be stored entirely in binary. You can get close, but not exact. So you can't tell the difference between 1.1 and 1.1000000000000001. And further more, irrational numbers can't be stored on the computer anyways. You can have an approximation, but that's it.
I'll think more on this problem tonight, but I believe it can not be solved through a computer.
]]>A rounding function should be relativly easy to write, though.
float y;
int x = y + 0.5;
Here are my functions >smile
y = 1
y = |x| / x
y = sqrt(x^2)
Those are not natural numbers.
You want a cool function? Take the binary value stored in a float, and save that value in an unsigned integer. This can easily be done with pointers:
#include <iostream>
using namespace std;
int main()
{
float *f = new float;
*f = -5.3;
cout << *((unsigned int *)f) << endl;
delete f;
}
The output is: 3232340378
The thing that's cool about this function is that (on a computer) it's 1-1 and onto. Of course, in real life it's not because there are a greater amount of fractions (rationals) than there are integers.
]]>n≥3 gives a rational value of R other than when n = 6
R = [2sin((90n - 180)/n) / sin(360/n)] - 1
At n = 6, R = 1, but most other values take the form of √(4/3) - 1 at n = 3 and √(2) - 1 at n = 4 and so forth. I'm looking for ratios that I can actually produce in the real world.
From what I have computed so far, there doesn't seem to be another case of a rational R, but I cannot prove it.
]]>unsigned int x;
If you were to assign a float or decimal value to it, it would automaticly be converted to an int and change the sign if its negative I think.... But I believe, the drawback is it doesn't round. Thus if you assigned a value of 3.9999999999 to an int it would have a value of 3. A rounding function should be relativly easy to write, though.
]]>By the way, do you think that you can solve the problem above for integer values of R without a computer? Techically, R does not have to be an integer either but rather a real value.
]]>But before you get too involved, there are many different programming languages to choose from, each with their advantages and disadvantages.
C++ is elegant and fast, but misses out on its ability to put it live on a website. At the other end, Javascript is a bit "slack", but can be added to a website with great ease. And many choices inbetween !
I see programming as part of Mathematics, but proofs are better done with "pencil and paper" for the simple reason that to use a program as proof would require a complete description of the program, right down to the algorithm used by the sin() function.
Having said that - a program will give you many insights, and allow you to experiment freely with your ideas. And it is fun!
]]>