Cramerin sääntö

Lineaarialgebrassa, **Cramerin sääntö** on kaava yhtä monta yhtälöä ja tuntematonta sisältävän lineaarisen yhtälöryhmän ratkaisemiseksi. Sääntö pätee aina, kun yhtälöryhmällä on tasan yksi ratkaisu.

Sääntö ilmaisee ratkaisun kullekin lineaarisen yhtälöryhmän tuntemattomalle kahden determinantin osamäärän avulla. Determinantit saadaan yhtälöryhmän kertoimien muodostamasta neliömatriisista ja erityisestä kerroinmatriisista muodostetusta matriisista, missä sopiva kertoimien sarake on korvattu yhtälöryhmän vakioilla.

Cramerin sääntö on nimetty Gabriel Cramerin (1704&ndash;1752) mukaan, joka julkaisi säännön mielivaltaiselle tuntemattomien muuttujien määrälle vuonna 1750, joskin Colin Maclaurin julkaisi säännön erikoistapauksen 1748 ja mahdollisesti tunsi säännön jo 1729.

## Yleinen tapaus
Tarkastellaan lineaarista yhtälöryhmää, missä on *n* tuntematonta ja *n* riviä.

Yhtälöryhmä voidaan esittää matriisien tulona seuraavasti:
: A\mathbf{x} = \mathbf{b},

missä n \times n matriisilla  A  on nollasta poikkeava determinantti, ja vektori  \mathbf{x} = (x_1, \ldots, x_n)^\mathrm{T}  on muuttujien muodostama sarakevektori.

Cramerin säännön mukaan jos tällä lineaarisella yhtälöryhmällä on yksittäinen ratkaisu, niin tuntemattomien arvot saadaan kaavasta:

: x_i = \frac{\det(A_i)}{\det(A)} \qquad i = 1, \ldots, n \, 

missä  A_i  on matriisi joka muodostetaan korvaamalla matriisin  A  *i*:s sarake sarakevektorilla  \mathbf{b} .

Sääntö pätee lineaarisille yhtälöryhmille, jonka kertoimet ja vakiot kuuluvat mihin tahansa kuntaan, ei ainoastaan reaaliluvuille.

On näytetty, että Cramerin sääntö voidaan toteuttaa ajassa O(*n*3). Aikavaativuus on verrattavissa Gaussin-Jordanin eliminaatiomenetelmään. Luokkaan O(*n*3) pääsemiseksi tarvitaan Cramerin säännön osalta tehokasta determinantin laskemistapaa. Perinteisellä determinantin laskukaavalla lasketaan  n \times n matriisien determinantteja n+1 kertaa antaen työmääräksi (n+1)!(n-1) laskutoimusta. Näin ollen perinteisellä determinantin laskukaavalla Cramerin säännön aikavaatimus on luokkaa O(*n!n*) .

## Todistus

Olkoon A kertoimien matriisi ja alimatriisi M_{ij} matriisi, joka on saatu poistamalla matriisista A i:s rivi ja j:s sarake. 

Määritellään alkion a_{ij} kofaktori 
:(-1)^{i+j} det(M_{ij}) = A_{ij}. 

Esitellään vielä uusi matriisi korvaamalla matriisin A alkiot niiden kofaktoreilla ja transponoimalla saatu matriisi. Tätä matriisia kutsutaan adjungoiduksi matriisiksi  ja se merkitään

:\operatorname{adj} A = \begin{bmatrix}A_{11} & \cdots & A_{1n} \\ \vdots & \ddots & \vdots \\ A_{n1} & \cdots & A_{nn} \end{bmatrix}^\operatorname{T}.

Olkoon edelleen det (A) \neq 0, jolloin sillä on käänteismatriisi. Kääntyvälle matriisille pätee:
:A \left( \frac{1}{\det A}\operatorname{adj} A \right) = I ja \left( \frac{1}{\det A}\operatorname{adj} A \right) A = I.

Nyt käänteismatriisi A^{-1} voidaan esittää A:n determinantin käänteisluvun ja A:n adjungoidun matriisin tulona. 

