Ha van egy nulla sorban a mátrixban, az összes sor alatta, mint nulla; informatika,

Megoldást találni egy lineáris egyenletrendszer Gauss

1. ha van egy nulla sorban a mátrixban, az összes sor alatta, mint nulla;

2. Hagyja aij nem egyenlő 0 - az első nulla elem egy sorban a i index, azaz a AIL elemek = 0 l és L = i





Speed ​​mátrix a következőképpen néz ki:

Itt az első sötét négyzetek jelölt nem nulla mátrix elemeit sorok. Fehér ábrázolt nulla elemek, szürke - tetszőleges elemek.

Gauss algoritmus elemi mátrix kétféle.

· Átalakítása az első fajta: két mátrix sorai a felcseréljük, míg a jelek minden eleme egyik vonal fordított.

· Átalakítása a második fajta: egyéb sorral egészül ki az ugyanabban a sorban a mátrix szorozva egy tetszőleges szám.

Elemi transzformációk megőrzése meghatározó és a rangot a mátrix, és megoldások sokaságát egy lineáris rendszer. Gauss algoritmust eredményezi tetszőleges mátrixot elemi transzformációk a lépcső formájában. A lépcsős négyzetes mátrix determinánsát egyenlő a termék a átlós elemek, és a rang - száma nem nulla vonalak (rang definíció szerint dimenzió a lineáris span mátrix sorok).

Gauss a matematikai változata a következő:

1. látszó első nemnulla eleme az első oszlopban. Ha minden eleme az első oszlopban nulla, akkor menj a második oszlop, és így tovább. Ha talál egy nem nulla eleme a k-adik sorban, majd a segítségével elemi transzformációk az első fajta vagyunk felcserélni az első és a k-adik sor, biztosítva, hogy az első elem az első sor nem nulla;

2. elemi átalakulás a második fajta, nulla végre minden elemét az első oszlop a második elem. Ebből a célból a sor számát k kivonja az első sorban szorozni AK1 / A11.

3 lépés, hogy a második oszlop (j-edik, vagy ha az összes elemet az első oszlop nulla), és a további fontolóra csak egy része a mátrix, kezdve a második sor vagy alacsonyabb. Ismét, ismételje meg 1) és 2), mindaddig, amíg amíg nem csökkenti a mátrix Echelon formában.

Programozási változat a Gauss három különbség a matematikai:

1. indexek a sorok és oszlopok a mátrix a semmiből, egy helyett;

2. ahhoz, hogy megtalálják a nem nulla elemet az oszlop. A programozás, minden művelet valós számok készülnek kb, ezért feltételezhetjük, hogy pontosan egyenlő a valós számok nem történik meg. Néhány fordító még kiadni figyelmeztetések az egyes működési vizsgálatot az egyenlőség a valós számok. Ezért ahelyett, hogy ellenőrzi a száma, eltűnő aij össze kell vetni annak abszolút értéke ij # 8204; egy nagyon kis számú # 949; (Például, # 949; = 0,00000001). Ha ij # 8204 =<ε, то следует считать элемент aij нулевым;

3. nullázás után elemek j-edik oszlop, a vonal i + 1, van, hogy k-dik sora, ahol k> i, add az i-edik sorban szorozni r = -akj / aij:

Ez az áramkör működik rendesen csak akkor, ha az r abszolút értéke nem haladja meg az egységet. Ellenkező esetben a kerekítési hibákat meg kell szorozni a magas aránya, és így exponenciálisan nő. A matematikusok hívja ezt a jelenséget a bizonytalanság a számítási módszert. Ha a számítási rendszer instabil, majd a kapott eredményeket vele nem állnak kapcsolatban az eredeti probléma. Ebben az esetben, az áramkör stabil, ha az arány r = -akj / aij nem haladja meg az egy egységet. Ehhez az egyenlőtlenség Ezért, ha keres megoldása eleme a j-edik oszlop nem szükséges, hogy megtalálják az első álló nem nulla elemet, és a maximális abszolút értékek. Ha nem haladja meg a # 949;, akkor feltételezzük, hogy valamennyi elem nulla oszlop; egyébként változtatni a néha üzembe azt az oszlop tetején, majd nullázza oszlopon elemi transzformációk a második fajta.

