[Obsah]-[Předchozí]

5. Rovnice:

a) Řešení rovnic (lineárních, a kvadratických):

K řešení rovnic se používápříkaz "solve", jeho syntaxe je následující:

solve(<rovnice>,<proměnná>);

hezky to bude vypadat třeba u takovéto rovnice:

> with(linalg):
> rovnice:= ((x^2-3*x)/(6-2*x))+1=0;

rovnice

> solve(rovnice,x);

2

b) Řešení soustav lineárních rovnic pomocí matic:
Jordanovou eliminací a pomocí Cramerova pravidla.

něco úvodem: představte si že máte soustavu dejme tomu tří lineárních rovnic o třech neznámých, které upravíte tak, aby na levé straně byli neznámé a na pravé ten zbytek asi do takového to tvaru:

> r1:=5*x-2*y+4*z=10;
> r2:=3*x+3*y-6*z=11;
> r3:=3*x-4*y+4*z=12;

rovnice1
rovnice2
rovnice3

máme li takto připravené rovnice, můžeme přistoupit k dalšíímu kroku a to je vytvoření matice soustavy. Matice soustavy je matice složená levých stran rovnic.
Pak budem potřebovat ještě jeden takovej vektor, ten získáme z pravých stran rovnic.

takhle:

>matice := matrix(3,3,[5,-2,4,3,3,-6,3,-4,4]);

matice_soustavy

>vektor_pravych_stran :=vector(3,[10,11,12]);

vektor

ztoho všeho spácháme tzv. slepenec = ROZŠÍŘENÁ MATICE SOUSTAVY pomocí příkazu "concat"

> slepenec := concat(matice,vektor_pravych_stran);

slepenec

ted teda máme všechno připraveno, aby jsme však mohli takto soustavy řešit je třeba si ověřit zda má soustava řešení - tzv Frobeniova podmínka. Přece nechcete dělat zbytečnou práci :-).
To uděláme následovně

  • zjistíme hodnost matice soustavy
  • zjistíme hodnost rozšířené matice soustavy
  • porovnáme hodnosti ....
    ... a když se budou hodnosti rovnat a zároveň budou hodnosti rovny počtu neznámých má soustava jen jedno řešení,
    v případě, že se hodnosti budou rovnat, ale jejich hodnosti budou menší než počet nenámých má soustava nekonečně mnoho řešení
    v případě že hodnost matice soustavy je menší než hodnost rozšířené matice - soustava nemá řešení
>kontrola_regularity_Frobeniova_podminka;
>hodnost_matice:=rank(matice);
>hodnost_slepence:=rank(slepenec);

frob1
frob2
frob3

jak vidíme v našem případě má soustava pouze jedno řešení, které si teď několika způsoby zjistíme.

1. JORDANOVA ELIMINACE:

provedeme ji tak, že rozšířenou matici rovnice upravujeme tak (pomocí příkazu gaussjord();), že na místě rovnice soustavy vznikne jednotková matice a na místě vektoru pravých stran uvidíme naše řešení. První řádek je první neznámá a tak dál...

jordanova_eliminace:=gaussjord(slepenec);

jordan

2. CRAMEROVO PRAVIDLO

tohle bude trochu delší, tak se prosím obrňte trpělivostí ( ou to už je tolik >> 1:00 AM), tak teda do toho. Co vlastně obnáší tahle metoda:

  • budeme potřebovat matici soustavy a také vektor pravých stran, ale tentokrát nebudem dělat žádnej slepenec
  • pro výpočet i -té neznámé nahradíme i-tý sloupec vektorem pravých stran a determiniant takto vzniklé matice vydělíme determinantem matice soustavy

> matice_x:= matrix(3,3,[10,-2,4,11,3,-6,12,-4,4]);
> matice_y:= matrix(3,3,[5,10,4,3,11,-6,3,12,4]);
> matice_z:= matrix(3,3,[5,-2,10,3,3,11,3,-4,12]);
> neznama_x:=det(matice_x)/det(matice);
> neznama_y:=det(matice_y)/det(matice);
> neznama_z:=det(matice_z)/det(matice);

matice_x
matice_y
matice_z
neznama_x
neznama_y
neznam_z

no a ještě něco krákýho. Soustavy lineárních rovnic můžete řešit i přímo, tak že zadáte všechny rovnice soustavy do příkazu solve a to tak:

> prime_vlozeni:=solve({r1,r2,r3},{x,z,y});

prime

Co závěrem: no na keci si moc nepotrpim, takže doufám že to nikomu k něčemu bude.

[Obsah]-[Předchozí]

CNW:Pocítadlo
Naposledy upraveno: 14.02.2016 v 09:05
Valid HTML 4.01 Transitional Valid CSS2!