Vektor a Matice
Základní pojmy Matice(řádky, sloupce) Matice(4,6) sloupce řádky (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6)
Základní pojmy Matice je složena z vektorů vektory tvoří řádky sloupce řádky (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) vektor[0] vektor[1] vektor[2] vektor[3]
Kompozice objektů 1 * Matice Vektor
public class Vektor { private int[] polesloupcu; public Vektor(int sloupce) { polesloupcu = new int[sloupce]; //pocetprvku = sloupce; public int getprvek(int i) { if((i >= 0) && (i < polesloupcu.length)) return polesloupcu[i]; else return 0; public void setprvek(int i, int h) { if((i >= 0) && (i < getpocetprvku())) polesloupcu[i] = h; else System.out.println("Chyba zapisu vektor"); public int[] getvektor() { return polesloupcu; public void setvektor(int[] nvektor){ polesloupcu = nvektor; Vektor 5
public String tostring() { String retez = ""; for(int i = 0; i < getpocetprvku(); i++) retez += polesloupcu[i] + " "; return retez; public void tisk() { System.out.println(toString()); public int getpocetprvku() { return polesloupcu.length; Vektor pokračování 6
public class VektorTest { public static void main(string[] args) { Vektor vektor = new Vektor(6); vektor.tisk(); vektor.setprvek(0, 12); vektor.setprvek(3,-44); vektor.setprvek(5,55); vektor.tisk(); VektorTest 7
import javax.swing.joptionpane; public class Matice { private Vektor[] poleradku; // konstruktor public Matice(int radek, int sloupec) { poleradku = new Vektor[radek]; for(int i = 0; i < radek; i++) poleradku[i] = new Vektor(sloupec); public int getpocetsloupcu() { return getvektor(0).getpocetprvku(); public int getpocetradku() { return poleradku.length; // pristupova metoda public int getprvek(int rd, int sl) { return getvektor(rd).getprvek(sl); //r[rd].get(sl); // modifikacni metoda public void setprvek(int rad, int slp, int h) { getvektor(rad).setprvek(slp, h); //r[rad].set(slp, h); Matice 8
public String tostring() { String str = "Matice tisk:\n"; for(int i = 0; i < getpocetradku(); i++) str += getvektor(i).tostring() + "\n"; return str; public void tisk() { System.out.println(toString()); public void naplneni() { for(int i = 0; i < getpocetradku(); i++) for(int j = 0; j < getpocetsloupcu(); j++) setprvek(i, j, zadejprvekmatice(i, j)); Matice - pokračování public int zadejprvekmatice(int i, int j){ String odp = JOptionPane.showInputDialog(""+ (i+1) + ", " +(j+1) + " : "); return Integer.parseInt(odp); // pomocna metoda public Vektor getvektor(int cislo) { return poleradku[cislo]; 9
public Matice soucetmatic(matice matice){ if(getpocetradku()!= matice.getpocetradku()&& getpocetsloupcu()!= matice.getpocetsloupcu()) { System.out.println("Pocet radku nebo sloupcu se lisi "); return null; Matice maticesoucet = new Matice(getPocetRadku(), getpocetsloupcu()); for(int i = 0; i < getpocetradku(); i++) for(int j = 0; j < getpocetsloupcu(); j++) maticesoucet.setprvek(i, j, getprvek(i, j)+ matice.getprvek(i, j)); return maticesoucet; Matice - součet 10
public Matice soucinmatic (Matice matice) { if(getpocetradku()!= matice.getpocetsloupcu()) { System.out.println("Pocet radku: "+ getpocetradku() + " pocet sloupcu: " + matice.getpocetsloupcu()); return null; Matice maticesoucin = new Matice(getPocetRadku(), getpocetradku()); int prvek; for(int i = 0; i < getpocetradku(); i++) { for(int k = 0; k < getpocetradku(); k++) { prvek = 0; for(int j = 0; j < getpocetsloupcu(); j++) prvek += getprvek(i, j) * matice.getprvek(j, k); maticesoucin.setprvek(i, k, prvek); return maticesoucin; Matice součin m c i k = a i j b j k j=0 11
public class MaticeTest { public static void main(string[] args) { /* Matice m = new Matice(4,6); m.tisk(); m.setprvek(0, 2, 123); m.setprvek(2,0, -55); m.tisk(); m.naplneni(); m.tisk(); */ System.out.println("Matice soucet:"); Matice s1 = new Matice(2, 2); s1.naplneni(); Matice s2 = new Matice(2, 2); s2.naplneni(); s1.tisk(); s2.tisk(); Matice s3 = s1.soucetmatic(s2); s3.tisk(); MaticeTest 12
System.out.println("Soucin matic:"); Matice a = new Matice(2, 3); a.naplneni(); Matice b = new Matice(3, 2); b.naplneni(); a.tisk(); b.tisk(); Matice c = a.soucinmatic(b); c.tisk(); Matice d = b.soucinmatic(a); if(d!= null) d.tisk(); MaticeTest 13