:\mathbf{x}=\begin{bmatrix}
x_1 \\
x_2 \\
\vdots \\
x_n 
\end{bmatrix}= A^{-1}\mathbf{b}=
\begin{bmatrix}
\frac{A_{11}} & \frac{A_{21}} & \dots & \frac{A_{n1}}\\ 
\frac{A_{12}} & \frac{A_{22}} & \dots & \frac{A_{n2}}\\ 
\vdots & \vdots & & \vdots \\
\frac{A_{1i}} & \frac{A_{2i}} & \dots & \frac{A_{ni}}\\ 
\vdots & \vdots & & \vdots \\
\frac{A_{1n}} & \frac{A_{2n}} & \dots & \frac{A_{nn}}
\end{bmatrix} 
\begin{bmatrix}
b_1 \\
b_2 \\
\vdots \\
b_n 
\end{bmatrix}.

Koska kyseessä on matriisitulo, niin tämä tarkoittaa sitä, että 


x_i = \frac{A_{1i}}b_1 + \frac{A_{2i}}b_2 + \dots + \frac{A_{ni}}b_n, \text{ kun } i = 1,2,3,\dots,n.

Olkoon nyt

:A_i=
\begin{bmatrix}
a_{11} & a_{12} & \dots & a_{1i-1} & b_1 & a_{1i+1} & \dots & a_{1n} \\
a_{21} & a_{22} & \dots & a_{2i-1} & b_1 & a_{2i+1} & \dots & a_{2n} \\
\vdots & \vdots & & \vdots & \vdots & \vdots & & \vdots\\
a_{n1} & a_{n2} & \dots & a_{ni-1} & b_1 & a_{ni+1} & \dots & a_{nn} \\
\end{bmatrix} 
.

Jos selvitämme determinantin det(A_i) kehittämällä i:nnen sarakkeen suhteen, niin huomaamme, että

det(A_i) = A_{1i}b_1 + A_{2i}b_2 + \dots + A_{ni}b_n. 

Tällöin 

x_i = \frac{det(A_i)}{det(A)}\text{, kun } i = 1,2,\dots,n.

## Esimerkkejä pienillä yhtälöryhmillä

Tarkastellaan lineaarista yhtälöryhmää  \left\{\begin{matrix}ax+by&={\color{red}e}\\ cx + dy&= {\color{red}f}\end{matrix}\right.\ 

Yhtälöryhmä voidaan esittää matriisimuodossa: \begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix}=\begin{bmatrix} {\color{red}e} \\ {\color{red}f} \end{bmatrix}. 

Oletetaan, että *ad*&nbsp;&minus;&nbsp;*bc* ei ole 0. Nyt *x* ja *y* voidaan löytää Cramerin säännöllä:
:x = \begin{vmatrix} \color{red}{e} & b \\ \color{red}{f} & d \end{vmatrix}/\begin{vmatrix} a & b \\ c & d \end{vmatrix}  = { {\color{red}e}d - b{\color{red}f} \over ad - bc} 
ja
:y = \begin{vmatrix} a & \color{red}{e} \\ c & \color{red}{f} \end{vmatrix}/\begin{vmatrix} a & b \\ c & d \end{vmatrix}  = { a{\color{red}f} - {\color{red}e}c \over ad - bc}.

Säännöt 3&times;3-matriiseille ovat samankaltaiset. Olkoon \left\{\begin{matrix}ax + by + cz&= {\color{red}j}\\dx + ey + fz&= {\color{red}k}\\gx + hy + iz&= {\color{red}l}\end{matrix}\right..

Yhtälöryhmä voidaan esittää matriisimuodossa \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix}=\begin{bmatrix} {\color{red}j} \\ {\color{red}k} \\ {\color{red}l} \end{bmatrix}.

Arvot muuttujille *x*, *y* ja *z* voidaan löytää seuraavasti:
:x = \frac { \begin{vmatrix} {\color{red}j} & b & c \\ {\color{red}k} & e & f \\ {\color{red}l} & h & i \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} }, \quad y = \frac { \begin{vmatrix} a & {\color{red}j} & c \\ d & {\color{red}k} & f \\ g & {\color{red}l} & i \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} },\text{ ja }z = \frac { \begin{vmatrix} a & b & {\color{red}j} \\ d & e & {\color{red}k} \\ g & h & {\color{red}l} \end{vmatrix} } { \begin{vmatrix} a & b & c \\ d & e & f \\ g & h & i \end{vmatrix} }.

## Katso myös
* Matriisi
* Lineaarinen yhtälöryhmä

## Lähteet

## Kirjallisuutta
* 
*