Ich versuche, diesen Code zu verstehen, aber ich kann nicht: Die n x n Matrix wird spaltenweise gespeichert. Ich unterscheide zwischen voller (F), oberer (U) und unterer (L) Matrix. n die Dimension der MatrixMatrix spaltenweise speichern in C++
int sum(int k){
int s = 0;
for (int i = 1; i<=k; i++)
s += i;
return s;}
double getentry(int j, int k){
j--;k--;
assert(typ == 'F' || typ == 'U' || typ == 'L');
assert(k<n && j<n);
if(typ == 'F') return mat[k*n+j];
if(typ == 'L') return (k>j)?(0.0):(mat[k*n+j-sum(k)]);
if(typ == 'U') return (j>k)?(0.0):(mat[k*n+j-sum(n-1)+sum(n-(k+1))]);
}
ich ausdrücklich nicht verstehen, diese Zeilen:
if(typ == 'L') return (k>j)?(0.0):(mat[k*n+j-sum(k)]);
if(typ == 'U') return (j>k)?(0.0):(mat[k*n+j-sum(n-1)+sum(n-(k+1))]);
Aber ich würde es begrüßen, wenn Sie auch diese Zeile erklären könnte:
if(typ == 'F') return mat[k*n+j];
zu berechnen, * Ich verstehe diese Zeilen nicht: * - Zu breit. Was verstehst du nicht? Die Syntax? Die Formel? Die 'Rückkehr'-Aussage? Der "ternäre Operator"? – PaulMcKenzie
Nimm ein Blatt Papier, zeichne eine U-, L- und eine F-Matrix und zähle die Elemente von 1 bis N auf, dann kannst du verstehen, was dieser Code macht – user463035818
Ich verstehe die Formel nicht (die Begriffe zwischen [...]) – alex403