1 puan yazan GN⁺ 2024-03-01 | 1 yorum | WhatsApp'ta paylaş

SymPy'nin avantajları

  • Ücretsiz: BSD lisansı ile sunulan SymPy özgürce kullanılabilir ve herhangi bir maliyet gerektirmez.
  • Python tabanlı: SymPy tamamen Python ile yazılmıştır ve Python kullanır.
  • Hafif: SymPy yalnızca keyfi duyarlıklı kayan nokta işlemleri için saf Python kütüphanesi olan mpmath'e bağımlıdır, bu da kullanımını kolaylaştırır.
  • Kütüphane: Yalnızca etkileşimli bir araç olarak değil, başka uygulamalara gömülebilir veya kullanıcı tanımlı işlevlerle genişletilebilir.

SymPy kullanan projeler

  • Cadabra: Skaler cebir işlemleri için SymPy kullanan bir tensör cebiri ve (kuantum) alan teorisi sistemi.
  • ChemPy: Python ile yazılmış, kimya için yararlı bir paket.
  • devito: Yüksek performanslı stencil hesaplama için sembolik DSL ve anlık derleyici.
  • EinsteinPy: Sembolik ve sayısal genel görelilik için Python paketi.
  • galgebra: Geometrik cebir (eski adıyla sympy.galgebra).
  • LaTeX Expression project: Cebirsel ifadelerin LaTeX dizgisini kolaylaştırır; otomatik yerine koyma ve sonuç hesaplama mümkündür.
  • Lcapy: Doğrusal devre analizi eğitimi için deneysel bir Python paketi.
  • OctSymPy: SymPy kullanan Octave için sembolik paket.
  • Optlang: Matematiksel optimizasyon problemlerini çözmek için Python paketi.
  • PyDy: Python'da çok cisimli dinamik.
  • pyneqsys: Doğrusal olmayan denklem sistemlerini sayısal olarak çözmek için sembolik olarak tanımlanır.
  • pyodesys: Python'da ODE sistemlerinin basit sayısal integrasyonu.
  • PyTorch TorchInductor: Dinamik şekilleri ve stride desteğini sağlamak için SymPy kullanan TorchInductor.
  • QMCPACK: C++'ta kuantum Monte Carlo. Birim testleri ve bazı kod üretimleri için referans değer oluşturmak amacıyla SymPy kullanır.
  • Quantum Programming in Python: Kuantum 1D basit harmonik osilatör ve kuantum eşleme kapıları.
  • SageMath: SymPy'yi içeren açık kaynaklı matematik sistemi.
  • Scikit-fdiff: Sonlu fark ayrıklaştırması.
  • SfePy: Python'da basit sonlu elemanlar.
  • Spyder: Rstudio veya MATLAB muadili bilimsel Python geliştirme ortamı; Spyder'ın IPython konsolunda tam SymPy desteği mevcuttur.
  • Symbolic statistical modeling: Karmaşık fiziksel modellere istatistiksel işlemler ekler.
  • yt: Hacimsel verileri analiz etmek ve görselleştirmek için Python paketi (yt'nin birim sistemi olan unyt, SymPy kullanır).

GN⁺ görüşü

  • SymPy, BSD lisansı ile ücretsiz sunulan ve Python tabanlı olarak yazılmış, Python kullanıcılarına tanıdık gelen matematiksel işlemler için bir kütüphanedir. Özellikle açık kaynak topluluğunda yaygın olarak kullanılır ve çeşitli bilimsel ile mühendislik alanlarında değerlendirilebilir.
  • SymPy hafiftir ve başka uygulamalara kolayca entegre edilebilir; bu da kullanıcılara karmaşık matematik problemlerini çözme veya kendi işlevlerini ekleyerek sistemi genişletme esnekliği sağlar.
  • Bu teknolojiyi benimserken Python hakkında temel bir anlayış gerekir; özellikle matematiksel modelleme veya sembolik hesaplamanın önemli olduğu projelerde değerini gösterir.
  • SymPy kullanmanın sağlayacağı faydalar arasında yüksek performanslı matematiksel işlemler, farklı alanlara genişleyebilme ve açık kaynak topluluğunun desteğiyle sürekli iyileştirme yer alır.
  • Benzer işlevler sunan diğer projeler arasında Mathematica, Maple ve MATLAB'ın Symbolic Math Toolbox'ı bulunur; ancak bunlar ticari yazılımlar olduğundan SymPy ücretsiz ama güçlü bir alternatif olabilir.

1 yorum

 
GN⁺ 2024-03-01
Hacker News görüşleri
  • Robotik alanında çalışıyorum ve çoğu zaman 3D dönüşümlerin sonucu olarak hesaplanan büyük vektörleri yazmam, ayrıca çeşitli durum değişkenlerine göre bunların Jacobianlarını (türevlerini) hesaplamam gerekiyor. Bu da karmaşık denklemlere yol açıyor. sympy kullanarak bu büyük vektörleri bildirimsel bir şekilde hesaplayabiliyor, Jacobianları çıkarabiliyor ve sonucu C kodu olarak dışa aktararak doğrudan kod tabanına alabiliyorum. Örneğin, robot konumu ve sensör konumu içeren bir veri kümesine erişebiliyorsanız, sensörün robot merkezine göre konumunu nasıl tahmin edeceğinizi bildirimsel olarak ifade etmeyi gösteren oyuncak bir örnek var. Bunun için yalnızca transform ve invert fonksiyonlarını tanımlamak yeterli.
  • SymPy gerçekten harika bir araç; onu yıllardır eğitim aracı olarak kullanıyorum. Mathematica/Maple vb. ile karşılaştırıldığında, öğrencilerin matematik öğrenirken kullandığı fiillerle (solve, expand, factor vb.) birebir örtüşen API fonksiyonlarına sahip olduğu için en iyi seçenek olduğunu düşünüyorum. Başlamak isteyenler için küçük bir eğitim var ve çalıştırılabilir notebook biçiminde de sunuluyor. Ayrıca hiçbir şey kurmadan SymPy denemek isteyenler için, web tarayıcısında Python + SymPy çalıştırabileceğiniz bir SymPy live shell de var.
  • Sembolik matematik lisans eğitimimde ciddi biçimde ele alınmadı ve karşılaştığım şeylerin çoğu Mathematica ve MATLAB gibi tescilli yazılımlara bağlıydı. Çok fazla tensör hesabı kullanan bir matematik/mühendislik alanında çalışıyorum ve ana aracım olarak Maxima kullandım, ancak bunun paketleri sınırlı ve kullanımı hantal. Artık daha karmaşık hesaplamalar için SymPy kullanıyorum; bunda Python'ın zaten sunduğu soyutlamalar etkili. Bir gün Norvig'in "Principles" kitabını okuyup Maxima'yı ihtiyaçlarıma göre değiştirebilmeyi umuyorum (Maxima'nın tensör hesabı/sembolik [tensör, geometrik] cebir için kaynak kodunu/uygulamasını okuyabilmek adına daha iyi kaynaklar varsa bilmek isterim).
  • SymPy ile Mathematica arasında bir benchmark var ve sonuçlara göre Mathematica 1.523 problemi çözememiş, SymPy ise 48.529 problemi çözememiş. Yani SymPy'nin hâlâ katetmesi gereken yol var.
  • SymPy'yi hesap makinesi olarak kullanıyorum ve bunun için bir GitHub bağlantısı paylaşılmış.
  • Genel göreliliğe ilgi duyduğum 10 yıl önce, Einstein alan denklemleri üzerinde sembolik hesap yapacak basit bir program yazmak istiyordum. SymPy bir seçenekti ama kullanması zordu ve çalıştırmayı başaramadım. Mathematica kullanarak bunu birkaç saat içinde çözdüm. Sonra bunu genişlettim ve bir kara delik makalesinde çok sayıda hesaplama yaptım. Bugün SymPy çok gelişti, iyi kütüphaneler oluşturuldu ve hatta Schwarzschild metriği için bir Jupyter notebook örneği bile var.
  • SymPy, Jupyter içinde çok iyi çalışıyor. SymPy için bir demo notebook bağlantısı paylaşılmış.
  • SymPy için bir Wikipedia bağlantısı, ayrıca Python ve SymPy kullanarak logaritmanın nasıl öğretileceğine dair bir tartışma bağlantısı paylaşılmış. Bunun yanında SymPy ile Matlab'ı karşılaştıran bir bağlantı ve NumPy'yi Matlab kullanıcılarına tanıtan bir belge bağlantısı da var.
  • SymPy iş görmek için yeterli. Genelde onu SageMath kombinasyon kütüphanesi içinde kullanıyorum; soru şu: SymPy tek başına kullanılabilecek kadar olgunlaştı mı?
  • Sayısal çalışan bir "fizikçi" için SymPy adeta bir lütuftu. Daha sonra C++ ile optimize etmeden önce daha gelişmiş modellerin prototipini çıkarmak için çok iyi. Mathematica'yı çok kullanmadım ama SymPy'ye kıyasla sembolik olarak daha güçlü ya da daha az nazlıymış gibi geliyor. Mathematica konusunda daha fazla deneyimi olan birinin bunu netleştirmesini isterim.