Az alapötlet az eljárás Gauss-ólom rendszer mátrix átlós formában, azaz az összes elemet a fő átlójának nullák. Ahhoz, hogy a mátrix ebben a formában, úgy döntünk, a felső sorban a mátrix, és vonja ki azt az összes többi sort, megszorozva az egyes sorok egy bizonyos tényező, hogy a bal szélső oszlop alatt a fő átló nullákkal töltjük fel. Vonal levonja nevezett faktort az aktuális sor. A választás első aktuális sort a felső, majd az alsó és alsó, el fogjuk érni, hogy az összes elem alatt a fő átló nullával egyenlő. Ez a rész a módszer-feldolgozó vonalak az aktuális sor és a párhu-.

A módszer lényege az egymást követő megszüntetése ismeretlenek. Tekintsük a lineáris egyenletrendszer:

Osszuk mindkét oldalán az 1. egyenletet a11 # 61625; 0, akkor: 1) szorozza A21 és vonjuk ki a második egyenletből 2) szorozzuk A31 és vonjuk a harmadik egyenlet, stb Kapjuk. ahol d1j = a1j / A11. J = 2, 3, ..., n + 1. dij = aij - ai1 d1j i = 2, 3, .... N; J = 2, 3, .... n + 1. Ezután ismételjük meg a folyamatot a második egyenlet, akkor - a harmadik, stb

Példa. Oldja meg a lineáris egyenletrendszer Gauss.

Mi alkotják a kibővített mátrixát a rendszert.

Így az eredeti rendszer lehet leírni:

,

Példa. Oldja meg a rendszer a Gauss módszer.

Mi alkotják a kibővített mátrixát a rendszert.

Így az eredeti rendszer lehet leírni:

.

amelynek hozama: Z = 3; y = 2; x = 1.

Munka fájlokat.

C ++ standard könyvtár tartalmaz egy sor olyan funkcióval rendelkezik fájlokat. Ezek a funkciók leírását a szabványos ANSI. Vegye figyelembe, hogy a fájl input-output nem része a C +, és az ANSI-funkció - nem csak az input-output eszközök. Például a Unix operációs rendszer egyre népszerűbb egy sor különböző input-output funkciókat lehet használni nem csak a dolgozó a fájlokat, hanem a hálózati megosztás. osztálykönyvtárak gyakran használják a C ++ az IO. Azonban a funkciók ANSI-könyvtárak által támogatott összes C ++ - fordító, és mivel ők ezeket használó programokat, könnyen átvihetők az egyik platformról a másikra. Prototípusok input-output funkciók és használják az adattípusok a szabványban leírt header fájlt „stdio.h.







A fájl megnyitása: function fopen.

Ahhoz, hogy hozzáférjen a fájl használatban adattípus FILE. Ez a szerkezeti típus, akinek neve van megadva a „stdio.h” typedef nyilatkozatot a standard fejléc. A programozónak nem kell tudni, hogyan kell megépíteni a szerkezet a fájl típusát a készülék lehet rendszer-függő, így nyilvánvalóan utal a fájl szerkezetét területeken tilos annak érdekében, hogy a hordozhatóság. Adat típus „a fájl szerkezetét mutató használják a programok, mint egy fekete doboz: egy függvény egy fájl megnyitásához adja vissza ezt a mutatót, ha sikeres, a jövőben minden file funkciók használta, hogy a fájl eléréséhez.

Itt ösvény - a fájl elérési útját (például fájlnév vagy abszolút elérési út), üzemmód - file módban. A mód karakterlánc tartalmazhat több betűt. „R” betű (a szó olvasható) azt jelenti, hogy a fájl megnyitásakor olvasásra (fájl nem létezik). „W” betű (egy szó) megírt írását jelenti, hogy egy fájlt, a régi fájl elveszett, és abban az esetben a fájl nem létezik akkor létrejön. Az „a” betű (hozzáfűzése a szó) olyan bejegyzés egy meglévő fájlt, vagy hozzon létre egy új fájlt, ha a fájl nem létezik.

