Skip to content
Snippets Groups Projects
Commit 8b6e8763 authored by maikov's avatar maikov
Browse files

Update README.md file and improve matrix multiplication.

parent 958ae107
No related branches found
No related tags found
No related merge requests found
......@@ -3,27 +3,33 @@
MatrixCalculator on programm, mis võimaldab teha tehteid maatriksitega.
Autorid:
Martin Maikov
Harald Jõgi
* Martin Maikov
* Harald Jõgi
## Kirjeldus
Kasutaja saab luua tekstipõhises keskkonnas maatrikseid, neid vaadata ning nende peal tehteid sooritada
## Klassid
Kasutajaliides: Kasutaja side programmiga. Küsib sisendit ja teeb selle põhjal asju
Alustamiseks meetod küsi(), mis otsustab, mis lehekülge järgmisena näidata
Kasutajaliides: Kasutaja side programmiga. Küsib sisendit ja teeb selle põhjal asju.
Alustamiseks meetod küsi(), mis otsustab, mis lehekülge järgmisena näidata.
Privaatne meetod prompt võtab sõne, väljastab selle koos muutumatu päisega, ning küsib sisendit.
Tehtepuu: Loeb sõnest välja võrrandi, kus muutujad asendab nende väärtustega
Meetod parse võtab sõne ja muutujate sõnastiku ning teeb nendest võrrandi
Meetod lex võtab sõne ja muudab selle vähimate sümbolite massiiviks
TundmatuMuutuja: Viga, mis annab teada, et võrrandis on muutuja, mida pole määratud.
Tehtepuu: Loeb sõnest välja võrrandi, kus muutujad asendab nende väärtustega.
* Meetod parse võtab sõne ja muutujate sõnastiku ning teeb nendest võrrandi.
* Meetod lex võtab sõne ja muudab selle vähimate sümbolite massiiviks.
TundmatuMuutuja: Viga, mis annab teada, et võrrandis on muutuja, mida pole määratud.
## Protsess ja Panus
## Protsess ja panus
Harald tegi kasutajaliidese ja parseri. (Klassid Kasutajaliides, Tehtepuu, TundmatuMuutuja)
Kulus u. 15h.
Martin tegi maatriksid ja tehted nendega.
Martin tegi maatriksid ja tehted nendega. (Kõik klassid pakettides exceptions(v.a. TundmatuMuutuja), expressions (v.a. Tehtepuu) ja matrix).
Kulus u. 10h.
Kõigepealt tegi Harald valmis kogu kasutajaliidese peale maatriksitega tehete.
......@@ -35,14 +41,19 @@ Lõpuks tegi Harald valmis parseri, viis kasutajaliidese maatriksitele üle ja
## Hinnang
Kasutajaliides saaks olla parem: Kohati ebamugav, ülevalt eelmist lehte veel näha jne.
Kasutajaliides saaks olla parem: kohati ebamugav, ülevalt eelmist lehte veel näha jne.
Tehete parsimine sõnest võiks olnud olla võimsam ning oleks võinud lisada ka vektori andmetüübi ja sellega seonduvad tehted.
## Testimine
Kasutajaliidest testisin peamiselt lihtsalt kasutades ja vaadates, kas soovitud asju on võimalik teha.
Tehtepuu juures hakkasin põhjast pihta: Testisin, kas lex() töötab õigesti, siis kontrollisin algeliste tehete puhul parserit jne.
Martin otsustas targem olla ja konfigureeris JUnit testimisraamistikku ning
kirjutas palju teste, mis kontrollisid erinevate klasside tööd. Selle abil oli võimalik mul
koodi kirjutamise ajal üles leida erinevaid vigu.
## Nõuded
......@@ -75,14 +86,6 @@ A = {{3, 6, 12}, {4, 9, 6}, {7, 8, 18}}
> %list
A {{3, 6, 12}, {4, 9, 6}, {7, 8, 18}}
B = null
C = null
D = null
E = null
F = null
X = null
Y = null
Z = null
> A*2
{{6, 12, 24}, {8, 18, 12}, {14, 16, 36}}
```
......@@ -75,7 +75,7 @@ public class Matrix {
for (int k = 0; k < this.cols; k++) {
sum += this.elements[this.getIndex(i, k)] * other.elements[other.getIndex(k, j)];
}
result.elements[result.getIndex(i, j)] = Math.round(sum);
result.elements[result.getIndex(i, j)] = sum;
}
}
......
......@@ -6,6 +6,8 @@ import static org.junit.jupiter.api.Assertions.*;
public class InverseMatrixTest {
private static final double DELTA = 1e-15;
@Test
public void testInverseMatrix1() {
SquareMatrix matrix = new SquareMatrix(3, new double[] {
......@@ -21,7 +23,7 @@ public class InverseMatrixTest {
matrix.multiply(inverse);
assertArrayEquals(identity.getElements(), matrix.getElements());
assertArrayEquals(identity.getElements(), matrix.getElements(), DELTA);
}
@Test
......@@ -40,6 +42,6 @@ public class InverseMatrixTest {
matrix.multiply(inverse);
assertArrayEquals(identity.getElements(), matrix.getElements());
assertArrayEquals(identity.getElements(), matrix.getElements(), DELTA);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment