1 poin oleh GN⁺ 2024-03-01 | 1 komentar | Bagikan ke WhatsApp

Keunggulan SymPy

  • Gratis: SymPy yang mengikuti lisensi BSD dapat digunakan secara bebas tanpa biaya.
  • Berbasis Python: SymPy ditulis sepenuhnya dalam Python dan menggunakan Python.
  • Ringan: SymPy hanya bergantung pada mpmath, pustaka Python murni untuk komputasi floating-point presisi arbitrer, sehingga mudah digunakan.
  • Pustaka: Selain dipakai sebagai alat interaktif, SymPy juga dapat disematkan ke aplikasi lain atau diperluas dengan fungsi kustom.

Proyek yang menggunakan SymPy

  • Cadabra: Sistem aljabar tensor dan teori medan (kuantum) yang menggunakan SymPy untuk operasi aljabar skalar.
  • ChemPy: Paket yang berguna untuk kimia dan ditulis dalam Python.
  • devito: DSL simbolik dan compiler just-in-time untuk komputasi stencil berkinerja tinggi.
  • EinsteinPy: Paket Python untuk relativitas umum simbolik dan numerik.
  • galgebra: Aljabar geometri (sebelumnya sympy.galgebra).
  • LaTeX Expression project: Memudahkan typesetting LaTeX untuk ekspresi aljabar serta memungkinkan substitusi otomatis dan perhitungan hasil.
  • Lcapy: Paket Python eksperimental untuk pendidikan analisis rangkaian linear.
  • OctSymPy: Paket simbolik untuk Octave yang menggunakan SymPy.
  • Optlang: Paket Python untuk menyelesaikan masalah optimisasi matematis.
  • PyDy: Dinamika benda banyak di Python.
  • pyneqsys: Didefinisikan secara simbolik untuk menyelesaikan sistem persamaan nonlinier secara numerik.
  • pyodesys: Integrasi numerik sederhana untuk sistem ODE di Python.
  • PyTorch TorchInductor: TorchInductor yang menggunakan SymPy untuk mendukung shape dan stride dinamis.
  • QMCPACK: Quantum Monte Carlo di C++; menggunakan SymPy untuk menghasilkan nilai referensi bagi unit test dan sebagian pembuatan kode.
  • Quantum Programming in Python: Osilator harmonik sederhana kuantum 1D dan gerbang pemetaan kuantum.
  • SageMath: Sistem matematika open source yang mencakup SymPy.
  • Scikit-fdiff: Diskretisasi finite difference.
  • SfePy: Finite element sederhana di Python.
  • Spyder: Lingkungan pengembangan Python ilmiah yang setara dengan Rstudio atau MATLAB; dukungan penuh SymPy tersedia di konsol IPython milik Spyder.
  • Symbolic statistical modeling: Menambahkan operasi statistik ke model fisika yang kompleks.
  • yt: Paket Python untuk menganalisis dan memvisualisasikan data volumetrik (unyt, sistem unit milik yt, menggunakan SymPy).

Opini GN⁺

  • SymPy tersedia gratis dengan lisensi BSD dan dibangun berbasis Python, sehingga menjadi pustaka operasi matematika yang akrab bagi pengguna Python. Ini особенно aktif digunakan di komunitas open source dan memiliki keunggulan karena dapat dimanfaatkan di berbagai bidang sains dan teknik.
  • SymPy bersifat ringan dan mudah diintegrasikan ke aplikasi lain, sehingga memberi fleksibilitas bagi pengguna untuk menyelesaikan masalah matematika yang kompleks atau memperluasnya dengan menambahkan fungsi mereka sendiri.
  • Saat mengadopsi teknologi ini, dibutuhkan pemahaman dasar tentang Python, dan nilainya akan paling terasa terutama pada proyek yang mengutamakan pemodelan matematis atau komputasi simbolik.
  • Manfaat yang bisa diperoleh dari penggunaan SymPy meliputi operasi matematika berkinerja tinggi, skalabilitas ke beragam bidang, serta perbaikan berkelanjutan melalui dukungan komunitas open source.
  • Proyek lain dengan fungsi serupa mencakup Mathematica, Maple, dan Symbolic Math Toolbox milik MATLAB, tetapi karena semuanya merupakan perangkat lunak komersial, SymPy dapat menjadi alternatif yang gratis sekaligus kuat.

