SymPy - Matrisler
Matematikte bir matris, iki boyutlu bir sayılar, semboller veya ifadeler dizisidir. Matris manipülasyonu teorisi, belirli kurallara tabi olarak matris nesneleri üzerinde aritmetik işlemlerin gerçekleştirilmesi ile ilgilidir.
Doğrusal dönüşüm, matrislerin önemli uygulamalarından biridir. Özellikle Fizik ile ilgili birçok bilimsel alan matris ile ilgili uygulamaları kullanır.
SymPy paketi, matris işlemeyi ele alan matris modülüne sahiptir. Nesnesi bir matrisi temsil eden Matrix sınıfını içerir.
Note: If you want to execute all the snippets in this chapter individually, you need to import the matrix module as shown below −
>>> from sympy.matrices import Matrix
Example
>>> from sympy.matrices import Matrix
>>> m=Matrix([[1,2,3],[2,3,1]])
>>> m
$\displaystyle \left[\begin{matrix}1 & 2 & 3\\2 & 3 & 1\end{matrix}\right]$
Yukarıdaki komutu python kabuğunda çalıştırırken, aşağıdaki çıktı üretilecektir -
[1 2 3 2 3 1]
Matris, uygun şekilde boyutlandırılmış List nesnelerinden oluşturulur. Liste öğelerini belirtilen sayıda satır ve sütuna dağıtarak da bir matris elde edebilirsiniz.
>>> M=Matrix(2,3,[10,40,30,2,6,9])
>>> M
$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$
Yukarıdaki komutu python kabuğunda çalıştırırken, aşağıdaki çıktı üretilecektir -
[10 40 30 2 6 9]
Matrix değiştirilebilir bir nesnedir. Matris modülü ayrıca, değişmez matris elde etmek için ImmutableMatrix sınıfı sağlar.
Temel manipülasyon
shape Matrix nesnesinin özelliği boyutunu döndürür.
>>> M.shape
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
(2,3)
Row () ve col () yöntemi sırasıyla belirtilen sayının satır veya sütununu döndürür.
>>> M.row(0)
$\displaystyle \left[\begin{matrix}10 & 40 & 30\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[10 40 30]
>>> M.col(1)
$\displaystyle \left[\begin{matrix}40\\6\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[40 6]
Satır veya sütuna ait bir veya daha fazla öğeyi getirmek için Python'un dilim operatörünü kullanın.
>>> M.row(1)[1:3]
[6, 9]
Matrix sınıfı, belirli bir matristen belirtilen satırı / sütunu silen row_del () ve col_del () yöntemlerine sahiptir -
>>> M=Matrix(2,3,[10,40,30,2,6,9])
>>> M.col_del(1)
>>> M
Yukarıdaki komutu python kabuğunda çalıştırırken, aşağıdaki çıktı üretilecektir -
Matrix([[10, 30],[ 2, 9]])
Aşağıdaki komutu kullanarak çıktıya stil uygulayabilirsiniz -
$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[10 30 2 9]
>>> M.row_del(0)
>>> M
$\displaystyle \left[\begin{matrix}2 & 9\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[2 9]
Benzer şekilde, row_insert () ve col_insert () yöntemleri, belirtilen satır veya sütun dizinine satır veya sütun ekler
>>> M1=Matrix([[10,30]])
>>> M=M.row_insert(0,M1)
>>> M
$\displaystyle \left[\begin{matrix}10 & 30\\2 & 9\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[10 40 30 2 9]
>>> M2=Matrix([40,6])
>>> M=M.col_insert(1,M2)
>>> M
$\displaystyle \left[\begin{matrix}10 & 40 & 30\\2 & 6 & 9\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[10 40 30 6 9]
Aritmetik işlemler
Genel +, - ve * operatörleri toplama, çıkarma ve çarpma işlemlerini gerçekleştirmek için tanımlanmıştır.
>>> M1=Matrix([[1,2,3],[3,2,1]])
>>> M2=Matrix([[4,5,6],[6,5,4]])
>>> M1+M2
$\displaystyle \left[\begin{matrix}5 & 7 & 9\\9 & 7 & 5\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[5 7 9 9 7 5]
>>> M1-M2
$\displaystyle \left[\begin{matrix}-3 & -3 & -3\\-3 & -3 & -3\end{matrix}\right]$
Yukarıdaki kod parçacığını çalıştırdıktan sonra aşağıdaki çıktıyı alırsınız -
[- 3 -3 -3 -3 -3 -3]
Matris çarpımı yalnızca şu durumlarda mümkündür - 1. matrisin sütun sayısı 2. matrisin satır sayısına eşit olmalıdır. - Ve sonuç, 1. matris ile aynı sayıda satıra ve 2. matris ile aynı sayıda sütuna sahip olacaktır.
>>> M1=Matrix([[1,2,3],[3,2,1]])
>>> M2=Matrix([[4,5],[6,6],[5,4]])
>>> M1*M2
$\displaystyle \left[\begin{matrix}31 & 29\\29 & 31\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[31 29 29 31]
>>> M1.T
$\displaystyle \left[\begin{matrix}1 & 3\\2 & 2\\3 & 1\end{matrix}\right]$
Kod çalıştırıldıktan sonra aşağıdaki çıktı elde edilir -
[1 3 2 2 3 1]
Bir matris determinantını hesaplamak için det () yöntemini kullanın. Belirleyici, bir kare matrisin öğelerinden hesaplanabilen skaler bir değerdir.
>>> M=Matrix(3,3,[10,20,30,5,8,12,9,6,15])
>>> M
$\displaystyle \left[\begin{matrix}10 & 20 & 30\\5 & 8 & 12\\9 & 6 & 15\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[10 20 30 5 8 12 9 6 15]
>>> M.det()
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
-120
Matris Oluşturucular
SymPy birçok özel tipte matris sınıfı sağlar. Örneğin, Kimlik matrisi, tüm sıfır ve birlerin matrisi vb. Bu sınıflar sırasıyla göz, sıfır ve birler olarak adlandırılır. Özdeşlik matrisi, köşegen üzerine düşen elemanların 1'e ayarlandığı, diğer elemanların 0 olduğu bir kare matristir.
Example
from sympy.matrices import eye eye(3)
Output
Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[1 0 0 0 1 0 0 0 1]
Diag matrisinde, köşegen üzerindeki elemanlar sağlanan argümanlara göre başlatılır.
>>> from sympy.matrices import diag
>>> diag(1,2,3)
$\displaystyle \left[\begin{matrix}1 & 0 & 0\\0 & 2 & 0\\0 & 0 & 3\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[1 0 0 0 2 0 0 0 3]
Sıfır matrisindeki tüm elemanlar 0 olarak başlatılır.
>>> from sympy.matrices import zeros
>>> zeros(2,3)
$\displaystyle \left[\begin{matrix}0 & 0 & 0\\0 & 0 & 0\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[0 0 0 0 0 0]
Benzer şekilde, birler tüm öğeleri 1'e ayarlanmış matristir.
>>> from sympy.matrices import ones
>>> ones(2,3)
$\displaystyle \left[\begin{matrix}1 & 1 & 1\\1 & 1 & 1\end{matrix}\right]$
Yukarıdaki kodun çıktısı aşağıdaki gibidir -
[1 1 1 1 1 1]