Apa itu matriks?
Matriks dengan m
kolom dan n
baris mewakili fungsi yang menggunakan vektor * dengan m
elemen (atau koordinat) dan menghasilkan vektor dengan n
elemen.
Dari sini Anda dapat mengamati bahwa jika dan hanya jika sebuah matriks adalah bujur sangkar, maka dimensi vektor tidak akan berubah. Misalnya. Anda mendapatkan vektor 3D dari mentransformasikan vektor 3D, 2D dari 2D, dll.
* : Dalam fisika, vektor biasanya digunakan untuk menunjukkan kekuatan atau "pengaruh" lain yang "bergerak" seperti kecepatan atau percepatan. Tapi tidak ada yang menghentikan Anda dari menggunakan vektor untuk mewakili suatu titik atau sembarang array angka (beberapa perpustakaan dan bahasa pemrograman bahkan menggunakan "vektor" berarti "1D array"). Untuk digunakan dengan matriks, apa pun bisa menjadi elemen dari vektor Anda (bahkan string atau warna), asalkan Anda memiliki cara untuk menambahkan, mengurangi dan mengalikannya dengan apa pun elemen matriks Anda. Karenanya vektor nama , yang berarti "operator" - membawa atau menyimpan nilai untuk Anda.
Apa yang dimaksud dengan mengalikan dengan matriks?
Jadi jika sebuah matriks adalah fungsi, fungsi apa ? Apa fungsinya? Resep untuknya ditentukan oleh elemen-elemen dari matriks. Mari kita sebut input u
, output v
, matriks M
(perkaliannya M*u=v
kemudian sama dengan f(u)=v
) dan u(i)
memberikan i
elemen th u
(elemen ke-2 adalah koordinat y, misalnya). Untuk matriks, M(i,j)
berarti baris i
, kolom j
.
Konstruksi elemen v(1)
, yang pertama dalam hasil, dijelaskan oleh baris pertama dari matriks. u(1)
kali M(1,1)
, plus u(2)
kali M(1,2)
, ... ditambah u(i)
kali M(1,i)
. Matriks sedikit mirip dengan bahasa pemrograman yang sangat sederhana, yang hanya baik untuk fungsi pemrograman yang bekerja dengan mengaduk-aduk input, menambahkannya ke diri mereka sendiri, dll. **
Sangat membantu untuk membayangkan bahwa Anda bekerja pada satu elemen output pada suatu waktu, karenanya, Anda hanya menggunakan satu baris matriks pada suatu waktu. Anda menulis u
secara horizontal. Anda menulis baris ke-i M
di bawahnya. Anda mengalikan setiap pasangan di atas / di bawah ini dan menulis produk di bawah ini, lalu menambahkan produk. Ulangi untuk setiap baris untuk mendapatkan setiap elemen v
. (Sekarang Anda melihat mengapa m
by by n
matrix harus beroperasi pada m
vektor dan menghasilkan n
vektor.)
Cara lain untuk berpikir tentang ini - katakanlah kita sedang melakukan transformasi 3D ke 3D, jadi matriks 3x3 (atau transformasi 3D seperti yang sering disebut karena Anda dapat berpura-pura "fungsi" ini adalah "memindahkan" poin 3D, meskipun sebenarnya ini hanya mengubah angka). Katakanlah baris pertama adalah [1 2 0]
. Ini berarti, untuk mendapatkan x hasil, dapatkan 1 dari input x, 2 dari input y, dan 0 dari input z. Jadi itu benar-benar resep.
** : Jika sebuah matriks adalah bahasa pemrograman, maka itu bahkan Turing tidak lengkap.
Apa yang dimaksud dengan mengalikan dua matriks?
Jika mereka berdua matriks ukuran yang sesuai, maka A*B
berarti "fungsi yang berlaku pertama B
kemudian A
". Anda dapat melihat mengapa kendala pada ukuran untuk perkalian ada, karena ukuran menentukan ukuran input dan output, dan satu matriks mengkonsumsi output yang lain. Mengapa multiplikasi berarti menggabungkan fungsi? Lebih mudah untuk memperhatikan bahwa itu harus terjadi. Jika A*u
sama dengan f(u)
dan B*u
sama dengan g(u)
maka f(g(u))
sama dengan f(B*u)
yang sama dengan A*(B*u)
.
Demikian juga, aplikasi berulang dari fungsi yang sama dapat ditampilkan sebagai kekuatan, karena A*A*A
berarti menerapkan fungsi yang A
mewakili tiga kali.
Bagaimana matriks bermanfaat?
Apa gunanya melakukan transformasi new_x = 1*x+2*y+0*z
(jika baris pertama adalah [1 2 0])? Itu tidak terlalu jelas, tetapi mari kita ambil matriks 2D lain untuk menjelaskannya. Matriksnya adalah:
[ 0 1
1 0 ]
Atau [0 1; 1 0]
menggunakan notasi Matlab yang nyaman. Apa yang dilakukan matriks ini? Ini mengubah vektor 2D seperti: Untuk x hasil, ambil 1 dari y input. Untuk hasil y, ambil 1 dari x input. Kami baru saja menukar koordinat x dan y dari input - matriks ini mencerminkan poin tentang garis x = y. Itu semacam berguna! Dengan ekstensi, Anda akan melihat bahwa semua matriks dengan 1s di sepanjang garis SW - NE mencerminkan. Anda juga dapat melihat mengapa matriks identitas memberi Anda kembali input (untuk x output, mengambil x input; untuk y output, mengambil y input ...).
Sekarang Anda melihat mengapa simbol-simbol itu misalnya. Xx
, Yx
- mereka berarti berapa banyak masukan X
, Y
dll masuk ke keluaran x
.
Bagaimana lagi matriks bermanfaat?
Transformasi apa lagi yang bisa Anda lakukan? Anda dapat mengubah ukuran dengan mengambil matriks identitas, tetapi dengan nomor yang berbeda dari 1 sepanjang diagonal. Misalnya, [2.5 0; 0 22.5]
akan mengalikan setiap koordinat input dengan 2,5, dan jika Anda menerapkan matriks ini untuk setiap titik dalam gambar, gambar akan menjadi 2,5 besar. Jika Anda hanya meletakkan 2,5 dalam satu baris ( [2.5 0; 0 1]
) maka hanya koordinat x yang akan dikalikan, sehingga Anda hanya akan meregangkan sepanjang x.
Matriks lain dapat memberikan transformasi lain, seperti "condong", yang memiliki berbagai tingkat kegunaan. Secara pribadi, condong adalah favorit saya paling tidak karena matriks terlihat sangat sederhana tetapi transformasi itu sendiri jarang melakukan apa pun kecuali memotong-motong gambar. Yang bermanfaat adalah "rotasi" - bagaimana Anda memutar titik? Coba (x, y)
cari posisi titik setelah berputar dengan theta
derajat berlawanan arah jarum jam tentang asalnya. Anda akan menemukan bahwa koordinat x dan y baru keluar dari mengalikan x dan y lama dengan beberapa sinus dan cosinus theta. Anda harus dapat dengan mudah menulis matriks rotasi menggunakan sinus dan cosinus yang sesuai dengan fungsi ini.
Dengan matriks non-kuadrat, Anda juga dapat mengubah dimensi input. Mengubah input 2D menjadi 3D tidak terlalu berguna, karena sulit untuk "membuat" sesuatu untuk dimasukkan ke dalam koordinat baru, tetapi 3D menjadi 2D sangat berguna. Antara lain, ini adalah bagaimana komputer Anda tahu untuk proyek *** adegan 3D menjadi gambar 2D untuk menggambar pada monitor Anda.
Karena vektor dapat menampung hal-hal yang berbeda, Anda bahkan dapat mendeskripsikan sebuah matriks yang mengenkripsi string n-karakter sekaligus, dengan mengocoknya atau "mengalikannya" (Anda harus membuat fungsi perkalian / penjumlahan).
*** : Saat Anda memproyeksikan , Anda mengambil objek 3D seperti patung, menyorotinya, dan melihat bayangan 2D seperti apa yang jatuh di dinding.
Apa batasan dari matriks?
Bisakah Anda melakukan setiap fungsi dengan matriks? Tidak. Berpikir secara grafik, sulit membayangkan sesuatu yang tidak bisa dilakukan oleh sebuah matriks (tetapi ada: efek "swirl" tidak dapat dilakukan, misalnya). Namun, inilah contoh yang mudah: Katakanlah fungsi f
sedemikian rupa sehingga f(u)
memberi Anda kembali u
dengan setiap elemen kuadrat . Anda akan melihat bahwa Anda tidak dapat menulis matriks untuk ini: Dengan matriks hanya ada fasilitas untuk menggambarkan resep yang mengalikan koordinat dengan angka konstan, tidak ada fungsi mewah lainnya seperti daya dapat diekspresikan.
**** : Ini juga mengapa disebut aljabar linier - fungsi daya non-linear , tidak membuat garis lurus saat diplot.
Pada baris tambahan aneh dalam matriks 4D
Sekarang, mengapa matriks dalam contoh Anda 4 oleh 4? Bukankah ini berarti ruang 4 dimensi? Kami tidak memiliki komputer 4D, jadi mengapa? Ini sebenarnya adalah trik yang menarik dengan matriks yang berhubungan dengan poin sebelumnya tentang operasi linier.
Mengenai fungsi mana yang tidak dapat dilakukan dengan matriks: Apa matriks untuk memindahkan titik 2D dengan 2 unit ke kanan (yang menghasilkan titik (x+2, y)
? Sekali lagi, kita terjebak. Ada cara untuk mengalikan input, tetapi tidak ada cara untuk menambahkan konstanta. Untuk pekerjaan 2D, triknya adalah berpura-pura Anda sebenarnya tidak berada dalam ruang 2D, tetapi dalam ruang 3D, kecuali ketinggian (z koordinat atau elemen ke-3) dari semuanya selalu 1 (ini seperti bagaimana alam semesta 2D adalah hanya "piring" yang terbentang rata di sepanjang lantai alam semesta 3D - dalam hal ini koordinat ketiga selalu 0.) Kemudian Anda dapat menggunakan koordinat terakhir sihir ini sebagai konstanta, karena Anda tahu selalu ada 1 untuk setiap input.
Demikian juga, untuk memindahkan titik 3D, Anda memerlukan koordinat 4D. Itu juga mengapa semua matriks transformasi 3D yang Anda lihat akan memiliki [0 0 0 1]
sebagai baris terakhir - Anda tidak boleh mengubah dimensi ke-4, atau hasilnya akan terlalu rumit untuk diwakili dalam 3D!