Jacobi Iterationsverfahren

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Jacobi Iterationsverfahren
Hallo,
ich verstehe das Jacobi Verfahren nicht. Wo ist der Unterschied zu Gauss-Seidel?
Und ich verstehe den Code dazu in den Vorlesungsfolien nicht. x ist doch immer 0, weil er nirgends verändert wird. Dementsprechend müssten auch left und right immer 0 sein. und while eine Endlosschleife, weil weder A, noch b noch x verändert werden.

x = np.zeros((n,1))
while np.linalg.norm(b - A @ x) > eps:
x_new = np.zeros((n,1))
for k in range(n):
left = sum(a[k,0:k] * x[0:k,0])
right = sum(a[k,k+1:] * x[k+1:,0])
x_new[k] = (b[k] - left - right)/a[k,k]
return x_new

Danke schon mal!


Das Jacobi Verfahren und Gauss-Seidel sind sehr ähnlich.
Der große Unterschied ist, dass beim Gauss-Seidel die neuen Werte direkt benutzt werden.
Bei Jacobi werden die neuen Werte erst in dem nächsten Iterationsschritt benutzt.

Steht auch so da bei der Folie da als Nachteil.
Der Vorteil von Jacobi ist, dass die Schleife so unabhängig ist und man sehr einfach parallelisieren kann.
Eine andere Möglichkeit ist Red-Black-Gauß-Seidel.

In dem Code fehlt vermutlich am Ende der Schleife ein Swap:

x , x_new = x_new, x