Hey,
Kannst du mal eine Musterrechnung mit einem 3er Vektor und einer 3x2 Matrix zeigen?
Fall 1 ohne eintreten der Randbedingung, (trivialer Fall):
var s = [5,9,3];
var M = [[1,-2,0],[0,2,-4],[-1,-1,0]]; //Spaltenvektoren in einem Array
// Rechnungenschritte:
s[0] = 5 + 1 -2 + 0; // s[0] + M[0][i]
s[1] = 9 + 0 + 2 - 4; // s[1] + M[1][i]
s[2] = 3 - 1 - 1 + 0; // s[2] + M[2][i]
// Ergebnis
s = [4,7,1];
Fall 2 mit eintreten der Randbedingung, (trivialer Fall):
var s = [1,9,3];
var M = [[1,-4,0],[0,2,-4],[-1,-1,0]]; //Spaltenvektoren in einem Array
// Rechnungenschritte:
s[0] = 1 + 1 -4 + 0; // < 0 Randbedingung
// M neu aus 2tem Zeilenvektor * 0.5:
M = [[1,-2,0],[0,1,-4],[-1,-0.5,0]];
s[0] = 1 + 1 -2 + 0;
s[1] = 9 + 0 + 1 - 4;
s[2] = 3 - 1 - 0.5 + 0;
// Ergebnis
s = [0,7,1.5];
Fall 3 mit eintreten der Randbedingung in mehreren Iterationsschritten, (Kopfrauchen):
var s = [1,9,3];
var M = [[1,-4,-2],[0,2,-4],[-1,-1,0]]; //Spaltenvektoren in einem Array
// Iterationsschritt 1:
s[0] = 1 + 1;
// Iterationsschritt 2:
s[0] = 2 - 4; // < 0 Randbedingung
// M neu aus 2tem Zeilenvektor * 0.5:
Mneu = [[1,-2,-2],[0,1,-4],[-1,-0.5,0]];
// Iterationsschritt 3:
s[0] = 0 - 2; // < 0 Randbedingung
// Zurück zu Iterationsschritt 2 ??
// M neu: M[1] und M[2] mal 1/3
// Gleichmäßiges verkleinerungs Verhältnis zwischen den Zeilenvektoren, folgt aus dem Mittelwert der Subtrahenden ( 4+2 = 6, 6/2 = 3 ), oder? Ich bin mir gerade selbst nicht sicher.
Mneu = [[1,-1.33,-0.66],[0,0.33,-1.33],[-1,-0.33,0]];
s[0] = 1 + 1 - 1.33 - 0.66;
s[1] = 9 + 0 + 0.33 - 1.33;
s[2] = 3 - 1 - 0.33 + 0;
// Ergebnis
s = [0,8,1.66];
Und wenn dieser Fall nun irgendwo auftritt, müsste ich in beiden Iterationen Schritte zurück gehen.
Gruß
Jo