Egyes operációs rendszerek, vannak különbségek a munka szöveges és bináris fájlok (ilyen rendszerekben MS DOS és MS Windows, Unix megkülönböztetése szöveges és bináris fájlok nincsenek jelen). Az ilyen rendszerekben, ha megnyit egy bináris fájlt a üzemmódba kell egészíteni a „B” betű (a szó bináris), és ha megnyit egy szöveges fájlt - a „t” betű (a szó a szöveget). Ezen kívül, ha nyitás végezhet az olvasási művelet és írni; használja a + (plusz). Az, hogy a betűk a módban vonal a következő: először van egy, a betűk „R”, „w”, „a”, majd a véletlen sorrendben tud járni szimbólumokat „b”, „t”, „+”. A betűk „b” és „t” lehet használni, még akkor is, ha az operációs rendszer között nincs különbség a bináris és szöveges fájlokat, amely esetben egyszerűen figyelmen kívül hagyja.

3.Opisanie algoritmust megoldására lineáris rendszerek Gauss

Készítsen programot megoldására rendszerek lineáris egyenletek mátrix az n rend Gauss módszerrel C ++ nyelven.

Algoritmus megoldani egy lineáris egyenletrendszer a Gauss módszer. Az algoritmus végrehajtása a C ++.

Tegyük fel, hogy egy olyan rendszert N lineáris egyenletek

ahol xi - ismeretlen, aij - az együtthatók az ismeretlenek, bi - állandó kifejezések az egyenleteket, i, j értékeket vegyük 1-től N

A lényege a Gauss módszer abban áll, hogy segítségével bizonyos műveletek az eredeti rendszer egyenletek lehet csökkenteni egy egyszerűbb rendszert. Ez az egyszerű rendszer egy háromszög alakú:

A különlegessége ennek a rendszer - a vonalak száma i, minden együttható aij J

Ha tudtuk, hogy mi az egyenletrendszer egy ilyen háromszög alakú, akkor az egyenlet megoldásához egyszerűen. Az utolsó egyenlet találunk xN = bn / Ann. Aztán helyettesíti be az utolsó előtti egyenlet és megtudja, hogy xn-1. Helyettesítsük mind a megoldások találhatók a következő, hogy a végén az egyenlet és megtalálni XN-2. És így tovább, amíg meg nem találjuk x1. hogy milyen döntés véget ér. Ez az eljárás az úgynevezett fordított sweep.

Most pedig arra a kérdésre, hogyan lehet biztosítani, hogy a rendszer vált háromszög.

Tudjuk, hogy a lineáris algebra, ha egy bizonyos vonalat a rendszer, hogy adjunk bármely lineáris kombinációja bármely más vonalak a rendszer, a rendszer nem változik a döntést. A lineáris kombinációja sorok értjük összege vonalak, amelyek mindegyike egy szám szorzataként (elvileg bármilyen).

Szükséges, hogy a második sor, hogy szerezzen egy egyenlet, amelyben nincs távon x1. Tegyük hozzá, hogy ezt a sort az első sor szorozni néhány szám M.

Ahhoz, hogy tagja a x1 értéke nulla, akkor szükséges, hogy M = - a21 / a11. A művelet végrehajtása a kapott egyenletet írunk helyett folytassa a második és a harmadik egyenlet. Ehhez még hozzá az első egyenletben szorozva M = - A31 / A11 és kap egy nulla helyett egy tag x1. Ezt a műveletet kell elvégezni minden más egyenletek. Ennek eredményeképpen kapunk egy ilyen rendszer:

Ezt követően, akkor megszabadulni a tagok x2 a harmadik, negyedik, N-edik egyenlet. Ehhez a következő egyenletnek j-edik szám hozzáadásához a második egyenletet szorozva M = - AJ2 / A22. A művelet végrehajtása az összes többi egyenletet, megkapjuk a rendszer, amelyben nincsenek tagjai az egyenletek x2 szám nagyobb, mint 2.

És így tovább. Ezt egy harmadik tagja, a negyedik. mindaddig, amíg a futás az egyenletből, megkapjuk eredményeként a rendszer háromszög típusú.

Az algoritmus leírása a pszeudo-kód (parancsokat szövege oroszul).

PROCESS 0 (fő folyamat)

1.Razoslat folyamatok számát a jelenlegi vonalak.

(Vagy nem minden folyamat, ha a folyamatok több mint sorok).

2.TSIKL a sorban (a választás a jelenlegi vonal)

1.Razoslat folyamatok az aktuális sor.

(Ha több, mint az eljárások száma kezelésére engedélyezte sorok (sorok az aktuális sor alatt), akkor küldje el az aktuális vonal nem az összes folyamatot, hanem csak azokra, akik részt vesznek a gépsorokat.)

