A pivotálás hasznáról és hatékony módjáról Adott M mátrixra pivotálás alatt a következ½ot értjük: Kijelölünk a mátrixban egy nemnulla elemet, melynek neve pivotelem, aztán az egész sort leosztjuk a pivotelemmel. Ezután a pivotelem fölött és alatt nullákat készítünk úgy, hogy a sorokból a pivotelem sorának annyiszorosát vonjuk le, hogy éppen nulla jöjjön ki. A pivotálás tehát nem más, mint a lineáris algebrából jól ismert Gauss Jordán elimináció részeként egy oszlop egységvektorrá alakítása. Viszonylag könnyen igazolható, hogy a pivotálás nem változtatja meg az M mátrix rangját, s½ot, ha valamely oszlop a többib½ol linárisan kombinálható a pivotálás el½ott, akkor a pivotálás után is, s½ot ugyanazok az együtthatók megfelelnek. A pivotálás révén egy négyzetes almátrix determinánsa, mely aldetermináns (vagy az aldetermináns sorainak a teljes M mátrixra való kiszélesítése) tartalmazza a pivotelemet, úgy változik, hogy a régi determinánst a pivotelemmel elosztva kapjuk az újat. Ha a pivotelem egy aldetermináns fölött vagy alatt van, akkor az aldetermináns értéke a pivotálás során nulla lesz. Ezek a tulajdonságok könny½uvé teszik egy vagy nagyobb méret½u mátrix determinánsának kiszámítását is. Mindezeket példákon mutatjuk be. A következ½o pivotálásra kejelölt elemeket zárójelekkel mutatjuk meg: Példa. det = 9 hiszen () 8 8 és az utóbbi mátrix determinánsa a középs½o oszlop szerint kifejtve: ( ) = 9 (példa vége). hiszen Példa. det = 8 () () és itt a középs½o -es determináns: =, és ezt a két pivotelemmel, azaz -vel kell szorozni (példa vége).
Pivotálás segítségével megoldhatunk egyenletrendszereket is. Példa. 9z z = 9; z z z z = ; 8z z z = megoldása lehet ez: z tetsz½oleges, z = hiszen pivotálások így alakulhatnak: 9 9 () 8 9 () 9 9z 9, z = z, z = z, 9 9 8 () 9 9 (példa vége) Példa. Ennek az egyenletrendszernek nincs megoldása: = = = = hiszen a pivotálások így alakulhatnak: () () () 9 és itt a harmadik sor lehetetlenséget mutat, nevezetesen azt, hogy = (példa vége). Ha adott egy A mátrix m sorral és adott a mátrixnak egy m m-es invertálható B almátrixa, akkor pivotálással kiszámíthatjuk a B A szorzatmátrixot is. Felírjuk az A mátrixot és addig pivotáljuk, amíg a B mátrix helyén meg nem kapunk egy egységmátrixot. Példa. A következ½o A és B mátrixokra kiszámítandó B A: A = B =
A pivotálások sorozata ez lehet: () () ( ) Itt az utolsó mátrix a végeredmény, azaz B A (példa vége). A pivotálás arra is felhasználható, hogy egy lineáris programozási feladathoz lexikogra kusan pozitív kiindulási szimplex tablót állítsunk el½o, vagy legalábbis megpróbáljuk. Adva van egy Ax = b; x ; c x! max alakú lineáris programozási feladat, és ehhez egy olyan mátrixot, azaz az alábbiakban de niált alakú szimplex tablót akarunk készíteni, melynek ha az A mátrix m sorú és n oszlopú összesen m sora és n oszlopa van. A tabló összetétele az alábbi (ahol B és c B magyarázata a tabló de níciója után következik, a vízszintes és függ½oleges vonalak pedig nem részei a mátrixnak, csak a könnyebb tájékozódást szolgálják): B b j B A c B B b j c B B A c Itt B az A mátrix valamely m m méret½u invertálható almátrixa, a c B vektor pedig ugyanolyan indexekre való lesz½ukítése a c vektornak, mely oszlopindexekre a B mátrix lesz½ukíti az A mátrixot. De a feladatunk nemcsak az lesz, hogy egy akármilyen szimplex tablót készítsünk, hanem az is, hogy a szimplex tabló lexikogra kusan pozitív legyen, ami azt jelenti, hogy a fels½o m sor (azaz a vízszintes vonal feletti rész) mindegyike lexikogra kusan pozitív legyen, más szóval balról jobbra haladva a legels½o nullától különböz½o elem a sorban pozitív legyen. Megmutatjuk, hogyan lehet egy ilyen szimplex tablót felépíteni. Az építéshez m darab pivotálásra lesz szükségünk egy m sorú, n oszlopú mátrixban. (El½ozetesen felhívjuk a gyelmet arra, hogy az Ax = b egyenletrendszerben a sorok sorrendje nem bír jelent½oséggel.) Kiindulásul a b j A j c séma szerint rendezzük el az adatokat. Ha véletlenül ez a tablókezdemény nem lenne lexikogra kusan pozitív, akkor a problémás sorokat minusz eggyel szorozva a lexikogra kus pozitivitás elérhet½o. Ezután az A mátrix területén összesen m darabszor fogunk pivotálni, de mindannyiszor különböz½o sorban és
oszlopban. Az utolsó n oszlopban tulajdonképpen tetsz½oleges m darab oszloppal foglalkozhatunk, és azokkal is tetsz½oleges sorrenben, de arra próbáljunk vigyázni, hogy a táblázat lexikogra kus pozitivitása el ne romoljon, és ebb½ol a célból csak pozitív pivotelemekkel dolgozzunk. Garancia nincs rá, hogy a lexikogra kus pozitivitást végig meg tudjuk ½orizni. De azért érdemes megpróbálni, mert valamennyi esélyünk azért van. Ha sikerül mind az m darab pivotálással meg½oriznünk a lexikogra kus pozitivitást, akkor sikerül felépítenünk a kívánt szimplex tablót, esetleg a fels½o m darab sor sorrendjét kell megváltoztatni. A lexikogra kus pozitivitás biztos meg½orzése ha lehetséges egyáltalán az úgynevezett kétfázisú lexikogra kus szimplex módszer els½o fázisával történik. De annak pontos de nícióját is mell½ozzük. Példa. Az alábbi adatokra kíséreljük meg egy lexikogra kusan pozitv szimplex tabló felállítását: A = c = A kiindulási tablókezdemény ez lesz (ami szerencsénkre lexikogra kusan pozitív): j = j () = j = Találomra a középs½o sor középs½o -esével kezdem a pivotálást, és nem is lesz semmi baj, mert a lexikogra kus pozitivitás megmarad: b = j 9 = = () j = j 8 9= A második pivotálást már kötelez½o legfels½o sorban végezni. A lexikogra kus pozitivitás meg½orzése egyrészt azt kívánja, hogy a legfels½o sor lexikogra kusan pozitív maradjon. Ezért a pivotelem csak pozitív lehet. A fels½o sorban az elemet azonban ki kell zárni, mert ezt választva a második sor lexikogra kusan negatívvá válna. Tehát a fels½o sorban a = és a elemek jönnek szóba. Találomra a elemet jelöltem ki a második pivotálásra. j = =9 = j = =9 = 9= j = 8= = = A pivotelemek oszlopai kijelölik az eredeti A mátrixban a B mátrixot: B =
(példa vége) Tekintettel arra, hogy a B A szorzatban a B helyén egységmátrixnak kell lenni, ezért tulajdonképpen a fenti szimplex tablóban a fels½o két sort fel kellene cserélni. De a csere mégsem szükséges, hiszen a lexikogra kus szimplex algoritmus a fenti, a vízszintes vonal fölött összekevert sorú tablóval is tud dolgozni. A lexikogra kus szimplex algoritmus egy lexikogra kusan pozitív szimplex tablóról indulva pivotálások sorozatát végzi. A pivotelemet mindig a vízszintes vonal fölötti olyan pozitív számok közül választja, melyek alatt a legalsó sorban negatív szám áll. De arra is vigyázni kell, hogy a pivotálás után is megmaradjon a lexikogra kus pozitivitás. Ha még mindig több lehet½oség van a pivotelem kiválasztására, akkor nem kötelez½o, de javallott úgy kiválasztani a pivotelemet, hogy a legalsó sor lexikogra kusan a lehet½o legnagyobb legyen (azaz többek közt balról jobbra haladva az új legalsó sor a lehet½o leghamarabb legyen pozitív, ott a lehet½o legnagyobb legyen). Példa. Végezzük el a fenti lineáris programozási feladaton a lexikogra kus szimplex algoritmust. j = (=9) = j = =9 (=) 9= j = 8= = = A zárójelekkel megjelölt két elem bármelyike lehet pivotelem. De miel½ott elvégezzük valamelyikkel a pivotálást, nézzük meg, hogy a tabló bal alsó elemét mennyivel kell csökkentenünk a két pivotálásnál: 9 = = Mindkét pivotelem-jelöltnél a megegyez½o sorban és oszlopban a legbaloldalabbik illetve legalsó számok szorzatát még megszoroztuk a pivotelem-jelölt reciprokával. A legkisebbik számot választjuk, tehát azt, amelyik negatívabb. Itt most = 8, tehát a 9 lesz a kiválasztandó pivotelem. A pivotálás révén így alakul a tabló, melyben azonnal látszik a következ½o pivotelem is: 9= j = = = 9= 8= j 9= = (=) = = j = = = = Újabb pivotálással ezt kapjuk: 9 j 9 : j : : 8:8 j : : :8 8:
Ebb½ol viszont azt a következtetést lehet levonni, hogy tetsz½oleges számra az eredeti feladatnak megoldása a következ½o: x =, x =, x =, x = 9, x = : :, x =. Erre az x-re... (folyt köv.)