1 komentar

 
GN⁺ 2024-03-01
Komentar Hacker News
  • Saya bekerja di bidang robotika, dan sering kali perlu menyusun vektor besar yang dihitung dari hasil transformasi 3D serta menghitung Jacobian-nya (turunan) terhadap berbagai variabel keadaan. Ini mengarah ke persamaan yang rumit. Dengan sympy, kita bisa menghitung vektor-vektor besar ini secara deklaratif, menghitung Jacobian, lalu mengekspor hasilnya sebagai kode C untuk langsung dibawa ke use case kode. Misalnya, jika Anda memiliki akses ke dataset yang berisi posisi robot dan posisi sensor, ada contoh mainan yang menunjukkan cara mengekspresikan secara deklaratif metode untuk memperkirakan posisi sensor terhadap pusat robot. Untuk ini, Anda hanya perlu mendefinisikan fungsi transform dan invert.
  • SymPy benar-benar alat yang keren, dan saya telah menggunakannya sebagai alat pendidikan selama bertahun-tahun. Dibandingkan dengan Mathematica/Maple dan sejenisnya, saya pikir ini adalah opsi terbaik karena memiliki fungsi API yang persis sesuai dengan kata kerja yang digunakan mahasiswa saat belajar matematika (solve, expand, factor, dan sebagainya). Ada tutorial kecil untuk orang yang ingin mulai, dan juga tersedia dalam format notebook yang bisa dijalankan. Selain itu, bagi siapa pun yang ingin mencoba SymPy tanpa menginstal apa pun, ada juga live shell SymPy yang dapat menjalankan Python + SymPy di browser web.
  • Matematika simbolik tidak pernah dieksplorasi secara serius saat kuliah S1, dan sebagian besar yang saya temui terikat pada perangkat lunak proprietari seperti Mathematica dan MATLAB. Saya bekerja di bidang matematika/rekayasa yang banyak menggunakan perhitungan tensor, dan menggunakan Maxima sebagai alat utama, tetapi paket untuk itu terbatas dan kurang nyaman digunakan. Sekarang saya menggunakan SymPy untuk perhitungan yang lebih kompleks, karena abstraksi yang sudah dimiliki Python. Suatu hari saya berharap bisa membaca 'Principles' karya Norvig dan memodifikasi Maxima sesuai kebutuhan saya (jika ada referensi yang lebih baik untuk membaca kode sumber/implementasi Maxima terkait perhitungan tensor/aljabar simbolik (tensor, geometrik), saya ingin mengetahuinya).
  • Ada benchmark antara SymPy dan Mathematica, dan hasilnya menunjukkan bahwa Mathematica gagal menyelesaikan 1.523 masalah, sedangkan SymPy gagal menyelesaikan 48.529 masalah. Jadi, SymPy masih punya banyak hal yang harus dikejar.
  • Saya menggunakan SymPy sebagai kalkulator, dan ada tautan GitHub yang disediakan untuk itu.
  • Sekitar 10 tahun lalu, ketika saya tertarik pada relativitas umum, saya ingin menulis program sederhana untuk menangani perhitungan simbolik atas persamaan medan Einstein. SymPy adalah salah satu opsi, tetapi sulit digunakan dan saya tidak berhasil membuatnya berjalan. Saya menyelesaikannya dalam beberapa jam menggunakan Mathematica. Belakangan saya memperluasnya dan melakukan banyak perhitungan untuk makalah tentang lubang hitam. Saat ini SymPy telah berkembang pesat dan pustaka yang bagus sudah dibangun, bahkan ada contoh notebook Jupyter untuk metrik Schwarzschild.
  • SymPy bekerja sangat baik di Jupyter. Ada tautan ke notebook demo untuk SymPy.
  • Ada tautan Wikipedia untuk SymPy, bersama tautan diskusi tentang cara mengajarkan logaritma menggunakan Python dan SymPy. Ada juga tautan yang membandingkan SymPy dan Matlab serta tautan dokumen yang memperkenalkan NumPy kepada pengguna Matlab.
  • SymPy sudah cukup untuk menyelesaikan pekerjaan. Biasanya saya menggunakannya dalam combo library SageMath, tetapi ada pertanyaan apakah SymPy sudah cukup matang untuk digunakan secara mandiri.
  • Bagi "fisikawan" numerik, SymPy seperti anugerah dari Tuhan. Ini bagus untuk membuat prototipe model yang lebih canggih sebelum nanti dioptimalkan ke C++. Saya tidak terlalu banyak menggunakan Mathematica, tetapi rasanya ia lebih kuat secara simbolik atau tidak terlalu rewel dibanding SymPy. Semoga ada orang yang lebih berpengalaman dengan Mathematica yang bisa menjelaskan ini dengan jelas.