
Modul kecil untuk bekerja dengan array di Python tanpa menggunakan perpustakaan pihak ketiga (klon NumPy, tetapi hanya dalam Python murni).
Pekerjaan rumah di universitas diminta untuk menulis sebuah program yang menghitung norma dan dekomposisi dari matriks, tetapi dilarang untuk menggunakan perpustakaan pihak ketiga. Pilihan bahasa pemrograman tidak terbatas. Saya memilih python (yang merupakan kesalahan, karena jauh lebih lambat daripada Java dan C / C ++) dan karenanya saya tidak bisa menggunakan NumPy. Dalam prosesnya, saya harus menulis fungsi untuk melakukan operasi dengan array, fungsi untuk menemukan anak di bawah umur, penentu, dll. Hasilnya adalah perpustakaan mini untuk bekerja dengan array.
Kode python murni saya jauh lebih lambat daripada NumPy, yang menghitung C dan Fortran (ditambah kode saya tidak dioptimalkan).
Apa yang bisa MatLOL:
- Jumlah, perbedaan, dan produk matriks
- Produk matriks dengan nomor
- Matriks Transpose
- Matriks minor
- Penentu matriks
- Matriks terbalik
- Matriks gabungan
- Nomor kondisi matriks
- Yang pertama, kedua (tidak difinalisasi), norma-norma Euclidean dan matriks tak terbatas
- Solusi dari persamaan AX = B
- Dekomposisi LU
- Dekomposisi Cholesky
- Metode Seidel
Contoh MathLOL
Impor modul:
Inisialisasi matriks
matrix = mathlol() matrix.set([[1, 2, 3], [4, 5, 6], [7, -8, 9]]) matrix.get()
Beberapa operasi matriks
matrix * 2
Ada juga fungsi untuk bekerja dengan vektor
vector = mathlol() vector.set([1, 2, 3, 4, 5]) vector.checkvector()
Contoh lainnyaKinerja MathLOL
Mari kita lihat kecepatan produk komputasi dari matriks ukuran NxN. Matriks diisi dengan bilangan bulat acak dari -100 hingga 100.
Kode from mathlol import mathlol import time import random import matplotlib.pyplot as plt

Kecepatan menghitung ukuran produk matriks dari 100x100 hingga 1000x1000

Bandingkan kecepatan komputasi numpy dan mathlol. Sayangnya, mathlol sangat lambat dalam kecepatan dan saya memutuskan untuk mengambil matriks untuk ukuran matriks numpy dari 100x100 ke 1000x1000, dan untuk mathlol dari 10x10 hingga 100x100.

MathLOL menghitung produk dari matriks 100x100 dengan sendirinya dalam 0,16 detik, dan NumPy menghitung produk dari matriks 1000x1000 dengan sendirinya dalam 0,002 (!!!) detik. Perbedaannya sangat besar.
Tugas kami hanyalah mengimplementasikan berbagai fungsi untuk bekerja dengan matriks, yang kami lakukan, tetapi program dengan matriks besar tidak bekerja secepat yang kami inginkan. Tetap memperbaiki program, menambahkan beberapa fungsi lagi (misalnya, fungsi untuk menghitung angka Todd), saya akan berterima kasih jika Anda melihat kode, menunjukkan kesalahan, dan mungkin membantu memperbaiki kode.
Itu saja, kode dan contoh diposting di
github .
PS Dalam proses menulis artikel, saya ingin bereksperimen dan menanamkan C / C ++ dalam modul saya. Saya akan mengurus ini dalam waktu dekat dan melihat seberapa dekat dengan kinerja NumPy.