Ekuazio linealen ebazpena

Matrizeen funtzioak

mat·{x,y,z}=ask, sistema linealari dagozkien matrizea eta bektore askearen sarrera,  
(Menua: Input -> Crate Table/Matrix/...)

mat=(({{3, -1, -2}, {-4, 2, 5}, {-1, 1, 3}}));ask=(({{2}, {6}, {4}}));

Matrize osoa edo matrize zabalduaren eraiketa (Join -> zerrendak biltzeko, 
Transpose -> matrizea iraultzeko, MatrixForm -> itxura matrizialaz)

Join[mat, 
      ask]

matosoa = 
      Transpose[Join[Transpose[mat], Transpose[ask]]];

MatrixForm[matosoa]

Matrizearen determinantea eta matrize osoaren rangoa (Det -> determinantea,
MatrixRank -> rangoa (Mathematica-ko 5.0 bertsiotik aurrera)).

Det[mat]

mr = MatrixRank[mat]

mro = MatrixRank[matosoa]

Sistemaren bateragarritasuna eta soluzioa (matrizea eta matrize hedatuaren heinak berdinak badira sistema lineala
askatuko du eta bestela sistema bateragarria ez dela baieztatuko du). Sistema triangeluarizatu (RowReduce -> 
sistema baliokidea eta eskalonatua).

LinearSolve[mat, 
      ask]

\(\(If[mr == mro, 
        Print["Sistema bateragarria da eta soluzioa hau da:", 
LinearSolve[mat, 
            ask]], 
Print["Sistema ez da bateragarria eta soluziorik ez dauka:"]];\)\)

MatrixForm[RowReduce[matosoa]]

Which[mr == mro  &&  mr == Length[mat], 
      Print["Sistema bateragarria da eta soluzioa hau da:", 
        LinearSolve[mat, ask]], 
mr == mro  &&  
        mr < Length[
            mat], 
Print["Infinitu soluzio daude:", 
        LinearSolve[mat, ask]], 
mr < mro, 
      Print["Sistema ez da bateragarria eta soluziorik ez dauka:"]]

Sistemak soilik 2 ekuazio linealki askeak baditu, bi ekuazio horiei dagoakien planoen ekuazioak
idatz ditzakegu "z" aldagaia isolatuz (1.go eta 2. ekuazioetatik) eta bi plano horien ebakiduraren (zuzena)
grafika marraztu.

ekuazioak=Table[(mat . {x, y, z})[[i]] == 
          ask[[i, 1]], 
{i, 1, 
          3}]

Reduce[ekuazioak[[1]], {z}]

Reduce[ekuazioak[[2]], {z}]

ParametricPlot3D[{{x, y, -1 + ((3 x)/2) - (y/2)}, {x, y, 
            (6/5) + ((4 x)/5) - ((2 y)/5)}}, 
{x, -2, 8}, {y, -2, 8}, AxesLabel -> {x, y, z}, 
        ViewPoint -> {-0.880,  -2.102,  2.660}, 
        Ticks -> False];

Sistema linealaren ebazpenerako funtzioa eta Cramer-en erregelaren bidez
(LinearSolve -> matrize eta bektore askeaz osatutako sistema linealaren soluzioa,
Inverse -> alderantzizko matrizea)

Det[mat]

mat=(({{3, -1, -2}, {-4, 2, 5}, {-1, 3, 3}}));ask=(({{2}, {6}, {4}}));

LinearSolve[mat, ask]

MatrixForm[Inverse[mat] . ask]

matcram = Transpose[mat]; 
    matcram[[1]] = Transpose[
          ask][[1]];
MatrixForm[Transpose[matcram]]

Det[Transpose[matcram]]/Det[mat]

matcram = Transpose[mat]; 
    matcram[[2]] = Transpose[
          ask][[1]];
Det[Transpose[matcram]]/Det[mat]

matcram = Transpose[mat]; 
    matcram[[3]] = Transpose[
          ask][[1]];
Det[Transpose[matcram]]/Det[mat]

Matrizearen alderantzizkoa (Map[Reverse,Minors[mat],{0,1}]] -> matrizeren osagaiaren 
minoretaz osatutako matrizea)

MatrixForm[Map[Reverse, Minors[mat], {0, 1}]]

minmat = 
        Map[Reverse, Minors[mat], {0, 1}];
Do[
        Do[minmat[[i, j]] = (-1)^(i + j)*
              minmat[[i, j]]/Det[mat], {j, 1, Length[mat]}], {i, 1, 
          Length[mat]}];

MatrixForm[Transpose[minmat]]

MatrixForm[mat . Transpose[minmat]]

Parametro baten menpeko sistemaren bateragarritasunaren eztabaidaketa (Reduce -> 
ekuazioak betetzen dituzten soluzioak edo erlazioak eskuratuko ditu non "| |" ikurrak 
"edo" eta  "&&" ikurrak "eta" esan nahi dute, Solve -> ekuazioak askatzeko)

