1 điểm bởi GN⁺ 2024-03-01 | 1 bình luận | Chia sẻ qua WhatsApp

Ưu điểm của SymPy

  • Miễn phí: SymPy theo giấy phép BSD, có thể sử dụng tự do và không tốn chi phí.
  • Dựa trên Python: SymPy được viết hoàn toàn bằng Python và sử dụng Python.
  • Nhẹ: SymPy chỉ phụ thuộc vào mpmath, một thư viện Python thuần cho các phép toán dấu phẩy động với độ chính xác tùy ý, nên rất dễ sử dụng.
  • Dạng thư viện: Không chỉ dùng như một công cụ tương tác, SymPy còn có thể được nhúng vào ứng dụng khác hoặc mở rộng bằng các hàm tùy chỉnh.

Các dự án sử dụng SymPy

  • Cadabra: Hệ thống đại số tensor và lý thuyết trường (lượng tử) sử dụng SymPy cho các phép toán đại số vô hướng.
  • ChemPy: Gói hữu ích cho hóa học được viết bằng Python.
  • devito: DSL ký hiệu và trình biên dịch tức thời cho tính toán stencil hiệu năng cao.
  • EinsteinPy: Gói Python cho thuyết tương đối rộng ký hiệu và số.
  • galgebra: Đại số hình học (trước đây là sympy.galgebra).
  • LaTeX Expression project: Giúp dàn trang LaTeX cho các biểu thức đại số dễ dàng, đồng thời có thể tự động thay thế và tính kết quả.
  • Lcapy: Gói Python thử nghiệm phục vụ giảng dạy phân tích mạch tuyến tính.
  • OctSymPy: Gói ký hiệu cho Octave sử dụng SymPy.
  • Optlang: Gói Python để giải các bài toán tối ưu hóa toán học.
  • PyDy: Động lực học đa vật thể trong Python.
  • pyneqsys: Định nghĩa theo cách ký hiệu để giải số các hệ phương trình phi tuyến.
  • pyodesys: Tích phân số đơn giản cho các hệ ODE trong Python.
  • PyTorch TorchInductor: TorchInductor sử dụng SymPy để hỗ trợ shape và stride động.
  • QMCPACK: Quantum Monte Carlo trong C++; sử dụng SymPy để tạo giá trị tham chiếu cho kiểm thử đơn vị và một phần sinh mã.
  • Quantum Programming in Python: Bộ dao động điều hòa đơn giản lượng tử 1D và cổng ánh xạ lượng tử.
  • SageMath: Hệ thống toán học mã nguồn mở có bao gồm SymPy.
  • Scikit-fdiff: Rời rạc hóa sai phân hữu hạn.
  • SfePy: Phần tử hữu hạn đơn giản trong Python.
  • Spyder: Môi trường phát triển Python khoa học tương đương Rstudio hoặc MATLAB; hỗ trợ đầy đủ SymPy trong bảng điều khiển IPython của Spyder.
  • Symbolic statistical modeling: Bổ sung các phép toán thống kê cho những mô hình vật lý phức tạp.
  • yt: Gói Python để phân tích và trực quan hóa dữ liệu thể tích (hệ đơn vị unyt của yt sử dụng SymPy).

Ý kiến của GN⁺

  • SymPy được cung cấp miễn phí theo giấy phép BSD và được xây dựng trên nền Python, là một thư viện cho các phép toán toán học quen thuộc với người dùng Python. Điều này đặc biệt khiến nó được sử dụng tích cực trong cộng đồng mã nguồn mở và mang lại lợi thế có thể ứng dụng trong nhiều lĩnh vực khoa học và kỹ thuật.
  • SymPy nhẹ và có thể dễ dàng tích hợp vào các ứng dụng khác, mang lại sự linh hoạt để người dùng giải quyết các bài toán toán học phức tạp hoặc mở rộng bằng cách thêm các hàm của riêng mình.
  • Khi áp dụng công nghệ này, cần có hiểu biết cơ bản về Python, và nó đặc biệt phát huy giá trị trong các dự án nơi mô hình hóa toán học hoặc tính toán ký hiệu là quan trọng.
  • Những lợi ích có thể đạt được khi sử dụng SymPy là khả năng tính toán toán học hiệu năng cao, khả năng mở rộng sang nhiều lĩnh vực khác nhau, và sự cải tiến liên tục nhờ hỗ trợ từ cộng đồng mã nguồn mở.
  • Các dự án khác cung cấp chức năng tương tự gồm Mathematica, Maple và Symbolic Math Toolbox của MATLAB, nhưng đây đều là phần mềm thương mại, vì vậy SymPy có thể là một lựa chọn thay thế mạnh mẽ mà vẫn miễn phí.

