added Gauss-Jordan

This commit is contained in:
2024-06-25 17:07:24 +02:00
parent d880ebd2aa
commit cfda844ebc
4 changed files with 84 additions and 4 deletions

View File

@ -796,8 +796,8 @@ endobj
<EFBFBD><EFBFBD><EFBFBD>?<3F>r&<26><><EFBFBD><EFBFBD>s:$<24><><EFBFBD>!a샏ى<EC838F><D989><EFBFBD><EFBFBD><EFBFBD>~<7E>B:<08><><EFBFBD>r<06>(w<><77>Tuf5<66>q<EFBFBD>&w<>q<EFBFBD>n<EFBFBD>X/<2F><><EFBFBD>`<60>S<EFBFBD><0F><>{+)<29><>jX>I<> <0C>Q<EFBFBD><51><EFBFBD><EFBFBD>7<EFBFBD>g7Chhx
<EFBFBD>u<05>[7j<37>?2Ꝼ,<2C>h<EFBFBD>J<4A>h<EFBFBD><68>tC<74>Э<1A>L5<4C><35>q<EFBFBD><71>C
<EFBFBD><EFBFBD> <0B>%i_<>8f㔐2rNW0<><30>1<<3C><><EFBFBD><EFBFBD>ِ.<2E><><EFBFBD>8<EFBFBD> <0C><><EFBFBD>a<EFBFBD>r% <0B>t_2U.0Ouƅ|<7C><15><>3<00>=E<>Zִԇ<D6B4>6<EFBFBD><36>J:wk#E<><45>Ǡxѐ<>p=<3D>ۊ<><DB8A><EFBFBD>ڑ4<0E><><EFBFBD><0E><>ϸ E<>$Cf<43> <20>E<Ʋ<<3C>7i<37>O^<5E><>՗\[<5B><15>&<1A><><EFBFBD><EFBFBD>m<EFBFBD>@<05><>a<EFBFBD><61><EFBFBD><EFBFBD>b<EFBFBD>G<EFBFBD>UչJ?."Ǹ<>]" k<>e<EFBFBD><65>Q<EFBFBD>c<1B><><1D>,<2C>9<EFBFBD><39>h<EFBFBD>!<21><>b4<62><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t|<7C><>db<64>b<EFBFBD>Ɵ %V<>Ţ(YPV<19><>:
e<EFBFBD>کX}<15><>H<18>S@<40><01><><EFBFBD><0F> g<>v<><76><EFBFBD><EFBFBD>\W<>
<EFBFBD><EFBFBD><EFBFBD>8><3E><><EFBFBD>^$A<>L<1E><>]@<40><><EFBFBD>F<EFBFBD>k<EFBFBD>j<EFBFBD><6A>x]<5D>ڊ<EFBFBD>50<35><30><11>х<EFBFBD>s<EFBFBD>`K5<4B><11><01>w\-<00><><EFBFBD><EFBFBD>hA)ԝ<><D49D>Ҙ?<3F><>1y<1E>fC<66><43>
e<EFBFBD>کX}<15><>H<18>S@<40><01><><EFBFBD><0F> g<>v<><76><EFBFBD><EFBFBD>\W<>
<EFBFBD><EFBFBD><EFBFBD>8><3E><><EFBFBD>^$A<>L<1E><>]@<40><><EFBFBD>F<EFBFBD>k<EFBFBD>j<EFBFBD><6A>x]<5D>ڊ<EFBFBD>50<35><30><11>х<EFBFBD>s<EFBFBD>`K5<4B><11><01>w\-<00><><EFBFBD><EFBFBD>hA)ԝ<><D49D>Ҙ?<3F><>1y<1E>fC<66><43>
<1D><><EFBFBD>˄<><D9B0>n<EFBFBD><6E> <20>^<5E><>忄f`|_[L<><4C><EFBFBD>U<>d<EFBFBD>u<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><EFBFBD> {<7B><>0c<30><63><EFBFBD><03><>Q<EFBFBD><51>n6<6E><36>hXN<58>#<08><>.<2E><05>Pl<50><6C><EFBFBD>m0<6D><1C><>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x{<7B>#<23><>Q<EFBFBD>,<2C><4E>ѥ<08><>b<EFBFBD>*\<5C><><EFBFBD><EFBFBD><10><>5<EFBFBD><35><EFBFBD><EFBFBD>k8{W<><57>
X<EFBFBD>M<EFBFBD><EFBFBD>h
@ -808,7 +808,7 @@ endobj
<EFBFBD><EFBFBD><EFBFBD><10>ҹo
<EFBFBD><EFBFBD>{a<>5<EFBFBD>]k)<14><>. <0C>Ƿ<1B><>]ɥX<C9A5><58>xX;<3B><><19>1*<01><>j<EFBFBD>'<27>Y<EFBFBD><59>^М%X<><58>t<EFBFBD>]4M<34><4D>R2Lcg<1D><<3C><><EFBFBD>i<EFBFBD><69>v<EFBFBD>&!)=<3D><><EFBFBD> <09>Zjh<6A>YPjBu/'<27> <0C>Pz<50><7A>d]~kA&<26><><EFBFBD><EFBFBD><EFBFBD>3If_h<5F><68><EFBFBD><0E><><EFBFBD>S<EFBFBD><53><EFBFBD>v<EFBFBD>H<EFBFBD>*r}<7D><>'<27>7<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>[=<3D>)\3<>H<EFBFBD> e<>2H<1E><1D><13><>Ei<45>4<EFBFBD><34><EFBFBD>S<EFBFBD>6 z<N<><16> <20><><EFBFBD> <0C><1B>C<EFBFBD><43>]<5D>V<0E><><EFBFBD>\i(74<18><>
<EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><19><>&<14>"<22>%e<>V<13>0d`\<5C>f5<><1A><><EFBFBD><EFBFBD><EFBFBD>o<00>e}|<7C>|u<>E<EFBFBD>&<26>ȃ<EFBFBD><C883> <0C><>w<EFBFBD>n-<>S<>u<EFBFBD>LWjK<6A><4B>O<EFBFBD><4F><1A><>`<60><><EFBFBD>J<EFBFBD><1A>Si<><69>ɴW<C9B4><57><EFBFBD><EFBFBD>g%<25><><EFBFBD>e<EFBFBD><65>If_<66><EFBFBD><7F><EFBFBD>HGE<47>R<1B>M'c<><01>4ql<71> (<05><><EFBFBD><EFBFBD>W.<2E><><03>/<2F><><EFBFBD>q<EFBFBD><71><EFBFBD>
L7qʄ<71><CA84>1<EFBFBD>'$<24>-<2D><><08><><EFBFBD>s<EFBFBD>Ο?!q<><71> ~<7E><>ϝ0ߓ?<3F>;~<7E>߄<EFBFBD><DF84><13>Ib<49><62>i <09><><EFBFBD>/<2F><>0q<30><71><EFBFBD>@<40>)<13>F'N<><4E><13><><1F><>0<EFBFBD><30>u<EFBFBD><75>5{<7B>Of͘1kV@<40>d<EFBFBD><64>nr<>.<2E><><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>"<22><><EFBFBD><0E>Y3<12>݌ɞ<DD8C>H<EFBFBD><48><01>'<27><08><><EFBFBD><EFBFBD>-Rɼ<52><C9BC>[[<5B><>Jf<4A>3<EFBFBD> <0B>w<01><><EFBFBD>f<EFBFBD><17>(<28><>_{*?<3F><><EFBFBD>dk<64>9<EFBFBD><39>%e<>h<17><><EFBFBD>7#<23>'<27><><EFBFBD><EFBFBD>cVm<56>u N<><4E>JJ<4A><4A><EFBFBD>r<EFBFBD><72>~<7E>4<EFBFBD>W<EFBFBD>4<EFBFBD><34><EFBFBD>h<><68><EFBFBD><EFBFBD><EFBFBD>@I<><49>9<m<>U33<>J\2<14>.<2E><>9GhVZ<56>i?<3F>$<24>O#<23>>ӿ<>RFB<13><><EFBFBD><EFBFBD>mm
L7qʄ<71><CA84>1<EFBFBD>'$<24>-<2D><><08><><EFBFBD>s<EFBFBD>Ο?!q<><71> ~<7E><>ϝ0ߓ?<3F>;~<7E>߄<EFBFBD><DF84><13>Ib<49><62>i <09><><EFBFBD>/<2F><>0q<30><71><EFBFBD>@<40>)<13>F'N<><4E><13><><1F><>0<EFBFBD><30>u<EFBFBD><75>5{<7B>Of͘1kV@<40>d<EFBFBD><64>nr<>.<2E><><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>"<22><><EFBFBD><0E>Y3<12>݌ɞ<DD8C>H<EFBFBD><48><01>'<27><08><><EFBFBD><EFBFBD>-Rɼ<52><C9BC>[[<5B><>Jf<4A>3<EFBFBD> <0B>w<01><><EFBFBD>f<EFBFBD><17>(<28><>_{*?<3F><><EFBFBD>dk<64>9<EFBFBD><39>%e<>h<17><><EFBFBD>7#<23>'<27><><EFBFBD><EFBFBD>cVm<56>u N<><4E>JJ<4A><4A><EFBFBD>r<EFBFBD><72>~<7E>4<EFBFBD>W<EFBFBD>4<EFBFBD><34><EFBFBD>h<><68><EFBFBD><EFBFBD><EFBFBD>@I<><49>9<m<>U33<>J\2<14>.<2E><>9GhVZ<56>i?<3F>$<24>O#<23>>ӿ<>RFB<13><><EFBFBD><EFBFBD>mm
<EFBFBD><EFBFBD>rcg<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD>'<27>4<EFBFBD>a<EFBFBD>b<EFBFBD><62>[ISZ9<5A>gne$u<>2<18><><EFBFBD>rK<72>Qn<51>>4<><34> <0C><18>y<><79><EFBFBD><EFBFBD><13><><EFBFBD><EFBFBD>&<26><><EFBFBD>.w<>*<0F><>Hg<48>7<EFBFBD><37><EFBFBD>=<3D>{t<><74>G<EFBFBD>:<3A>ؼg<D8BC><67><EFBFBD>{a?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<7B>b<EFBFBD><62>[<5B><>̷ׁ,\L<>F.<2E>
<EFBFBD>`<60>:<3A><><EFBFBD>]5~:<3A>m<EFBFBD>.u<>H<EFBFBD>k<EFBFBD>?<3F>˕<16><><EFBFBD>iѢN<D1A2><4E>-<2D>@<17><>D&5<>P<EFBFBD>Bj<42><6A><EFBFBD>5d<>6[S<><53><EFBFBD><EFBFBD>~;u<>7O<37>O<EFBFBD><4F>/Y6f<36>Ё㇏<1A>CxS[<5B>@;PCjC><3E>H<><48><EFBFBD><EFBFBD> <09><>!<21>}<7D><><EFBFBD><52><DC88><EFBFBD><EFBFBD>,y<><79><EFBFBD>0}:<3A>=%AR<41><52>[<5B><>Ԑ<EFBFBD>j<EFBFBD>iC<69><43>/yU<>([
S<02><><EFBFBD>S$y<><79>ǐ0e6M<36><0E><>U<EFBFBD><EFBFBD>\X&P<13>:g<>tI<74><02>O<EFBFBD><4F>S<EFBFBD>><3E>2<EFBFBD>N<EFBFBD>ϡ*eQ<65>n^<5E>)<29><>8<1F>Q<EFBFBD><06>)<29>8<EFBFBD>q)<29>7
@ -851,7 +851,7 @@ trailer
<EFBFBD><EFBFBD>\PZR<5A><52>`<60><><EFBFBD><EFBFBD>Sc<53>22fFV<46>ƥgtŇ)X2P<32>$<24><>SjG[=W<><57>F<EFBFBD>)<29>S<EFBFBD>t
<EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>t$<24><><EFBFBD><04>`s<7F><73><EFBFBD>dOS<15><>b<EFBFBD>B<>+<2B>[<5B><>Ԉ<19>=<3D>=8T<38><12>ؔ<EFBFBD>o<7F><6F><EFBFBD>m<><6D>6<EFBFBD>̾ti<>
<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD>ޯ<18>(<28><><EFBFBD><12><><EFBFBD><07>Ja-<2D> V<><56><EFBFBD><1F>s1,<2C>I>e<>G L<>G<EFBFBD>)<29><04><>[N<><4E>f<EFBFBD><66>G<EFBFBD>q<EFBFBD>,;]<1B>6<EFBFBD>`<1E><><>9<EFBFBD><39>gv:<3A><>b<EFBFBD>ϰ<EFBFBD>&<26>~<7E>q<0E><><EFBFBD>S<00>
<EFBFBD><EFBFBD>Q<16>W<><57>g"<22><>
<EFBFBD><EFBFBD>Q<16>W<><57>g"<22><>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~(<28><><EFBFBD>5! q<>
<0C>wi<77><69>,%<25>vv<76><18><><0F><><EFBFBD>FAUdy<1F><15><>z<EFBFBD><7A>:<3A>tf0<66>;s<><73><EFBFBD>*<2A>`U<>J<EFBFBD><4A>*<2A><>I<EFBFBD>6<EFBFBD><36>@<40><><EFBFBD>,<2C><><33><DA98>V\k<><6B><EFBFBD>k<EFBFBD>h=<3D><><07>Y<0F>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>ql4͸<34><CDB8>q<EFBFBD><71><EFBFBD><05><>U<EFBFBD>qml<6D>*<2A><> <0C><> <0C><71>l<EFBFBD>c?ڊٍxl<78> x8b<38>F<EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD><EFBFBD>^fW<66><4F><C78C>Q<51><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><12><> <09><><EFBFBD>Uu]u0<75><30>v<EFBFBD>*<2A>Z<EFBFBD>{<7B>f<EFBFBD>Wx <0C><><EFBFBD><EFBFBD>y <0B>D<EFBFBD><44>(<28>[<5B><>(<28><><EFBFBD>i<EFBFBD><69>|<7C><><EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD>0<EFBFBD><30>/<2F>0<EFBFBD>Za<5A><61>^<5E><><EFBFBD><EFBFBD>se<73><65><00>B<EFBFBD><42>}<7D><>i<EFBFBD>t$<24>m<EFBFBD><6D>3Q/<2F><><EFBFBD><EFBFBD>w<01><00>{e<><65><02><>eO<1D><><EFBFBD><EFBFBD>p<EFBFBD>I<EFBFBD>v<EFBFBD>&PO<50><4F><EFBFBD>"<22>go<67><6F><EFBFBD><0F><><EFBFBD><EFBFBD><EFBFBD>h2D|$pW]R<>E}<7D>~<1C>g<EFBFBD>r"<22> &]i=<3D><>#%ӧ<>><3E><><EFBFBD>
e<1C>[<5B>#<23><>@/<2F><><EFBFBD><EFBFBD>4<EFBFBD>[<5B><>O<><4F>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>@<40>W'<27><><EFBFBD>y<EFBFBD> au<0E>Kgu<67><75><EFBFBD>p<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>6<EFBFBD><36><EFBFBD> !<21><><00>< |vO <0C>obZ<62>:<3A>

BIN
gallery/example3.pdf Normal file

Binary file not shown.

27
gallery/example3.typ Normal file
View File

@ -0,0 +1,27 @@
#import "/src/lib.typ": *
#let A = mat.mat(
(3, -3, -1, 2, -9),
(1, -1, 2, -1, -6),
(1, -1, 1, 1, -6),
(-1, 1, -1, -2, 7)
)
#let b = vec.vec(13, -6, 1, -3)
#let A2 = mat.mul-row(A, 2, 3)
#let A3 = mat.div-row(A, 1, 2)
#let A4 = mat.add-row(A, 2, 3, f: 2)
$
A = #mat.display(A) quad b = #vec.display(b)\
A_2 = #mat.display(A2)\
A_3 = #mat.display(A3)\
A_4 = #mat.display(A4)\
$
#let E = gauss.echelon(A)
$
E = #mat.display(E)
$

53
src/gauss.typ Normal file
View File

@ -0,0 +1,53 @@
#import "mat.typ" as _mat
#let find-next-non-null(mat, x: 0, start-y: 0) = {
for y in range(start-y, mat.h) {
if mat.rows.at(y).at(x) != 0 {
return y
}
}
return none
}
#let echelon(mat) = {
_mat._check(mat)
let dim = calc.min(mat.w, mat.h)
let mat = mat
// Gauss
for i in range(dim) {
let pivot = mat.rows.at(i).at(i)
// Pivot != 0 -> divide to get 1
if pivot != 0 {
mat = _mat.div-row(mat, i, pivot)
} else {
let y = find-next-non-null(mat, x: i, start-y: i)
if y != none {
mat = _mat.add-row(mat, i, y, f: 1 / mat.rows.at(y).at(i))
}
}
// Make all rows below 0
for y in range(i + 1, mat.h) {
mat = _mat.add-row(mat, y, i, f: -mat.rows.at(y).at(i))
}
}
// Jordan
for y in range(dim) {
for x in range(y + 1, dim) {
mat = _mat.add-row(mat, y, x, f: -mat.rows.at(y).at(x))
}
}
return _mat.round(mat)
}
// solver = Solver(matrix, constants)
// solver.solve()
// gauss = Gaussificator(matrix, constants)
// gauss.echelon()