sunnuntai 24. helmikuuta 2013

Pisteitä tasaisesti pallopinnalle

Dimensio-lehden numeron 1/2013 pulmatehtävissä pitää sijoittaa $n$ pistettä tasavälisesti pallon pinnalle mahdollisimman kauas toisistaan. Arvoille 2, 3 ja 4 ratkaisu löytyy geometrisilla päättelyillä melko helposti, kuten Dimension sähköisen version eDimension artikkeli osoittaa. Tämä sisältää myös viitteen Edith Mooersin artikkeliin, jossa ongelmaa, ns. Tammesin tehtävää käsitellään yleisesti. Tammes oli hollantilainen kasvitieteilijä, joka vuonna 1930 esitti ongelman siitepölytutkimuksissaan.

Ei ole itsestään selvää, mitä pisteiden tasainen sijoittelu pallopinnalle tarkoittaa. Mooersin artikkelissa asetetaan varsin luonnollinen vaatimus: lyhimmän kahden pisteen välisen etäisyyden tulee olla mahdollisimman suuri. Tällöin pistekonfiguraation tulee olla sellainen, että se antaa funktiolle \[ \min_{i \neq j} d_{ij} \] maksimiarvon. Tässä $d_{ij}$ tarkoittaa $i$:nnen ja $j$:nnen pisteen välistä etäisyyttä ja minimi muodostetaan kaikkien pisteparien suhteen. Etäisyys puolestaan voidaan mitata joko suoraviivaisesti tai pallon pintaa pitkin.

Tämä ei kuitenkaan ole ainoa mahdollisuus. Voisi myös ajatella, että pisteet ovat identtisiä sähkövarauksia, jotka pääsevät vapaasti liikkumaan pallopinnalla. Ne hylkivät toisiaan ja pyrkivät siten sijoittumaan toisistaan mahdollisimman kauaksi. Tällöin systeemin kokonaispotentiaalin tulee olla mahdollisimman pieni, ts. konfiguraation tulee antaa minimiarvo funktiolle \[ \sum_{i \neq j} \frac{1}{d_{ij}}. \]
Jotakin muutakin voitaisiin tasaisuuden mittana käyttää.

Antavatko eri mittaustavat sitten kuitenkin samanlaiset tulokset? Eivät välttämättä. Esimerkiksi tapauksessa $n = 5$ kelpaa edellisessä vaihtoehdossa konfiguraatio, jossa kaksi pisteistä on pallon navoilla ja muut kolme päiväntasaajalla siten, että niiden välinen kaarietäisyys on vähintään 90° (vasemmanpuolinen kuva). Mahdollisia konfiguraatioita on siten äärettömän paljon. Jälkimmäisessä vaihtoehdossa päiväntasaajalla olevien pisteiden välisen kaarietäisyyden tulee olla 120°, jolloin ratkaisuja on vain yksi (oikeanpuolinen kuva).



Lukija voi kokeilla muitakin pisteiden lukumääriä verkkosivulla http://matta.hut.fi/webMathematica/matta/partikkelit.jsp, jossa laskentavälineenä on palvelimella toimiva Mathematica. (Edellytyksenä luonnollisesti on, että järjestelmä toimii, mikä ei aina ole niinkään selvää.)

Viitteessä http://mathpages.com/home/kmath005/kmath005.htm on selvitetty identtisten sähkövarausten sijoittuminen pallopinnalle tapaukseen $n = 32$ saakka. Voisi kuvitella, että mikäli varausten (pisteiden) määrä on sama kuin jonkin Platonin kappaleen kärkien määrä, ne asettuisivat tämän kappaleen mukaiseen asemaan. Näin ei kuitenkaan kaikissa tapauksissa ole.

Kiintoisan esimerkin pisteiden ainakin jossakin määrin tasaisesta sijoittamisesta pallopinnalle muodostavat radioastronomisten antennien suojakuvut, esimerkkinä Metsähovin suojakupu (siirry sivulla hieman alaspäin). Tiedossa ei ole, millä kriteerillä pisteiden paikat on tässä valittu.

2 kommenttia:

Jaakko kirjoitti...

Yksi konstruktiivinen tapa, jolla saadaan aikaiseksi tuollaisia Metsähovin kuvun kaltaisia rakenteita -- tiedä sitten, miten tuo on oikeasti suunniteltu -- on säännöllisen monitahokkaan rekursiivinen jakaminen.

Tässä äkkiä vaääntämäni Matlab-koodi, joka aloittaa ikosaedristä, jakaa sen neljä kertaa, ja piirtää tulokset.

% JL Aug 3 2013
% initial icosahedron
pts = [ 0 -0.525731 0.850651; 0.850651 0 0.525731; 0.850651 0 -0.525731; ...
-0.850651 0 -0.525731; -0.850651 0 0.525731; -0.525731 0.850651 0; ...
0.525731 0.850651 0; 0.525731 -0.850651 0; -0.525731 -0.850651 0; ...
0 -0.525731 -0.850651; 0 0.525731 -0.850651; 0 0.525731 0.850651 ];

faces = [ 2 3 7; 2 8 3; 4 5 6; 5 4 9; 7 6 12; 6 7 11; ...
10 11 3; 11 10 4; 8 9 10; 9 8 1; 12 1 2; 1 12 5; ...
7 3 11; 2 7 12; 4 6 11; 6 5 12; 3 8 10; 8 2 1; 4 10 9; 5 9 1 ]';

% unwrap indices so subdivision can happen per-face
Px = reshape( pts( faces, 1 ), size(faces) );
Py = reshape( pts( faces, 2 ), size(faces) );
Pz = reshape( pts( faces, 3 ), size(faces) );

numsubdivs = 4;
subplot(1,numsubdivs,1);
fill3( Px, Py, Pz, [0.7 0.6 0.6])
axis equal

% simple linear subdivision matrix, splits triangle to 4
S = [ 1 0 0; 0.5 0.5 0; 0.5 0 0.5; ...
0.5 0.5 0; 0 1 0; 0 0.5 0.5; ...
0 0.5 0.5; 0 0 1; 0.5 0 0.5; ...
0.5 0.5 0; 0 0.5 0.5; 0.5 0 0.5 ];

% perform a few steps of 1-to-4 subdivision
for i=2:numsubdivs,
% subdivide
Px = S*Px; Py = S*Py; Pz = S*Pz;
Px = reshape( Px, [3 4*size(Px,2)] );
Py = reshape( Py, [3 4*size(Py,2)] );
Pz = reshape( Pz, [3 4*size(Pz,2)] );
% project back onto surface of sphere
n = 1.0 ./ sqrt(Px.*Px + Py.*Py + Pz.*Pz);
Px = Px.*n; Py = Py.*n; Pz = Pz.*n;
% draw
subplot(1,numsubdivs,i);
fill3( Px, Py, Pz, [0.7 0.6 0.6]);
axis equal
end

Jaakko kirjoitti...

Hmm, tarkemmin katsoen Metsähovi on todella epäsäännöllinen. Omituista.