mat=(({{1, 1 - h}, {1 + h, -3}}));ask=(({{h}, {-h}}));

matosoa = 
        Transpose[Join[Transpose[mat], Transpose[ask]]];

bald = Solve[Det[mat] == 0, h]

Reduce[Det[mat] == 0, h]

Det[mat /. bald[[1, 1]]]

MatrixRank[mat /. bald[[1, 1]]]

MatrixRank[matosoa /. bald[[1, 1]]]

MatrixForm[RowReduce[matosoa /. bald[[1, 1]]]]

MatrixRank[mat /. bald[[2, 1]]]

MatrixRank[
      matosoa /. bald[[2, 
            1]]]

mat=(({{1, 1}, {h, -1}, {1, -4}}));ask=(({{7}, {11}, {h}}));

matosoa = 
        Transpose[Join[Transpose[mat], Transpose[ask]]];

bald = Solve[Det[matosoa] == 0, h]

Minors[mat, 2]

MatrixRank[
      matosoa /. bald[[1, 
            1]]]

MatrixRank[
      matosoa /. bald[[2, 
            1]]]

2 Ekuazio linealeen askapen grafikoa

Erabilpena: bi ekuazio lineleen sistemaren "a.x=b" era matrizialaren "a" matrizea eta 
"b" bektore askea idatzi eta "biekuaziolineal[a,b]" agindua burutu.

Biekuaziolineal[mat_, aske_] := 
        Module[{lokma = mat, lokas = aske, kx, ky, sol, eku1, eku2, 
            x}, 
{{kx}, {ky}} = 
            LinearSolve[lokma, lokas]; 
eku1[
              x_] = -lokma[[1, 1]]/lokma[[1, 2]]*x + 
              aske[[1, 1]]/lokma[[1, 2]]; 
          eku2[x_] = -lokma[[2, 1]]/lokma[[2, 2]]*x + 
              aske[[2, 1]]/
                lokma[[2, 2]]; 
Show[{Plot[{eku1[x], 
                  eku2[x]}, {x, kx - 1, kx + 1}, 
                PlotStyle -> {Hue[ .6], 
                    Hue[ .9]}, 
PlotRange -> {{kx - 1, 
                      kx + 1}, {ky - 1, ky + 1}}, 
                DisplayFunction -> 
                  Identity], 
Graphics[{{PointSize[
                      0.02], {Hue[0.1], 
                      Point[{kx, ky}]}}, 
Text[{kx, 
                      ky}, {kx + 0.3, ky - 0.1}, {0, -1}, {1, 
                      0}]}]}, 
DisplayFunction -> $DisplayFunction, AspectRatio -> 1];];

a=(({{3, -4}, {-5, 2}}));b=(({{2}, {-5}}));

Biekuaziolineal[a, b]

Ekuazio linealak askatzeko Gauss-en ezabapena

Erabilpena: "a" matrizea eta "b" bektore askearekiko "a.x=b" n. dimentsioko sistema lineala 
"Gaussezabapen[a,b,n]" aginduak triangularizatuko du eta beronen soluzioa argitaratu.
Baita  <<Garatu`Gaussezab` paketea kargatuz erabili ahal izango dugu.

Gaussezabapen[mat_, aske_, dim_] := 
        Module[{matb = mat, askeb = aske, i, j, 
            k, 
ezezagun, 
            pibote}, 
ezezagun = 
            MatrixForm[
              Table[{"x(", i, ")"}, {i, 1, 
                  dim}]]; 
Print[MatrixForm[matb], 
            ezezagun, " = ", 
MatrixForm[
              askeb]]; 
Do[
            Do[pibote = 
                matb[[j, i]]/matb[[i, i]]; 
Do[
                matb[[j, k]] = 0, {k, 1, i}]; 
Do[
                matb[[j, k]] = 
                  matb[[j, k]] - pibote*matb[[i, k]], {k, i + 1, 
                  dim}]; 
askeb[[j, 1]] = 
                askeb[[j, 1]] - 
                  pibote*askeb[[i, 1]], 
{j, i + 1, 
                dim}]; Print[i, ")",  urratsa]; 
Print[
              MatrixForm[matb], ezezagun, " = ", MatrixForm[askeb]], {i, 
              1, dim - 1}]; 
askeb[[dim, 1]] = 
            askeb[[dim, 1]]/matb[[dim, dim]]; 
Do[
            Do[askeb[[i, 1]] = 
                askeb[[i, 1]] - matb[[i, j]]*askeb[[j, 1]], {j, 
                i + 1, dim}]; 
askeb[[i, 1]] = 
              askeb[[i, 1]]/matb[[i, i]], {i, dim - 1, 
              1, -1}]; 
Print["Soluzioa:"]; 
          Print[ezezagun, " = ", MatrixForm[askeb]];];

a=(({{1, 2, -4}, {-2, 3, 2}, {6, 1, -5}}));b=(({{-1}, {3}, {2}}))

Gaussezabapen[a, b, 3]