1 bình luận

 
GN⁺ 2024-03-01
Ý kiến Hacker News
  • Tôi làm việc trong lĩnh vực robot học, và thường phải tạo ra các vector lớn được tính từ kết quả của các phép biến đổi 3D, đồng thời tính Jacobian (đạo hàm) của chúng theo nhiều biến trạng thái khác nhau. Điều này dẫn đến các phương trình phức tạp. Có thể dùng sympy để tính các vector lớn này theo cách khai báo, tính Jacobian, rồi xuất kết quả ra mã C để đưa thẳng vào codebase. Ví dụ, có một ví dụ đồ chơi cho thấy cách biểu diễn theo kiểu khai báo phương pháp ước lượng vị trí của cảm biến so với tâm robot, nếu có thể truy cập một bộ dữ liệu chứa vị trí robot và vị trí cảm biến. Để làm điều đó, chỉ cần định nghĩa các hàm transforminvert.
  • SymPy thực sự là một công cụ tuyệt vời, và tôi đã dùng nó như một công cụ giáo dục suốt nhiều năm. So với Mathematica/Maple và các công cụ tương tự, tôi nghĩ đây là lựa chọn tốt nhất vì nó có các hàm API khớp chính xác với những động từ mà sinh viên dùng khi học toán (solve, expand, factor, v.v.). Có một hướng dẫn nhỏ cho người mới bắt đầu, và nó cũng được cung cấp dưới dạng notebook có thể chạy được. Ngoài ra, với những ai muốn thử SymPy mà không cần cài đặt gì, còn có SymPy live shell, nơi bạn có thể chạy Python + SymPy ngay trong trình duyệt web.
  • Toán học ký hiệu chưa từng được đào sâu một cách nghiêm túc trong chương trình đại học của tôi, và những gì tôi từng tiếp xúc hầu hết đều bị trói buộc vào phần mềm độc quyền như Mathematica và MATLAB. Tôi làm việc trong một lĩnh vực toán học/kỹ thuật sử dụng rất nhiều phép tính tensor, và từng dùng Maxima làm công cụ chính, nhưng các gói cho nó còn hạn chế và khá bất tiện khi sử dụng. Giờ đây tôi dùng SymPy cho những phép tính phức tạp hơn, nhờ vào các tầng trừu tượng mà Python vốn đã có. Hy vọng một ngày nào đó tôi có thể đọc 'Principles' của Norvig và sửa Maxima cho phù hợp với nhu cầu của mình (nếu ai biết tài liệu tham khảo tốt hơn để đọc mã nguồn/cách triển khai của Maxima cho phép tính tensor/đại số ký hiệu tensor và hình học thì tôi rất muốn biết).
  • Có một benchmark giữa SymPy và Mathematica, trong đó kết quả là Mathematica không giải được 1.523 bài toán, còn SymPy không giải được 48.529 bài toán. Vì vậy SymPy vẫn còn nhiều việc phải làm để bắt kịp.
  • Tôi dùng SymPy như một máy tính, và có kèm một liên kết GitHub cho mục đích đó.
  • Khoảng 10 năm trước, khi tôi quan tâm đến thuyết tương đối rộng, tôi muốn viết một chương trình đơn giản để xử lý các phép tính ký hiệu cho phương trình trường Einstein. SymPy là một lựa chọn, nhưng khi đó khó dùng và tôi không thể làm cho nó hoạt động. Tôi dùng Mathematica và giải quyết xong chỉ trong vài giờ. Sau đó tôi còn mở rộng nó để thực hiện nhiều phép tính trong một bài báo về lỗ đen. Hiện nay SymPy đã được phát triển rất nhiều và có các thư viện tốt được xây dựng xung quanh nó, thậm chí còn có cả ví dụ Jupyter notebook cho metric Schwarzschild.
  • SymPy hoạt động rất tốt trong Jupyter. Có kèm một liên kết đến notebook demo cho SymPy.
  • Có kèm liên kết Wikipedia về SymPy cùng với liên kết đến một cuộc thảo luận về cách dạy logarit bằng Python và SymPy. Ngoài ra còn có liên kết so sánh SymPy với Matlab và liên kết đến một tài liệu giới thiệu NumPy cho người dùng Matlab.
  • SymPy là đủ để hoàn thành công việc. Tôi thường dùng nó trong bộ thư viện kết hợp SageMath, nhưng tôi có thắc mắc liệu SymPy đã phát triển đủ để có thể dùng độc lập hay chưa.
  • Với một "nhà vật lý" làm việc số trị, SymPy giống như món quà từ thượng đế. Nó rất phù hợp để tạo prototype cho các mô hình nâng cao trước khi tối ưu hóa bằng C++ sau này. Tôi chưa dùng Mathematica nhiều, nhưng nó cho cảm giác mạnh hơn về mặt ký hiệu hoặc ít khó tính hơn so với SymPy. Hy vọng ai đó có nhiều kinh nghiệm hơn với Mathematica có thể giải thích rõ điều này.