2.Razoslat irányuló valamennyi eljárást feldolgozó vonal (küldő sorban, majd sorban a mátrixban). Megoszlik az alábbi sorokat a jelenlegi folyamatokat. Tehát részesedése a ciklus egy sor forgalmazunk minden folyamatot, amíg nincs vége vonal Process 1..n megy ciklikusan.

3.Razoslat minden feldolgozza a sorok száma a nekik küldött feldolgozásra.

4.Prinyat folyamatok 1..n feldolgozott sorok azokat a mátrixba. (Elfogadás vonal és a sor számát a mátrixban)

5.Vybrat következő az aktuális sor - egy új lépés a ciklus.

3. Számítsuk döntést a diagonális mátrix rendszerben.

4.Vydat eredményt.

1.Prinimaem száma a jelenlegi vonalak.

2.TSIKL KEZELÉS kapott az VONALAK

1.Prinimaem üzenetet a sorok száma a feldolgozásra

2. Ha a sorok száma feldolgozásra> 0, akkor:

1.Prinimaem üzenetet az aktuális sort

Gépsorokat 2.TSIKL

1.Prinimaem üzenet egy sort feldolgozásra.

(Még több sorszám a mátrixban).

2.Obrabatyvaem kapott karakterlánc

3.Posylaem fő folyamat teljesítményét. Minden egyes sor, küld egy húr, és a sor száma.

4.Idom a következő lépésben ciklus gépsorokat.

4.Iskhodny szöveges programot

Készítsen programot megoldására rendszerek lineáris egyenletek a négyzetes mátrix a rend n nem degenerált Gauss módszerrel C ++ nyelven.

// megoldás a lineáris egyenletrendszer Gauss.

Ennek eredményeként a kurzus projekt két osztálya funkciók megoldására egyszerű lineáris algebra problémák kerültek kifejlesztésre. Ezek száma funkciók viszonylag kicsi, de könnyen hozzá ezeknél fejlettebb funkciók, beépített alapján már rendelkezésre állnak. Osztályok lehetővé teszik, hogy működjenek együtt mátrixok és vektorok, mely elemeket lehet bármilyen típusú, de a gyakorlatban a leggyakrabban használt típusú és milyen típusú lebegőpontos számok. Osztályok C ++ nyelven íródott, de könnyen lehet újraírni kapcsolatba a modern programozási nyelvek, ahogy viszonylag egyszerű algoritmus komponens funkciókat. Ez volt lehetséges, feltéve mindenféle hibákat, amelyek akkor jelentkeznek, amikor az adatbázis osztályok. Különös figyelmet fordítottak az ésszerű elosztása a memória alobjektumokból futási időben, így az összes funkciót gondosan otlazheny.Klassy Mátrix és vektor hatékonyan lehet alkalmazni a gyakorlatban igénylő feladatok műveletek mátrixok és vektorok, valamint az ezzel kapcsolatos a megoldás rendszerek lineáris algebrai egyenletek.

3. Bevezetés a C ++: bemutatója. / Bjarne Straustrap.

9. MODELL ÉS SZERKEZETI ADATOK / bemutatója /

Megoldást találni egy lineáris egyenletrendszer Gauss

Információ a munkáját „, hogy megoldásokat találjunk egy lineáris egyenletrendszer Gauss

Ha van egy nulla sorban a mátrixban, az összes sor alatta, mint nulla; informatika,

háromszögmátrix. ismeretlen érték számításokat végeznek a színpadon flyback. A cél ennek természetesen a munka egy numerikus megoldás egy lineáris egyenletrendszer Gauss elimináció elforgatható oszlopon. 1 Nyilatkozat a probléma A probléma az alábbiak szerint történik. Tegyük fel, hogy azt szeretnénk, hogy megoldást találjunk egy lineáris algebrai egyenletek a1,1x1 + a1.

1,2 0,4 -0,8 -0,8 3,6 4,7 4 10,4 9,7 9,7 -8.4Rezultat számítások módszerével Gauss x1 = 5.0000000000E + 00 x2 = -4.0000000000E + 00 x3 = 3.0000000000E + 00 x4 = -2.0000000000E + 00 2.2 szoftver megoldására Lineáris rendszerek Seidel egyenletek módszere 2.2.1. Nyilatkozat a problémát. Megoldásához szükséges egy lineáris algebrai egyenletek valós együtthatók az űrlap a11x1 + a12x2 + ... + a1nxn =.