跳转到主要内容

用于SymPy的符号几何代数/微积分包。

项目描述

GAlgebra

用于SymPy的符号几何代数/微积分包。

PyPI PyPI - Python Version Python CI Documentation Status DOI

开发状态

PyPI - Status GitHub contributors Codecov Maintainability

brombo/galgebra最初由Alan Bromborsky编写,但已不再积极维护,截至2019-11-25不再存在。

pygae/galgebra是一个社区分支,由Pythonic Geometric Algebra Enthusiasts维护。

该分支支持Python 3,增加了测试覆盖率,设置了CI和linters,维护了到PyPI的发布,改善了文档,并有许多错误修复,请参阅变更日志

功能

几何代数

  • 任意向量基和度规
  • 标量、向量、二元矢量、多矢量、伪标量、旋量、刀片
  • 基本的几何代数运算
    • 和差
    • 几何积
    • 外积和内积
    • 左和右收缩
    • 反向、共轭、指数
    • 换位子
    • 投影、反射、旋转
    • 倒数坐标系
  • 检查基/刀片表示
  • 符号操作
    • expandfactorsimplifysubstrigsimp等。

为基本GA操作重载Python运算符

\begin{split}\begin{aligned}
  A+B &=  \texttt{A+B} \\
  A-B &=  \texttt{A-B} \\
  AB &=  \texttt{A*B} \\
  A \wedge B &=  \mathtt{A \verb!^! B} \\
  A \cdot B &=  \texttt{A|B} \\
  A \rfloor B &=  \texttt{A<B} \\
  A \lfloor B &=  \texttt{A>B} \\
  A/B &=  \texttt{A/B} \\
\end{aligned}\end{split}

几何计算

  • 几何导数
  • 子流形
  • 线性变换
  • 微分算子

多矢量函数的多种导数是通过将梯度算子矢量与函数相乘来实现的

\begin{aligned}
  \nabla F &=  \texttt{grad*F} \\
  F \bar{\nabla} &=  \texttt{F*rgrad} \\
  \nabla {\wedge}F &=  \mathtt{grad \verb!^! F} \\
  F {\wedge}\bar{\nabla} &=  \mathtt{F \verb!^! rgrad} \\
  \nabla \cdot F &=  \texttt{grad|F} \\
  F \cdot \bar{\nabla} &=  \texttt{F|rgrad} \\
  \nabla \rfloor F &=  \texttt{grad<F} \\
  F \rfloor \bar{\nabla} &=  \texttt{F<rgrad} \\
  \nabla \lfloor F &=  \texttt{grad>F} \\
  F \lfloor \bar{\nabla} &= \texttt{F>rgrad}
\end{aligned}
\begin{aligned}
  F \nabla &=  \texttt{F*grad} \\
  \bar{\nabla} F &=  \texttt{rgrad*F} \\
  F {\wedge}\nabla &=  \mathtt{F \verb!^! grad} \\
  \bar{\nabla} {\wedge}F &=  \mathtt{rgrad \verb!^! F} \\
  F \cdot \nabla &=  \texttt{F|grad} \\
  \bar{\nabla}\cdot F &=  \texttt{rgrad|F} \\
  F \rfloor \nabla &=  \texttt{F<grad} \\
  \bar{\nabla} \rfloor F &=  \texttt{rgrad<F} \\
  F \lfloor \nabla &=  \texttt{F>grad} \\
  \bar{\nabla} \lfloor F &= \texttt{rgrad>F}
\end{aligned}

提示:获取3维欧几里得几何代数的gradrgrad的示例

from sympy import symbols
from galgebra.ga import Ga

o3d = Ga('e', g=[1,1,1], coords=symbols('x,y,z',real=True))
(grad,rgrad) = o3d.grads()

打印

  • 增强控制台打印
  • LaTeX打印
    • 开箱即用的Jupyter Notebook支持
    • 如果您已安装pdflatex/pdfcrop,则支持PDF生成和裁剪

入门

安装GAlgebra(见下面的安装GAlgebra部分)后,在Jupyter Notebook中

from sympy import symbols
from galgebra.ga import Ga

