Hey,
Du formulierst deine Randbedingung simpler als sie ist. Du hast ja vorgerechnet, dass du bei zweimaligem unterschreiten der 0 zwei Zeilenvektoren in balancierter Form anpasst. Muss auch sein, sonst würdest du nach der ersten Anpassung alle weiteren Zeilen auf 0 setzen müssen, die zur Unterschreitung führen.
Richtig, dass ist der erste Punkt wo ich hänge.
Aber warum passt du jedes mal Einzeln an? Aus welchem Grund bleibt Zeile 1 unverändert, wenn Zeile 2 zum Unterlauf führt? Die Frage mag blöd sein, ich kenne den Hintergrund deiner Rechnung nicht. Worauf ich hinaus will, ist: kannst du nicht erstmal den Spaltenvektor aufsummieren, dann prüfen ob die Addition zum Element des Eingangsvektors negativ würde, und dann bei Bedarf die ganze Matrix skalieren?
Gibt keine blöden Fragen! Ich finde aber auch kein passendes Beispiel um den Hintergrund zu verdeutlichen. Aber nur Zeilenvektoren die einen Negative Wert besitzen sollen skaliert werden.
Was du dann machst wenn es in der zweiten Spalte zum Unterlauf kommt, hängt von deiner Gesamtlogik ab. Eventuell bestimmst du Spalte für Spalte den erforderlichen Skalierungsfaktor, OHNE DEN EINGANGSVEKTOR ZU ÄNDERN, und skalierst mit dem höchsten.
Absolut richtig, dass hatte ich jedenfalls vor. Ich bin nur noch nicht dahintergekommen wie ich das am geschicktesten umsetze, vor allem weil die Abhängigkeiten mich immer wieder durcheinander bringen.
Gruß
Jo