TI/Operacje na macierzach
Macierzą nazywamy tablicę dwuwymiarową.
import numpy
A = numpy.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
- Przypomnienienie
Elementy macierzy indeksuje się podając numer wiersza i kolumny. W Numpy, jak to w Pythonie, zaczynając od 0.
Wymiary macierzy możemy uzyskać korzystając z funkcji numpy.shape:
wiersze,kolumny = numpy.shape(A)
Do wytwarzania macierzy o losowych elementach całkowitych (np. do testowania funkcji) przydać się może wyrażnie analogiczne do: A = np.random.randint(10,size = (3,3))
Spis treści
Zadanie: ślad macierzy
Śladem macierzy nazywamy sumę elementów na głównej przekątnej macierzy kwadratowej. Po angielsku ślad to trace i dlatego ślad oznacza się symbolem Tr.
- [math] \mathrm{Tr}\ A = \sum_i A_{ii} [/math]
Napisz funkcję obliczającą ślad macierzy.
Zadanie: transpozycja macierzy w miejscu
Transpozycją macierzy nazywamy macierz odbitą wzdłuż głównej przekątnej. Matematycznie wyrażą się to wzorem:
- [math] \left(A^\mathrm{T}\right)_{ij} = A_{ji} [/math]
Napisz funkcję transponującą macierz kwadratową w miejscu, czyli bez tworzenia nowej macierzy, poprzez zamianę elementów parami.
Zadanie: ogólna transpozycja macierzy
Napisz funkcję która zwróci transponowaną macierz, niekoniecznie kwadratową.
Użyj funkcji numpy.empty do stworzenia macierzy wynikowej, a następnie wypełnij ja w pętli.
Zadanie: mnożenie macierzy
Mnożąc macierz [math]A[/math] o wymiarze [math]n \times p[/math] z macierzą [math]B[/math] o wymiarze [math]p \times m[/math], otrzymujemy macierz [math]C[/math] o wymiarze [math]n \times m[/math]. Element [math] C_{ij} [/math] przedstawia się wzorem:
- [math] C_{ij}=\sum_k A_{ik}B_{kj} [/math]
Napisz funkcję mnożącą macierz A z macierzą B. Użyj funkcji numpy.zeros do stworzenia macierzy wynikowej, a następnie wypełnij ja w pętli.
Zadanie: wyznacznik macierzy
Jeżeli [math]M[/math] jest macierzą kwadratową o wymiarze [math]n[/math], rekurencyjna definicja wyznacznika przedstawia się wzorem:
- [math] \left| M \right| = \sum_{k=1}^{n}(-1)^{i+k}a_{ik} \left| M_{/i /k}\right| [/math]
gdzie [math]i[/math] jest dowolne, a [math]M_{/i /k}[/math] oznacza macierz o wymiarze zmiejszonym o 1, przez wykasowanie wiersza [math]i[/math] i kolumny [math]k[/math]. Uwaga: w powyższym wzorze zakłada się, że indeksy elementów macierzy M są numerowane od 1.
Napisz funkcję obliczającą ten wyznacznik (rekurencyjnie).
Do wykorzystania mogą przydać się: numpy.delete albo numpy.r_.