0 Daumen
585 Aufrufe

Aufgabe:

Hallo alle zusammen!

Ich versuche einen Code in Python zu programmieren um die LU-Zerlegung einer Bandmatrix mit dem Crout-Algorithmus zu berechnen. Ich habe bereits einen Code programmiert komme aber nicht auf das richtige Ergebnis

Könnt ihr mir weiter helfen?


Problem/Ansatz:

def crout(A, q, p):
  n = len(A)
  L = [[0] * n for i in range(n)]
  U = [[0] * n for i in range(n)]
  for j in range(n):
      L[j][j] = 1

  for i in range(n):
      for k in range(i, min(q+i,n)):
          sum = 0
          for j in range(i-p,i-1):
              sum = sum + L[i][j]*U[j][k]

          U[i][k] = A[i][k] - sum

      for k in range(i+1, min(p+i,n)):
          sum = 0
          for j in range(i-q,i-1):
              sum = sum + L[k][j]*U[j][i]

          L[k][i] = int((A[k][i]-sum)/U[i][i])
  return(L,U)

Avatar von

1 Antwort

0 Daumen

Hm,

Sollte L nicht die Einheitsmatrix sein - Ach, die machst Du später...

Gib mal ein paar Daten/beispiele dazu an...

Crout-Algorithmus

L = Einheitsmatrix
U = Ausgangsmatrix
für alle Spalten k = 1 bis n
  für jede Zeile von i = k + 1 bis n
      lik = uik / ukk
      uik = 0
      für alle Spalten j = k + 1 bis n
          uij = uij - lik ukj
      End
  End
End

Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community