home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
07
/
ami003
< prev
next >
Wrap
Text File
|
1997-04-15
|
12KB
|
261 lines
-------------Uwaga! Fragmenty w >...< -- kursywa--------------
GRAWITACJA
<lead>Wiëkszoôê z nas koïczy edukacjë z doûywotniâ alergiâ na
przedmioty ôcisîe. Wzory z drzewa wziëte, mëtne dowody, totalne
ôciemnianie i duûo innych krëtactw. To, czyja to wina -- systemu
nauczania czy naszego lëku przed myôleniem -- to temat na innâ
dyskusjë. Faktem jednak jest, ûe po ukoïczeniu liceum nadal
patrzymy na niebo, nie wiedzâc, dlaczego jest niebieskie...
Chciaîbym wiëc nakîoniê do maîej gimnastyki rozumu.
<a>Bolesîaw Szczerba
<txt>Myôlë, ûe kaûdy sîyszaî co nieco o oddziaîywaniach
elementarnych i umie wymieniê przynajmniej dwa z czterech
znanych: oddziaîywanie grawitacyjne i elektromagnetyczne.
Dociekliwych informujë, ûe sâ jeszcze dwa: oddziaîywanie jâdrowe
silne (odpowiedzialne za jâdrowe oddziaîywanie miëdzy nukleonami)
i sîabe (odpowiadajâce za wszystkie rodzaje rozpadu betajâder, za
wiele rozpadów czâstek elementarnych oraz za wszystkie procesy
oddziaîywania neutrin z materiâ). Dwa ostatnie majâ bardzo krótki
zasiëg (rzëdu rozmiaru jâdra, wiëc femtometry). Dwa pierwsze
(grawitacja i elektromagnetyzm) majâ teoretycznie nieskoïczony
zasiëg. Najsilniejsze jest oddziaîywanie jâdrowe silne,
elektromagnetyczne ma 1/137 jego siîy. Oddziaîywanie sîabe jest
sîabsze o okoîo 10^-14 (dziesiëê do minus czternastej), podczas
gdy grawitacja jest skrajnie sîaba -- 10^41 (dziesiëê do
czterdziestej pierwszej) razy sîabsza od oddziaîywania silnego.
Czy ktoô z Was zdaje sobie sprawë z wielkoôci liczby 10^40? To
jeden i czterdzieôci zer. Napiszë jâ tutaj, o proszë:
10000000000000000000000000000000000000000
Podam tylko, ûe mniej wiëcej na tyle wîaônie szacuje sië liczbë
protonów we wszechôwiecie... Z wielkoôci tej liczby wynika,
dlaczego ûaden fizyk przy zdrowych zmysîach nie uwzglëdnia
oddziaîywania grawitacyjnego protonu i elektronu w modelu atomu
wodoru, w którym (z grubsza) elektron krâûy po orbitach wokóî
protonu. Po prostu ich przyciâganie grawitacyjne i zwiâzana z nim
poprawka na ruch elektronu jest bardzo maîa i absolutnie nie da
sië zmierzyê. Gîównâ (ûeby nie powiedzieê wyîâcznâ) rolë odgrywa
tu oddziaîywanie elektrostatyczne.
Najzabawniejsze w tym wszystkim jest to, ûe najpierw zostaîo
odkryte wîaônie oddziaîywanie grawitacyjne, mimo iû jest
najsîabsze ze wszystkich dotychczas znanych oddziaîywaï. Niezîy
numer, no nie? Najsîabsze, ale najwczeôniej odkryte. Dlaczego?
Ano dlatego, ûe jest powszechne, to znaczy, ûe podlegajâ mu
WSZYSTKIE bez wyjâtku ciaîa, obdarzone masâ. (A czy sâ jakieô
ciaîa pozbawione masy? Sâ, np. fotony czy neutrina.)
Oddziaîywaniu elektromagnetycznemu zaô podlegajâ tylko ciaîa
obdarzone niezerowym wypadkowym îadunkiem elektrycznym, a o
takie, bâdú co bâdú, trudniej. Siîy te nazywa sië teû siîami
kulombowskimi, od nazwiska ich odkrywcy, niejakiego Coulomba (nie
myliê z Columbem, tym od Ameryki). O oddziaîywaniach jâdrowych w
ogóle nie wspomnë, bo ich zasiëg jest tak maîy, ûe dopiero w
naszym stuleciu staîo sië moûliwe ich zauwaûenie. Moûe kiedyô
napiszë o szukaniu ich postaci za pomocâ komputera.
Na poczâtek uwaga organizacyjna. Poniûszy monolog bëdzie dotyczyî
zarówno oddziaîywania grawitacyjnego, jak i elektrostatycznego.
Chociaû to ostatnie jest wymienionâ wczeôniej liczbë razy
silniejsze od grawitacji, to jednak opis matematyczny jest ten
sam (no, prawie). Róûnica polega w zasadzie tylko na tym, ûe
îadunki mogâ mieê dwie formy (dodatniâ i ujemnâ), masy zaô nie.
<sr>Trochë teorii
<txt>Dwa ciaîa materialne przyciâgajâ sië wzajemnie siîâ tym
wiëkszâ, im wiëksze sâ ich masy (ôciôlej -- iloczyn mas), i tym
mniejszâ, im wiëksza odlegîoôê dzieli ich ôrodki (ôciôlej, im
wiëkszy jest kwadrat ich odlegîoôci). Wartoôê tej siîy wynosi:
<l> (1) F=GMm/r²
<txt>gdzie >M< i >m< to masy owych ciaî, >r< odlegîoôê ich
ôrodków, a >G< to tzw. staîa grawitacji.
Przesuniëcie punktu materialnego w polu grawitacyjnym, czy
îadunku punktowego w polu elektrostatycznym, zwiâzane jest z
wykonaniem pracy (dodatniej lub ujemnej) przez siîy pola.
Wartoôê wykonanej przez pole grawitacyjne pracy wynosi:
<l> (2) W=m[U(r0)-U(r)]
<txt>gdzie >m< -- masa przesuwanego ciaîa, >U(r0)< -- potencjaî w
punkcie wyjôciowym, >U(r)< -- potencjaî w punkcie koïcowym ruchu.
Jak widaê, praca nie zaleûy od wartoôci potencjaîów, a tylko od
ich róûnicy. Sam potencjaî wynosi:
<l> (3) U(r)=-GM/r
<txt>gdzie >M< to masa obiektu, traktowanego jako úródîo pola (np.
Sîoïca, przy rozwaûaniu ruchu Ziemi wokóî Sîoïca, lub Ziemi, przy
rozwaûaniu ruchu Ksiëûyca). Wynika stâd, ûe:
<l> (4) W=GMm(1/r - 1/r0)
<txt>Praca jest równa ZERO dla r=r0, to znaczy, gdy zatoczymy
pëtelkë (o dowolnym ksztaîcie) i wrócimy do punktu startu.
Konsekwencjâ tego faktu jest istnienie tzw. linii
ekwipotencjalnych, czyli krzywych o staîym potencjale. Poruszajâc
sië po takich krzywych, nie wykonujemy ÛADNEJ pracy. Z grubsza
biorâc, np. satelity poruszajâ sië wîaônie po takich liniach
ekwipotencjalnych i dlatego nie wymagajâ ciâgîego napëdzania
odrzutowego, poniewaû nie muszâ wykonywaê pracy przeciw siîom
pola. Linie ekwipotencjalne w wypadku jednej masy (planety),
dostatecznie oddalonej od innych mas, sâ okrëgami. Jednak w
wypadku wielu mas przyjmujâ bardzo skomplikowane i ciekawe
ksztaîty. Do ich wyznaczania moûna wykorzystaê komputer, i to
wîaônie jest celem tego artykuîu.
Przy zaîoûeniu, ûe mamy do czynienia z obiektami o staîych
masach, problem policzenia pracy sprowadza sië do wyznaczenia
potencjaîów we wszystkich interesujâcych nas punktach. Wtedy
wystarczy tylko wziâê dwa punkty, odjâê od siebie ich potencjaîy,
pomnoûyê przez masë przesuwanego obiektu i juû mamy pracë
potrzebnâ do jego przemieszczenia. W wypadku wiëkszej liczby "mas
úródîowych" potencjaîy w danym punkcie przestrzeni, pochodzâce od
úródeî, po prostu sië sumujâ. Mówimy, ûe potencjaî grawitacyjny
jest addytywny, czyli:
<l> (5) V(r)=V(r1)+V(r2)+V(r3)+...V(rn)
<sr>No i co z tego?
<txt>Wyznaczenie rozkîadu potencjaîu wokóî mas/îadunków
punktowych to w sam raz robota dla komputera. Moûemy go
wykorzystaê, aby dokonaî za nas ûmudnych obliczeï, i w ten sposób
otrzymaê bardzo îadne obrazki (patrz rysunki 1. i 2.). Spójrzmy
na listing przedstawionego programu. Tak jak w poprzednim
artykule ("Psia krzywa") zakîadam, ûe Czytelnicy majâ podstawowâ
znajomoôê programowania (pëtle, instrukcje warunkowe itp.),
podstawowâ znajomoôê C (jeûeli Czytelnik nie chce wklepywaê
bezmyôlnie listingów) -- wystarczâ pierwsze rozdziaîy Kernighana
i Ritchie'ego (dla nie wtajemniczonych dodam, ûe to elementarz i
jednoczeônie biblia jëzyka C, napisana przez... jego autorów).
Ponadto trzeba mieê oczywiôcie dostëp do jakiegoô kompilatora.
Najlepiej, jakby to byî SAS/C 6.5, ale w zasadzie nie powinno byê
specjalnych trudnoôci przy innych kompilatorach (patrz poprzedni
artykuî).
Wróêmy do programu. Zanosi sië na spore obliczenia. Ale cóû to
dla nas, brutali z A1200 i 4 MB Fast RAM-u i koprocesorem. Brane
sâ po kolei wszystkie punkty ekranu (x, y) i w kaûdym z nich
obliczany jest potencjaî, bëdâcy sumâ potencjaîów od wszystkich
mas (pëtelka od i=1 do liczby obiektów pomniejszonej o jeden) i w
koïcu na ekranie stawiany jest punkt o kolorze proporcjonalnym do
wartoôci potencjaîu. Trzeba jednak uwaûaê, bo potencjaî powinien
mieê wartoôê nieskoïczonâ w centrum obiektu (ze wzglëdu na
dzielenie przez zerowy promieï). Jeôli tego nie obejdziemy, to
moûemy oglâdaê guru 80000005 (dzielenie przez zero). Jak to
zrobiê -- pokazaîem na listingu. To, co powstanie, to rozkîad
potencjaîu, pochodzâcego od wszystkich zadanych punktów. Niejako
przez przypadek widaê linie ekwipotencjalne -- sâ to linie
oddzielajâce od siebie obszary o innym kolorze (czyli
potencjale). W rzeczywistoôci linie te sâ "gëôciej" upakowane
(mówi sië o tzw. rozkîadzie ciâgîym potencjaîu), jednak do
dyspozycji mam tu tylko 16 barw (co wymaga rozkîadu dyskretnego).
Uûycie 256 kolorów daîoby juû lepszy rezultat (i daje), a rysunek
w trybie HAM8, czy na karcie grafiki 24-bitowej, to prawie ideaî.
Jak znajdë chwilë czasu, to poprawië bîâd w moim programie, który
to robi, ale sië jeszcze wiesza, i podeôlë ten program do
redakcji. Moûe wydrukujâ obrazki. Tam w ogóle nie widaê linii
ekwipotencjalnych (tak powinno byê, jest ich przecieû
nieskoïczenie wiele, nieskoïczenie blisko siebie), caîy rysunek
ma formë pîynnego przejôcia kolorów.
Przy okazji: nie starczyîo miejsca na przedstawienie procedury,
zgrywajâcej obrazek na dysk. Jeôli zatem chcesz nagraê sobie
wygenerowany obrazek, musisz sië posîuûyê specjalnym
programikiem, który umoûliwia wycinanie fragmentów ekranu. Na
szczëôcie nie ma problemu z jego zdobyciem. Jest ich
zatrzësienie, dla przykîadu podam tylko niektóre: GrabIFF,
QuickGrab, odpowiedni moduî w MagicCX, ScreenSaver, ScreenX i
kupa innych. Zdecydowanie polecam pierwsze trzy. Sâ to programiki
dostëpne bez trudu w róûnych bibliotekach public domain i
shareware, na gieîdzie (wolno je LEGALNIE kopiowaê), w Aminecie,
u lepiej zorientowanych kolegów itp. W zasadzie posiadanie
takiego programiku w systemie naleûy do dobrego tonu. Bez niego,
jak bez rëki. A i wstyd przed szklarzami (uûytkownicy Windows).
Moûna zrobiê jeszcze inaczej. Program sam losuje wspóîrzëdne
punktów. Nic nie stoi na przeszkodzie, aby punkty podawaî
uûytkownik lub by byîy czytane z pliku (czyli ogólnie ze
standardowego wejôcia -- zaîatwia to funkcja scanf()). Moûna
sobie teraz zaûyczyê, aby po kaûdym wygenerowanym obrazku program
poczekaî, aû sobie zgramy obrazek na dysk, po czym generowaî
nastëpny, z przesuniëtymi do innych pozycji punktami (odczytanymi
z pliku lub znów podanymi przez uûytkownika). Nagrane obrazki
moûemy poskîadaê, np. za pomocâ Deluxe Painta -- otrzymamy w ten
sposób animacjë, przedstawiajâcâ, jak wyglâda potencjaî wokóî
poruszajâcych sië punktów.
Moûna zrobiê jeszcze inaczej. Nie pytaê uûytkownika o
wspóîrzëdne, tylko je wylosowaê (tak jak ja), a przesuwaê kaûdy z
nich o NIEWIELKIE, ale wylosowane, odlegîoôci w róûne strony. Da
nam to bardzo ciekawy i îadny efekt -- coô w stylu ruchów Browna.
Jak sië zabieraîem do pisania mojego programu, to nawet nie
myôlaîem, ûe to zrobi na mnie takie wraûenie (no cóû, program
rzadko mile zaskakuje swojego autora).
Nie przedstawiam tych cudownoôci tutaj, bo mi to naczelny
odrzuci. Cóû, gazeta nie jest z gumy... Jak znajdâ sië
zainteresowani, to w którymô artykule mogë dokîadnie opisaê, jak
to zrobiê, tzn. podam przede wszystkim, jak samemu zapisaê
obrazek, bez uciekania sië do pomocy GrabIFF-a czy innego, oraz
jak dokîadnie losowaê punkty, pytaê uûytkownika o ich wspóîrzëdne
lub czytaê je z dysku. Zainteresowane nerwusy mogâ mnie îapaê pod
adresem:
<l>email: zfjmgr@usctoux1.cto.us.edu.pl
<txt>Przedstawiam jedynie wymaganâ przez programik zawartoôê
pliku SCOptions:
<l> DATA=FAR
MATH=STANDARD
ERRORREXX
OPTIMIZE
LINK
OPTIMIZERTIME
<txt>Jeûeli chcesz zoptymalizowaê program dla danego typu
procesora, dodaj jeszcze linië, np.:
<l>CPU=68020
<txt>lub oczywiôcie inny, z zakresu 68010 -- 68040 (patrz poprzedni
artykuî -- "Psia krzywa").
<sr>Jak to dziaîa?
<txt>Program uruchamiamy z Workbencha lub Shella, nie podajâc
ûadnych argumentów. Zostaniemy poproszeni (jak nietrudno sië
domyôliê, przeglâdajâc kod úródîowy) o podanie liczby obiektów
oraz okreôlenie jasnoôci obrazka. Tym drugim (wprowadzonym jako
liczba rzeczywista Z KROPKÂ zamiast przecinka) moûna regulowaê
jasnoôê obrazka, bo przy wiëkszej liczbie punktów (powiedzmy 50)
bëdzie za jasny. Im wiëcej obiektów, tym mniejszâ radzë
dawaê wartoôê. Przy N równym np. 50 polecam jasnoôê w granicach
od 0,6 do 0,8. Potem pozostaje tylko czekaê -- tym dîuûej, im
wiëcej obiektów. Zdajë sobie sprawë, ûe program jest powolny, a
przedstawiony algorytm moûna by z pewnoôciâ rozwiâzaê lepiej pod
wzglëdem czasowym (chodzi o czas procesora, nie mój, niestety),
ale po pierwsze nie ma miejsca, po drugie program powstaî w ciâgu
paru godzin, z czego wiëkszoôê spëdziîem na wyszukiwaniu bîëdów w
wywoîywaniu funkcji bibliotecznych oraz uûeraniu sië z Intuition,
po trzecie bardziej sobie cenië prostotë rozwiâzania od jego
szybkoôci (w pewnej klasie cenowej oczywiôcie -- a czas to
pieniâdz).
I to juû w zasadzie koniec. A moûe program przyda sië na
lekcji astronomii?