def Ex1Chapitre2_3(A, B, C): """Provides the correction to exercise 1 of notebook 2_3 :param A: original matrix :type A: list[list] or numpy.ndarray :param B: matrix such that A+B should be diagonal :type B: list[list] or numpy.ndarray :param C: matrix such that A+C should be symmetric and not diagonal :type C: list[list] or numpy.ndarray :return: :rtype: """ if not type(A) is np.ndarray: A = np.array(A) if not type(B) is np.ndarray: B = np.array(B) if not type(C) is np.ndarray: C = np.array(C) ans1 = isDiag(A + B) ans2 = isSym(A + C) and not isDiag(A + C) if ans1 and ans2: display(Latex('Correcte!')) else: display( Latex( 'Incorrect! Entrez des nouvelles valeurs pur le matrices B et C!\n' )) if ans1: display(Latex("A+B est bien diagonale!")) else: display(Latex("A+B est n'est pas diagonale!")) texAB = '$' + texMatrix(A + B) + '$' display(Latex(r"A+B=" + texAB)) if ans2: display(Latex("A+C est bien symétrique et non diagonale!")) elif isSym(A + C) and isDiag(A + C): display( Latex("A+C est bien symétrique mais elle est aussi diagonale!")) else: display(Latex("A + C n'est pas symétrique")) texAC = '$' + texMatrix(A + C) + '$' display(Latex(r"A+C=" + texAC)) return
def correction(a, b, c, d): if c and not (a) and not (d) and not (b): display( Latex( "C'est correct! Par exemple, si on applique le produit à la matrice ci-dessous" )) A = [[1, -1, 0, 0], [0, 0, 0, 1], [1, 2, 1, 2], [1, 0, 0, 1]] B = [[1, 0, 0, 0], [0, 1, 0, -6], [0, 0, 1, 0], [0, 0, 0, 1]] C = [[0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]] BCA = np.linalg.multi_dot([B, C, A]) texA = '$' + texMatrix(A) + '$' texBCA = '$' + texMatrix(BCA) + '$' display(Latex('$\qquad A = $' + texA)) display(Latex("on obtient")) display((Latex('$\qquad \hat{A} = $' + texBCA))) else: display(Latex("C'est faux."))
def correction(a, b, c, d): if c and not a and not b and not d: A = [[14], [6]] texA = '$' + texMatrix(A) + '$' display( Latex(r"C'est correct! Le produit $ AB$ vaut: $AB$ = " + texA)) else: display(Latex("C'est faux."))
def correction(a, b, c, d): if d and not a and not c and not b: A = np.array(([-1, 0, 0], [3, 1 / 2, 0], [1, 2, 1])) res = np.transpose(np.linalg.inv(A)) texAres = '$' + texMatrix(res) + '$' display( Latex("C'est correct! $(A^T)^{-1}$ est donnée par: $\quad$" + texAres)) else: display(Latex("C'est faux."))
def f(): A = np.array([[-1, 2], [5, -2]]) B = np.array([[-1, 1], [a.value, b.value]]) AB = np.dot(A, B) texAB = '$' + texMatrix(AB) + '$' BA = np.dot(B, A) texBA = '$' + texMatrix(BA) + '$' if a.value == 5 / 2 and b.value == -3 / 2: display( Latex(r"Correct! Le produits $AB$ et $BA$ valent chacun: " + texAB)) else: display( Latex(r"Incorrect! Le produit $AB$ vaut " + texAB + r"et par contre le produit " r"$BA$ vaut " + texBA + r". Entrez de nouvelles valeurs!"))
def correction(a, b, c): if a and not b and not c: A1 = np.array([[2, 0, 1], [0, 6, 4], [2, 2, 1]]) A1_inv = np.linalg.inv(A1) texA1inv = '$' + texMatrix(A1_inv) + '$' display( Latex( "C'est correct! $A_1$ est la seule matrice inversible et son inverse est: $\quad A_1^{-1} = $" + texA1inv)) else: display(Latex("C'est faux."))
def f(): A = np.array([[0.5, a.value, 1], [0, 2, -1], [-2, 1, b.value]]) B = np.array([[-6, -2, -2], [4, 2, 1], [8, 3, 2]]) AB = np.dot(A, B) texAB = '$' + texMatrix(AB) + '$' BA = np.dot(B, A) texBA = '$' + texMatrix(BA) + '$' if a.value == -1 and b.value == -2: display( Latex( r"Correct! Le produits $AB$ et $BA$ valent chacun: $I$ = " + texAB)) else: display( Latex(r"Incorrect! Le produit $AB$ vaut " + texAB + r" et le produit " r"$BA$ vaut " + texBA + r", donc $A$ ne peut pas être l'inverse de $B$. " r"Entrez de nouvelles valeurs!"))
def Ex2aChapitre2_5(A, B, T, D, L): """Provides the correction to exercise 2a of notebook 2_5 :param A: starting matrix :type A: list[list] :param B: target matrix :type B: list[list] :param T: permutation (type I) matrix :type T: list[list] :param D: scalar multiplication (type II) matrix :type D: list[list] :param L: linear combination (type III) matrix :type L: list[list] """ if ~(B - np.linalg.multi_dot([L, D, T, A])).any(): display(Latex("C'est correct!")) else: display(Latex("C'est faux.")) str = 'Il faut entrer la/les matrice(s) {' if (np.asmatrix(T) - np.asmatrix([[0, 0, 1], [0, 1, 0], [1, 0, 0]])).any(): str = str + ' T, ' if (np.asmatrix(D) - np.asmatrix([[1, 0, 0], [0, 1, 0], [0, 0, 5]])).any(): str = str + ' D, ' if (np.asmatrix(L) - np.asmatrix([[1, 0, 0], [-4, 1, 0], [0, 0, 1]])).any(): str = str + ' L, ' str = str + '}. Le produit des matrices entrées vaut:' display(Latex(str)) tmp = np.linalg.multi_dot([L, D, T, A]) texM = '$' + texMatrix(tmp) + '$' display(Latex('$\qquad \hat{B} = $' + texM)) return