Remplacer une valeur d'une matrice dans sage
Bonsoir
Je vous expose mon souci. Je travaille avec des matrices sur SAGE et à un moment donné, j'ai envie de changer la valeur d'un certain coefficient dans ma matrice mais SAGE me renvoie alors le message d'erreur suivant: "a vector is immutable". En revanche il est toujours possible de modifier la valeur d'une ligne ou d'une colonne, mais ce n'est pas ce que je veux car je travaille avec des matrices très grandes, ce n'est pas pratique.
Exemple. Soit $
A = \left( \begin{array}{cc}
0 & 0 \\
0 & 0 \end{array} \right).
$ J'ai envie de la modifier pour obtenir : $
\tilde{A} = \left( \begin{array}{cc}
1 & 0 \\
0 & 0 \end{array} \right).$
Comment vous coderiez ceci, sachant que je ne veux pas avoir à modifier toute une ligne ou toute une colonne ?
Merci d'avance,
Bonne soirée.
Je vous expose mon souci. Je travaille avec des matrices sur SAGE et à un moment donné, j'ai envie de changer la valeur d'un certain coefficient dans ma matrice mais SAGE me renvoie alors le message d'erreur suivant: "a vector is immutable". En revanche il est toujours possible de modifier la valeur d'une ligne ou d'une colonne, mais ce n'est pas ce que je veux car je travaille avec des matrices très grandes, ce n'est pas pratique.
Exemple. Soit $
A = \left( \begin{array}{cc}
0 & 0 \\
0 & 0 \end{array} \right).
$ J'ai envie de la modifier pour obtenir : $
\tilde{A} = \left( \begin{array}{cc}
1 & 0 \\
0 & 0 \end{array} \right).$
Comment vous coderiez ceci, sachant que je ne veux pas avoir à modifier toute une ligne ou toute une colonne ?
Merci d'avance,
Bonne soirée.
Réponses
-
sage: A = Matrix([[0,0],[0,0]]) sage: A [0 0] [0 0] sage: A[0,0]=1 sage: A [1 0] [0 0] sage: A[0][0]=2 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-5-c3b586c9fbbe> in <module>() ----> 1 A[Integer(0)][Integer(0)]=Integer(2) /home/jerome/lib/SageMath/local/lib/python2.7/site-packages/sage/modules/free_module_element.pyx in sage.modules.free_module_element.FreeModuleElement.__setitem__ (build/cythonized/sage/modules/free_module_element.c:13064)() 1788 """ 1789 if not self._is_mutable: -> 1790 raise ValueError("vector is immutable; please change a copy instead (use copy())") 1791 cdef Py_ssize_t d = self._degree 1792 cdef Py_ssize_t start, stop, step, slicelength ValueError: vector is immutable; please change a copy instead (use copy())
-
J'ai trouvé ceci comme solution.
def remplacer_valeur_matrice(A,i,j,x): temp = A[ i].list()[:j] + [x] + A[ i].list()[j+1:] A[ i] = temp return A
-
Voilà le code que je propose :-)
-
Bis.
sage: A = Matrix([[0,0],[0,0]]) sage: A [0 0] [0 0] sage: A[0,0]=1 sage: A [1 0] [0 0]
-
Ah oui effectivement, merci ! C'est beaucoup mieux !
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.1K Toutes les catégories
- 7 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 52 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 62 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 312 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 772 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres