Macierze¶
Przykłady sybolicznych i numerycznych działań na macierzach przy pomocy biblioteki sympy.
Wynki sformatowane za pomocą genaratora równań matematycznych TaTeX.
from sympy import symbols, Matrix, latex
from IPython.display import display, Markdown
# funkcje pomocnicze
def create_symbolic_matrix(symbol, rows, cols):
"""
Tworzy symboliczną macierz o podanym symbolu, liczbie wierszy i kolumn.
:param symbol: Symbol podstawowy (np. 's')
:param rows: Liczba wierszy macierzy
:param cols: Liczba kolumn macierzy
:return: Symboliczna macierz (sympy.Matrix)
"""
# Tworzenie listy symboli w formacie s_{ij}
elements = [
symbols(f"{symbol}_{i+1}{j+1}") for i in range(rows) for j in range(cols)
]
# Przekształcenie listy w macierz
return Matrix(rows, cols, elements), elements
def assign_values_to_symbols(symbol, values):
"""
Tworzy słownik przypisujący wartości symbolom z tablicy symboli.
"""
if (len(symbol) != len(values)):
raise ValueError("Wymiary macierzy symboli i wartości muszą się zgadzać.")
# Tworzenie listy
return list(zip(symbol, values))
# tworzenie macierzy
A, a = create_symbolic_matrix('a', 3, 3)
B, b = create_symbolic_matrix('b', 3, 3)
C, c = create_symbolic_matrix('b', 2, 2)
D, d = create_symbolic_matrix('b', 2, 3)
E, e = create_symbolic_matrix('b', 3, 2)
F, f = create_symbolic_matrix('b', 4, 4)
# podstawienie wartości do składnikó macierzy A
va = assign_values_to_symbols(a, [2,2,3,11,12,13,21,22,23])
# podstawienie wartości do macierzy
vA = A.subs(va)
# wyniki w postaci genaratora równań LaTex
latex_code = fr"""
\begin{{array}}{{l}}
{latex(A)}^T={latex(A.T)} \\ \\
{latex(A)}+{latex(B)}={latex(A+B)} \\ \\
2*{latex(B)}={latex(2*B)} \\ \\
{latex(A)}*{latex(B)}={latex(A*B)} \\ \\
{latex(D)}*{latex(E)}={latex(D*E)} \\ \\
det {latex(C)}={latex(C.det())} \\ \\
|M|{latex(A)}={latex(A.det())}=\\
={latex(vA)}={latex(vA.det())}
\end{{array}}
"""
# Wyświetlanie w Jupyter Notebook jako MarkDown
display(Markdown(latex_code))
\begin{array}{l} \left[\begin{matrix}a_{11} & a_{12} & a_{13}\\a_{21} & a_{22} & a_{23}\\a_{31} & a_{32} & a_{33}\end{matrix}\right]^T=\left[\begin{matrix}a_{11} & a_{21} & a_{31}\\a_{12} & a_{22} & a_{32}\\a_{13} & a_{23} & a_{33}\end{matrix}\right] \\ \\ \left[\begin{matrix}a_{11} & a_{12} & a_{13}\\a_{21} & a_{22} & a_{23}\\a_{31} & a_{32} & a_{33}\end{matrix}\right]+\left[\begin{matrix}b_{11} & b_{12} & b_{13}\\b_{21} & b_{22} & b_{23}\\b_{31} & b_{32} & b_{33}\end{matrix}\right]=\left[\begin{matrix}a_{11} + b_{11} & a_{12} + b_{12} & a_{13} + b_{13}\\a_{21} + b_{21} & a_{22} + b_{22} & a_{23} + b_{23}\\a_{31} + b_{31} & a_{32} + b_{32} & a_{33} + b_{33}\end{matrix}\right] \\ \\ 2*\left[\begin{matrix}b_{11} & b_{12} & b_{13}\\b_{21} & b_{22} & b_{23}\\b_{31} & b_{32} & b_{33}\end{matrix}\right]=\left[\begin{matrix}2 b_{11} & 2 b_{12} & 2 b_{13}\\2 b_{21} & 2 b_{22} & 2 b_{23}\\2 b_{31} & 2 b_{32} & 2 b_{33}\end{matrix}\right] \\ \\ \left[\begin{matrix}a_{11} & a_{12} & a_{13}\\a_{21} & a_{22} & a_{23}\\a_{31} & a_{32} & a_{33}\end{matrix}\right]*\left[\begin{matrix}b_{11} & b_{12} & b_{13}\\b_{21} & b_{22} & b_{23}\\b_{31} & b_{32} & b_{33}\end{matrix}\right]=\left[\begin{matrix}a_{11} b_{11} + a_{12} b_{21} + a_{13} b_{31} & a_{11} b_{12} + a_{12} b_{22} + a_{13} b_{32} & a_{11} b_{13} + a_{12} b_{23} + a_{13} b_{33}\\a_{21} b_{11} + a_{22} b_{21} + a_{23} b_{31} & a_{21} b_{12} + a_{22} b_{22} + a_{23} b_{32} & a_{21} b_{13} + a_{22} b_{23} + a_{23} b_{33}\\a_{31} b_{11} + a_{32} b_{21} + a_{33} b_{31} & a_{31} b_{12} + a_{32} b_{22} + a_{33} b_{32} & a_{31} b_{13} + a_{32} b_{23} + a_{33} b_{33}\end{matrix}\right] \\ \\ \left[\begin{matrix}b_{11} & b_{12} & b_{13}\\b_{21} & b_{22} & b_{23}\end{matrix}\right]*\left[\begin{matrix}b_{11} & b_{12}\\b_{21} & b_{22}\\b_{31} & b_{32}\end{matrix}\right]=\left[\begin{matrix}b_{11}^{2} + b_{12} b_{21} + b_{13} b_{31} & b_{11} b_{12} + b_{12} b_{22} + b_{13} b_{32}\\b_{11} b_{21} + b_{21} b_{22} + b_{23} b_{31} & b_{12} b_{21} + b_{22}^{2} + b_{23} b_{32}\end{matrix}\right] \\ \\ det \left[\begin{matrix}b_{11} & b_{12}\\b_{21} & b_{22}\end{matrix}\right]=b_{11} b_{22} - b_{12} b_{21} \\ \\ |M|\left[\begin{matrix}a_{11} & a_{12} & a_{13}\\a_{21} & a_{22} & a_{23}\\a_{31} & a_{32} & a_{33}\end{matrix}\right]=a_{11} a_{22} a_{33} - a_{11} a_{23} a_{32} - a_{12} a_{21} a_{33} + a_{12} a_{23} a_{31} + a_{13} a_{21} a_{32} - a_{13} a_{22} a_{31}=\\ =\left[\begin{matrix}2 & 2 & 3\\11 & 12 & 13\\21 & 22 & 23\end{matrix}\right]=-10 \end{array}
Tabelki¶
from IPython.display import display, Latex
latex_code = r"""
\begin{array}{|c|c|c|}
\hline
x & y & x \land y \\ \hline
0 & 0 & 0 \\
0 & 1 & 0 \\
1 & 0 & 0 \\
1 & 1 & 1 \\
\hline
\end{array}
"""
display(Markdown(latex_code))
\begin{array}{|c|c|c|} \hline x & y & x \land y \\ \hline 0 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 1 \\ \hline \end{array}