Johdatusta CLIFFORD-paketin käyttöön Maplessa Heikki Orelma 4. maaliskuuta 2008 Sisältö 1 Lähtöasetelma 1 2 Perusteita 1 3 Cliordin algebrojen rakenteen tutkiminen 3 4 Cliordin tulo cmulnum-algoritmilla 5 5 Asennusohje 6 6 Tehtäviä 7 1 Lähtöasetelma Tämän lyhyehkön kirjoitelman tarkoitus johdattaa lukija Maple-ympäristössä toimivan CLIFFORD-paketin käyttöön. Paketin on kehittänyt 1990-luvulla Rafal Ablamowicz Tenneseen teknillisestä yliopistosta. Pakettia kehitetään jatkuvasti ja uusia paketin versioita ilmestyy samaan tahtiin kuin Maplen uusia versioita. Tässä esityksessä keskeisimpänä lähteenä on Ablamowiczin ja Fauserin artikkeli: Mathematics of CLIFFORD - A Maple Package for Cliord and Grassmann Algebras, lähde [1]. Kuten tiedämme, keskeisimmät tietokoneohjelmilla laskentaa suorittavan henkilön työvälineet ovat kynä ja paperi. Näin on myös nyt. Niinpä tuleekin ymmärtää, että paketti on suunniteltu vain suorittamaan mekaanisia ja tylsiä laskutoimituksia. Näin vapautuu lisää aikaa varsineiselle luovalle (matemaattiselle!?) ajattelulle. 2 Perusteita Maplessa paketti käynnistyy komennolla: [>with(cliord); 1
Yleisesti puhuttaessa, Cliordin algebra vektoriavaruudessa V määräytyy täysin bilineaarimuodosta B. Merkitään tällöin Cl(V, B). Otetaan a, b Cl(V, B) pari 1-vektoreita, joiden tulo voidaan esittään muodossa: xy = B(x, y) + x y. Tästä näemme, että tulossa ulkotulo-osuus ei riipu bilineaarimuodosta, kun Cliordin tulo itsessään riippuu bilineaarimuodosta. Tästä syystä, CLIFFORDpaketissa lähtökohdaksi on otettu Cliordin algebran alkioiden lausuminen kantavektoreiden ulkotulojen avulla. Tästä valinnasta ei liiemmin ole ongelmia. Erityisesti jos kantamme on ortonormaali, niin tunnetusti e i e j = e i e j, kun i j. Jatkossa tarkastellaan vain vektoriavaruutta V = R n, missä 1 n 9 1, bilineaarimuotoa B p,q (x, y) = p x i y i i=1 p+q i=p+1 ja näiden generoimia Cliordin algebroja Cl p,q := Cl(R n, B p,q ). Oletetaan lisäksi, että avaruuden R n kanta on ortonormaali {e 1,..., e n }. Yleisempiä tapauksia käsitellään lähteessä [1]. Lähdetään liikkeelle. Aluksi päätetään, missä Cliordin algebrassa halutaan työskennellä. Valitaan avaruuden R 3 Cliordin algebra t.s n = p + q = 3. Kanta muodostetaan komennolla: [> cbasis(3); Kanta-alkioiden välissä w-merkintä tarkoitta ulkotuloa (wedge). Tutumpaan notaatioon päästään merkitsemällä eij=eiwej. Tätä varten paketissa on valmiina makealiases-komento. Siis tehkäämme aliakset: [> eval(makealiases(3)); Nyt olemme muodostaneet kannan laskentaa varten. Määritellään Cliordin luvut a = 5 + 5e 1 + 5e 12 7e 123 ja b = 3e 13 14e 3 kuten tavallista: [> a:=5*id+5*e1+5*e12-7*e123; ja [>b:=3*e13-14*e3; Alkioiden ulkotulo a b lasketaan: [> a &w b; Toinen tapa laskea ulkotulo on käyttää wedge-komentoa. Cliordin tulo ab lasketaan komennolla: [> a &c b; 1 Tämä rajoitus on ohjelmallinen. x i y i 2
Vaihtoehtoinen komento tulon laskemiseen on cmul. Kuten lukija saattoi huomata, näytölle ilmestyi lauseke, jossa esiintyy runsaasti B i,j -symboleita. Symbolit B i,j bilineaarimuotoa esittävän matriisin B alkioita B i,j B(e i, e j ). Toistaisksi emme ole ottaneet kantaa mikä on Cliordin algebramme signatuuri. Koska kantamme on ortonormaali, niin B i,j = 0, kun i j, joten B on lävistäjä matriisi. Valitaan algebraksi Cl 2,1. Siis B 1,1 = B 2,2 = 1 ja B 3,3 = 1. Kätevimmin tämä kannattanee syöttää ohjelmaan käyttämällä (esimerkiksi) linalg-pakettia ja komentamalla: [> B:=diag(1,1,-1); Tämän jälkeen tulo voidaan laskea uudelleen. Nyt olemme päässeet alkuun paketin käytössä. Seuraavaksi listataan joitakin tärkeimpiä komentoja. Lisätietoa komennoista löytyy normaalisti helpistä. Alkion a reversio a, pääinvoluutio a ja konjugaatti a lasketaan komennoilla: [> reversion(a); [> gradeinv(a); [> conjugation(a); Alkion a inverssi a 1 lasketaan (kunhan vain on olemassa) komennolla: [> cinv(a); Alkion a k-vektoriosa [a] k saadaan komennolla vectorpart. Esimerkiksi 2-vektoriosa: [> vectorpart(a,2); Alkion a skalaariosa [a] 0 saadaan komennolla vectorpart(a,0) tai [> scalarpart(a); Olkoon x vektori ja a Cliordin luku. Vasen ja oikea kontraktio x a ja a x saadaan komennoilla [> LC(a,x); ja [> RC(a,x); 3 Cliordin algebrojen rakenteen tutkiminen CLIFFORD-paketin avulla voidaan myös helposti tutkia Cliordin algebrojen rakennetta. Tähän tarvittava komento on clidata([p,q]). Komento tulostaa listan [F, N, (semi)simple, f, S, K, M]. Keskeisin informaatio listalla on kolmen ensimmäisen kohdan antama informaatio, muut kohdat voi aluksi vapaasti sivuuttaa. Listalla: 3
1. Kolme ensimmäistä kohtaa kertovat, Cl p,q :n kanssa isomorsesta matriisialgebrasta. F {R, C, H} sen mukaan, onko matriisesityksen matriisien alkiot reaalisia, kompleksisia vai kvaternioita. Luku N kertoo matriisiesityksen matriisien dimension, esim. N = 2 kertoo, että esitys on 2 2- matriiseina. Kolmas alkio kertoo onko esitys yksinkertainen (simple) vai puoliyksinkertainen (semisimple) t.s. onko esitys muotoa Mat(F, N) vai Mat(F, N) Mat(F, N). 2. Neljännessä kohdassa tulostuu alkio f Cl p,q joka on ns. primitiivinen idempotentti. f:n avulla muodostetaan joukko S = Cl p,q f joka on Cl p,q :n minimaalinen vasen ideaali 2. 3. Viidennessä kohdassa on lista [g 1,..., g k ], jossa on sellaiset alkiot, että joukko {g 1 f,..., g k f} generoivat vasemman minimaalisen ideaalin S. 4. Kuudes kohta antaa sen Cl p,q :n osajoukon R generaattorit siten, että R = F. 5. Viimeinen kohta antaa listan [c 1,..., c r ] Cliodin lukuja. Tulostus tarkoittaa sitä, että joukko {c 1 f,..., c r f} virittää S:n, kun S ajatellaan oikeana F-modulina. Matriisiesityksen generoivia matriiseita voi etsiä komennolla matkrepr. Esimerkkinä tarkastellaan Cliordin algebraa Cl 2,0. Komennetaan [> clidata([2,0]); Komento tulostaa listan [real, 2, simple, 1/2 Id + 1/2 e1, [Id, e2], [Id], [Id, e2]. Listalta voimme päätellä seuraavaa: 1. Kolmesta ensimmäisestä kohdasta nähdään, että Cl 2,0 = Mat(2, R). 2. Neljännestä listan jäsenestä nähdään, että f = 1 2 + 1 2 e 1 on primitiivinen idempotentti ja S = Cl 2,0 ( 1 2 + 1 2 e 1) on minimaalinen vasen Cl2,0 :n ideaali. 3. Viides jäsen kertoo, että joukko {f, e 2 f} generoi S:n. 4. Kuudes jäsen kertoo, että alkion 1 Cl 2,0 virittämä joukko on isomornen R:n kanssa. 5. Seitsemäs jäsen kertoo, että S ajateltuna oikeana R-modulina on generoitu joukosta {f, e 2 f}. Matriisiesityksen generoivat matriisit saadaan komennolla matkrepr([2,0]). 2 Primitiivisitä idempotenteista, vasemmista ideaaleista ja spinoreista kiinnostuneiden kannattaa lukea esim. Louneston kirjaa: Cliord Algebras and Spinors, jossa asiaa käsitellään syvällisemmin. 4
4 Cliordin tulo cmulnum-algoritmilla Tarkastellaan tässä kappaleessa nopeasti sitä, miten ohjelma laskee Cliordin tulon. Algoritmeja tulon laskemiseksi on kaksi: rekursiivinen cmulnum-algoritmi ja ns. Rota-Steinin kombinatoriaalinen algoritmi cmulrs. Tässä esitellään ainoastaan cmulnum-algoritmi. Algorimiin cmulrs voi tutustua lähteessä [1]. Yleisesti voidaan sanoa, että cmulnum-algoritmi on käyttökelpoinen kun bilineaarimuodon matriisi on harva ja vektoriavaruuden dimensio on suuri (lähteessä [1] edellä oleva suuri tarkoittaa tilannetta: dim V 5). Puolestaan cmulrs on suunniteltu symbolista laskentaa silmällä pitäen. Varsinaisesti käyttäjän ei tarvitse tietää mitään edellä olevista algoritmeista käyttääkseen pakettia. Oletuksena käytettävän algoritmin (ja kaikkea muuta paketin toiminnasta kertovaa dataa) saa esille komentamalla: [> CLIFFORD_ENV(); cmulnum-algoritmissa kehitetään tuloa alkio kerrallaan ulkotuloiksi. Algoritmi perustuu seuraavaan ideaan. Olkoon u, v Cl p,q ja x Cl 1 p,q vektori. Tällöin (v x)u = (vx)u (v x)u = v(x u + x u) (v x)u. Tästä nähdään, että identiteetti vähentää ensimmäisen alkion v x astetta yhdellä Cliordin tulossa. Välivaiheissa tarvittavaa sievennystä hoidellaan tunnetuilla kaavoilla: x (u v) = (x u) v + u (x v) ja missä x Cl 1 p,q ja u, v, w Cl p,q. (u v) w = u (v w) Toistamalla tämä uudestaa riittävän monta kertaa, saadaan tulo esitettyä kokonaisuudessaan ulkotulojen ja kontraktioiden avulla. Jäljelle jäävät kontraktiot vektoreiden välillä lasketaan bilineaarimuodon avulla: x y = x y = B(x, y). Kun merkitään Cliordin tulo symbolilla c, yksittäinen askel rekursiossa on siis: (e a1... e ak ) c (e b1... e bm ) =(e a1... e ak 1 ) c (e ak (e b1... e bm ) + e ak e b1... e bm ) ((e a1... e ak 1 ) e ak ) c (e b1... e bm ). 5
Lasketaan seuraavaksi alkioiden e 1 e 2 ja e 3 e 4 Cliordin tulo edellä olevalla algoritmilla. Ensimmäinen askel: (e 1 e 2 ) c (e 3 e 4 ) = e 1 c ( e 2 (e 3 e 4 ) }{{} =B(e 2,e 3)Id e 4 B(e 2,e 4)Id e 3 +e 2 e 3 e 4 ) B(e 1, e 2 )Id c (e 3 e 4 ) = e 1 c (B(e 2, e 3 )e 4 B(e 2, e 4 )e 3 + e 2 e 3 e 4 ) B(e 1, e 2 )(e 3 e 4 ) = B(e 2, e 3 )e 1 c e 4 B(e 2, e 4 )e 1 c e 3 + e 1 c (e 2 e 3 e 4 ) B(e 1, e 2 )(e 3 e 4 ). Toisessa askeleessa lasketaan jäljelle jääneet tulot (edelleen samalla algoritmilla): e 1 c e 4 = B(e 1, e 4 ) + e 1 e 4 ja sekä e 1 c e 3 = B(e 1, e 3 ) + e 1 e 3 e 1 c (e 2 e 3 e 4 ) = e 1 (e 2 e 3 e 4 ) + e 1 e 2 e 3 e 4 = B(e 1, e 2 )e 3 e 4 e 2 (e 1 (e 3 e 4 )) + e 1 e 2 e 3 e 4 = B(e 1, e 2 )e 3 e 4 B(e 1, e 3 )e 2 e 4 + B(e 1, e 4 )e 2 e 3 + e 1 e 2 e 3 e 4. Joten lopputulokseksi saadaan (e 1 e 2 ) c (e 3 e 4 ) = B(e 2, e 3 )B(e 1, e 4 ) + B(e 2, e 3 )e 1 e 4 B(e 2, e 4 )B(e 1, e 3 ) B(e 2, e 4 )e 1 e 3 + B(e 1, e 2 )e 3 e 4 B(e 1, e 3 )e 2 e 4 + B(e 1, e 4 )e 2 e 3 + e 1 e 2 e 3 e 4 B(e 1, e 2 )(e 3 e 4 ). 5 Asennusohje Tässä kappaleessa kerrotaan lyhyesti CLIFFORD-paketin asentamisesta. Tekijän taitamattomuuden johdosta keskitytään vain PC-koneisiin ja Windows-ympäristöön. Ensinnä menkäämme Rafal Ablamowiczin kotisivuille: http://math.tntech.edu/rafal/index.html Täältä valitaan sopiva Maplen versio ja ladataan tarvittavat kirjastot: library_mx.zip. Oletetaan, että Maplesi on asennettu hakemistoon: C:/Maple. Tallennetaan hakemistoon C:/Maple/Cliordlib edellä olevasta kirjastosta.ind,.lib ja.hbd -tiedostot. Tämän jälkeen tehdään users - kansioon maple.ini - tiedosto (tekstieditorilla), jossa rivi: libname:="c:\\maple/cliordlib",libname: Tämän jälkeen paketin pitäisi toimia Maplessa. 6
6 Tehtäviä Tässä joitakin tehtäviä tehtäväksi CLIFFORD-paketilla. Tehtävä 1 1. Olkoon x = e 1 + 5e 2 tason vektori. Esitä vektori x vektorien a = e 1 + e 2 ja b = 15e 2 lineaarikombinaationa. 2. Olkoon x = 4e 1 + 2e 2 + 9e 3 avaruuden vektori. Esitä vektori x vektorien a = πe 1 + 2e 2 + 4e 3, b = e 1 12e 3 ja c = 16e 1 e 2 + 4e 3 lineaarikombinaationa. Tarkista kummassakin kohdassa tuloksesi. Tehtävä 2 Miten ohjelma laskee u v, u v ja u v, kun 1. u R ja v Cl p,q? 2. u Cl k p,q ja v Clm p,q 3. u Cl k p,q ja v Clm p,q ja k < m? ja k > m? Tehtävä 3 Tarkastellaan vektoreiden x = 2e 1, y = 3e 2 e 3 ja z = 7e 1 + e 2 + 11e 3 virittämää tetraedria. Tällöin sivut ovat joko edellä olevia vektoreita tai niiden erotuksia. Muodosta tahkojen suunnistetut pinta-alat B 1,..., B 4. Osoita laskemalla, että tahkojen suunnistettujen pinta-alojen summa on nolla. Tehtävä 4 Tarkastellaan tasoa e 1 e 2 ja vektoreita 1. a 1 = e 1 + 4e 2, 2. a 2 = e 1 + e 3, 3. a 3 = e 1 + e 2 + e 3. Laske vektorien kohtisuorat ja tasolla olevat komponentit. Laskemalla sopiva ulkotulo, määritä mitkä vektoreista ovat tasolla (nyt ei saa nähdä suoraa...)? Tehtävä 5 Olkoon x = e 2. Kierrä vektori x tasolla e 2 e 3 kulman π/2. Kierrä näin saatua vektoria vielä kulma π/2 tasolla e 1 e 3. Tehtävä 6 Peilaa vektori x = 13e 1 tason (e 1 + e 3 ) e 2 läpi. Kierrä peilattua vektoria kulman 2π/3 verran z-akselin ympäri. Tehtävä 7 Etsi sellainen Cliordin algebran Cl 0,3 osajoukko R, että R = H. Mikä on Cl 0,3 :n matriisiesitys? Tehtävä 8 Mitkä ovat Cliordin algebrojen Cl 1,1 ja Cl 2,1 matriisiesitykset? Tehtävä 9 Paketilla voidaan käsitellä myös pelkästään kvaternioita. Kyseiset komennot alkavat q:lla, esim. q_conjug, qdisplay, qinv, qmul, qnorm. Tutustu näiden käyttöön. Ota q 1 = 5 + 4i 7j + 9k ja q 2 = 2 + 45i 3j k ja laske q 1 q 2, (q 1 q 1 2 ) 1. Tarkista, että kvaternioille on voimassa: q 1 q 2 = q 1 q 2. Tehtävä 10 Laske e 1 c (e 2 e 4 ) ja (e 1 e 3 ) c (e 2 e 4 ) cmulnum-algoritmilla. Tarkista vastauksesi Maplella. 7
Viitteet [1] R. Ablamowich and B. Fauser, Mathematics of CLIFFORD - A Maple Package for Cliord and Grassmann Algebras, Tennessee Technological University, Department of Mathematics, Technical Report No. 2002-4 8