// Supstitucija unatrag public Matrica SupstitucijaUnatrag(Matrica y) { if (y.brojStupaca > 1) { throw new Exception("Ulazni parametar supstitucije unatrag mora biti ''okomiti'' vektor (dimenzija nx1)!"); } if (y.brojRedaka != this.brojRedaka) { throw new Exception("Ulazni vektor supstitucije unatrag nije valjane dimenzije!"); } Matrica vektorX = y.VratiKopiju(); for (int i = brojRedaka - 1; i >= 0; i--) { if (Math.Abs(this[i, i]) < Matrica.konstantaUsporedbe) { throw new Exception("Postupak zaustavljen u supstituciji unatrag jer je pivot manji od zadane granice!"); } vektorX[i, 0] /= this[i, i]; for (int j = 0; j < i; j++) { vektorX[j, 0] -= this[j, i] * vektorX[i, 0]; } } return(vektorX); }
public Matrica VratiPermutiraniVektor(Matrica originalniVektor, Matrica vektorPermutacije) { Matrica radniVektor = originalniVektor.VratiKopiju(); for (int i = 0; i < brojRedaka; i++) { radniVektor[i, 0] = this[(int)vektorPermutacije[0, i], 0]; } return(radniVektor); }
// Supstitucija unaprijed public Matrica SupstitucijaUnaprijed(Matrica b) { if (b.brojStupaca > 1) { throw new Exception("Ulazni parametar supstitucije unaprijed mora biti ''okomiti'' vektor (dimenzija nx1)!"); } if (b.brojRedaka != this.brojRedaka) { throw new Exception("Ulazni vektor supstitucije unaprijed nije valjane dimenzije!"); } Matrica vektorY = b.VratiKopiju(); for (int i = 0; i < brojRedaka - 1; i++) { for (int j = i + 1; j < brojRedaka; j++) { vektorY[j, 0] -= this[j, i] * vektorY[i, 0]; } } return(vektorY); }