from galgebra.printer import Format
Format(Fmode = False, Dmode = True)

st4coords = (t,x,y,z) = symbols('t x y z', real=True)
st4 = Ga('e',
         g=[1,-1,-1,-1],
         coords=st4coords)

M = st4.mv('M','mv',f = True)

M.grade(3).Fmt(3,r'\langle \mathbf{M} \rangle _3')

您将看到

\begin{aligned}   \langle \mathbf{M} \rangle _3 =& M^{txy}  \boldsymbol{e}_{t}\wedge \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y} \\  &  + M^{txz}  \boldsymbol{e}_{t}\wedge \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z} \\  &  + M^{tyz}  \boldsymbol{e}_{t}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z} \\  &  + M^{xyz}  \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}  \end{aligned}

您还可以在此查看更多示例。

有关详细文档,请访问https://galgebra.readthedocs.io/

注意:如果您来自sympy.galgebrabrombo/galgebra,请查看下面的迁移指南部分。

安装GAlgebra

先决条件

  • 在Linux、Windows、Mac OSX上运行
  • Python >= 3.8
    • 0.5.0是支持Python 3.5-3.7的最后一个版本
    • 0.4.x是支持Python 2.7的最后一个版本系列
  • SymPy >= 1.3
    • 仅通过CI测试了SymPy 1.12,有关更多详细信息,请参阅.github/workflows/ci.yml
    • 0.5.0是支持SymPy 1.7的最后一个版本

从PyPI安装GAlgebra(推荐给用户)

pip install galgebra

然后您就设置好了!

从源代码安装GAlgebra(推荐给开发者)

要从GAlgebra的最新源代码安装

git clone https://github.com/pygae/galgebra.git
cd galgebra
pip install -e .

请注意,这里使用了可选的-e参数进行开发者安装,因此修改源代码将立即生效,无需重新安装。

现在您可以运行测试以验证安装,从存储库的根目录运行

pip install pytest
pytest test

此外,要运行完整的测试套件,包括使用nbval的测试,只需运行

pip install nbval
pytest --nbval examples/ipython/ test --nbval-current-env --nbval-sanitize-with test/.nbval_sanitize.cfg

这可能需要超过10分钟,请耐心等待。

迁移指南

注意:自sympy.galgebrabrombo/galgebra时代以来,API已更改,一些属性和方法已弃用,支持的Python和SymPy版本也已更改,请查看变更日志,并根据以下内容进一步更新您的脚本。如果您遇到任何问题,请随时提交问题

sympy.galgebra迁移

自1.0.0版本以来,GAlgebra不再是SymPy的一部分,如果您在源代码中有这样的导入

from sympy.galgebra.ga import *

只需将 sympy. 前缀从 galgebra 中移除即可

from galgebra.ga import *

brombo/galgebra 迁移

现在,使用 setgapth.py 方式安装已被弃用,请使用 pip install galgebra 安装,GAlgebra 中的所有模块都应该从 galgebra 导入,例如

from galgebra.printer import Format, Eprint, latex, GaPrinter
from galgebra.ga import Ga
from galgebra.mv import Mv, Nga

捆绑资源

请注意,在 doc/books 目录中存在

  • BookGA.pdf,这是基于 Doran 和 Lasenby 的《物理学家几何代数》以及 Lasenby 和 Hestenes 的部分论文的几何代数和微积分笔记的集合。
  • galgebra.pdf,这是 GAlgebra 的原始主要文档的 PDF 格式,虽然数学部分仍然有效,但描述 GAlgebra 安装和使用的部分已经过时,请谨慎阅读或访问 https://galgebra.readthedocs.io/
  • Macdonald,其中包含了 Alan Macdonald 的《线性与几何代数》和《矢量与几何微积分》的补充材料,更多信息请参阅 此处此处

星史

Star History Chart

贡献者

contrib.rocks 制作。

引用此库

有关引用信息,请参阅 我们的 CITATION.md 文件

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

galgebra-0.5.2.tar.gz (94.3 kB 查看哈希值)

上传时间 源代码

构建分发

galgebra-0.5.2-py3-none-any.whl (97.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面