Deswegen verstehe ich es nicht.
Mit meinem "Nachtrag" werden 35 Kombinationsmöglichkeiten generiert, die jeweils aus 3 Elementen bestehen. Soweit richtig.
In meiner for Schleife habe ich dann i,j und k als Variablen gesetzt und den Index angepasst.
Trotzdem erscheint der Error 'tuple index out of range' mit Verweis auf die erste Zeile der for Schleife.
Schleife für Invertieren
Code: Alles auswählen
import numpy as np
A = np.array( [ [2,4,0,1,1,0,0], [1,1,5,1,0,1,0], [0,1,1,1,0,0,1] ] )
b = np.array( [20,30,10] )
A
Bei einer 7x3-Matrix brauchst Du aber 4 Spalten, die Du löschen mußt, und nicht 3.
Außerdem hast Du nur eine 2D-Matrix, ein shape[2] existiert daher nicht, daher der IndexError.
Um nochmal zum Anfang zurückzukommen: meine zweite Variante des Codes ist der bessere, weil er mit beliebigen Matrizen arbeiten kann.
Außerdem hast Du nur eine 2D-Matrix, ein shape[2] existiert daher nicht, daher der IndexError.
Um nochmal zum Anfang zurückzukommen: meine zweite Variante des Codes ist der bessere, weil er mit beliebigen Matrizen arbeiten kann.
Die Löschvorgabe habe ich leider.
...und immer noch ist "tupel index out of range"
Code: Alles auswählen
import numpy as np
A = np.array( [ [2,4,0,1,1,0,0], [1,1,5,1,0,1,0], [0,1,1,1,0,0,1] ] )
b = np.array( [20,30,10] )
A
Code: Alles auswählen
from itertools import combinations
def comb(arr,r):
return list(combinations(arr,r))
arr = np.array( [0,1,2,3,4,5,6] )
r = 4
print(comb(arr,r))
Code: Alles auswählen
for i,j,k,l in comb(range(A.shape[4]), 2):
teil_von_A = np.delete(A, [i, j, k, l], axis=1)
if np.linalg.det(teil_von_A) != 0:
inverse_von_A = np.linalg.inv(teil_von_A)
x = inverse_von_A.dot(b)
print("Diese x nehmen den Wert 0 an: ", i+1, ",", j+1, ",", k+1, ",", l+1, "\n")
if (x>=0).all():
print("Die übrigen x nehmen folgende Werte an: ", x, "\n\n")
else:
print("Diese Lösung kommt nicht in Frage, weil x negative Werte annimmt\n\n")
else:
print("Diese x nehmen den Wert 0 an: ", i+1, ",", j+1, ",", k+1, ",", l+1, "\n")
print("Diese Lösung kommt nicht in Frage, weil die Matrix nicht invertierbar ist \n\n")
Warum hast du eine Vorgabe, die so vieles komplizierter macht? Beim Programmieren möchte man möglichst allgemeingültige Algorithmen benutzen.
Wieso hast Du jetzt shape[4]? Eine 5 Dimensionale Liste hast Du auch nicht.
Wieso hast Du jetzt shape[4]? Eine 5 Dimensionale Liste hast Du auch nicht.