From 644a32a70928346e36ce5d17bd18afe75232c971 Mon Sep 17 00:00:00 2001 From: Utensil Date: Wed, 15 May 2024 09:38:26 +0800 Subject: [PATCH] Add module `gprinter`, methods `undual`, `g_invol`, `ccon`, `sp`, `norm2`, `norm` for Mv, with validated tests (#510) Addresses #505 . Co-authored-by: Greg Grunberg Co-authored-by: Alan Bromborsky --- .github/workflows/ci.yml | 28 + .gitignore | 4 + README.md | 39 +- codecov.yml | 10 + doc/books/Macdonald/GAlgebraPrimer.pdf | Bin 327138 -> 501336 bytes doc/changelog.rst | 72 + doc/index.rst | 2 + doc/tutorials/cm3.nblink | 3 + doc/tutorials/g2.nblink | 3 + doc/tutorials/g3.nblink | 3 + doc/tutorials/g4.nblink | 3 + doc/tutorials/gprint.nblink | 3 + doc/tutorials/h3.nblink | 3 + doc/tutorials/lt.nblink | 3 + doc/tutorials/sp2.nblink | 3 + doc/tutorials/sp2g3.nblink | 3 + doc/tutorials/sp2sp3.nblink | 3 + doc/tutorials/sp3.nblink | 3 + doc/tutorials/spacetime.nblink | 3 + examples/ipython/LaTeX.ipynb | 54 +- examples/ipython/issue-511.ipynb | 200 + examples/ipython/issue-513.ipynb | 196 + examples/ipython/issue-514.ipynb | 83 + examples/ipython/issue-516.ipynb | 59 + examples/ipython/issue-518.ipynb | 86 + examples/ipython/lt.ipynb | 1858 +++++++++ examples/ipython/simple_ga_test.ipynb | 34 +- examples/ipython/test_gsg_undual_etc.ipynb | 4106 ++++++++++++++++++++ examples/primer/cm3.ipynb | 389 ++ examples/primer/g2.ipynb | 108 + examples/primer/g3.ipynb | 109 + examples/primer/g4.ipynb | 103 + examples/primer/gprint.ipynb | 347 ++ examples/primer/h3.ipynb | 107 + examples/primer/primer.ipynb | 534 +++ examples/primer/sp2.ipynb | 91 + examples/primer/sp2g3.ipynb | 145 + examples/primer/sp2sp3.ipynb | 146 + examples/primer/sp3.ipynb | 137 + examples/primer/spacetime.ipynb | 126 + galgebra/__init__.py | 1 + galgebra/_version.py | 2 +- galgebra/ga.py | 2 +- galgebra/gprinter.py | 300 ++ galgebra/lt.py | 496 ++- galgebra/metric.py | 55 +- galgebra/mv.py | 371 +- galgebra/primer.py | 60 + setup.cfg | 14 + test/.nbval_sanitize.cfg | 11 + test/fixtures/test_gprinter.pdf | Bin 0 -> 10063 bytes test/fixtures/test_lt_pdf.pdf | Bin 0 -> 152575 bytes test/test_gprinter.py | 188 + test/test_mv.py | 116 +- 54 files changed, 10486 insertions(+), 339 deletions(-) create mode 100644 codecov.yml create mode 100644 doc/tutorials/cm3.nblink create mode 100644 doc/tutorials/g2.nblink create mode 100644 doc/tutorials/g3.nblink create mode 100644 doc/tutorials/g4.nblink create mode 100644 doc/tutorials/gprint.nblink create mode 100644 doc/tutorials/h3.nblink create mode 100644 doc/tutorials/lt.nblink create mode 100644 doc/tutorials/sp2.nblink create mode 100644 doc/tutorials/sp2g3.nblink create mode 100644 doc/tutorials/sp2sp3.nblink create mode 100644 doc/tutorials/sp3.nblink create mode 100644 doc/tutorials/spacetime.nblink create mode 100644 examples/ipython/issue-511.ipynb create mode 100644 examples/ipython/issue-513.ipynb create mode 100644 examples/ipython/issue-514.ipynb create mode 100644 examples/ipython/issue-516.ipynb create mode 100644 examples/ipython/issue-518.ipynb create mode 100644 examples/ipython/lt.ipynb create mode 100644 examples/ipython/test_gsg_undual_etc.ipynb create mode 100644 examples/primer/cm3.ipynb create mode 100644 examples/primer/g2.ipynb create mode 100644 examples/primer/g3.ipynb create mode 100644 examples/primer/g4.ipynb create mode 100644 examples/primer/gprint.ipynb create mode 100644 examples/primer/h3.ipynb create mode 100644 examples/primer/primer.ipynb create mode 100644 examples/primer/sp2.ipynb create mode 100644 examples/primer/sp2g3.ipynb create mode 100644 examples/primer/sp2sp3.ipynb create mode 100644 examples/primer/sp3.ipynb create mode 100644 examples/primer/spacetime.ipynb create mode 100644 galgebra/gprinter.py create mode 100644 galgebra/primer.py create mode 100644 test/fixtures/test_gprinter.pdf create mode 100644 test/fixtures/test_lt_pdf.pdf create mode 100644 test/test_gprinter.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b37beb6..2dc787a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,27 @@ jobs: - name: Lint run: | flake8 -v + - uses: hidakatsuya/action-setup-diff-pdf@v1.3.0 + if: "matrix.python-version == '3.11'" + with: + diff-pdf-version: '0.5' + - uses: actions/cache@v3 + name: Tectonic Cache + if: "matrix.python-version == '3.11'" + with: + path: ~/.cache/Tectonic + key: ${{ runner.os }}-tectonic-${{ hashFiles('**/*.tex') }} + restore-keys: | + ${{ runner.os }}-tectonic- + - uses: wtfjoke/setup-tectonic@v2 + if: "matrix.python-version == '3.11'" + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + biber-version: "latest" + - name: Set environment variables + if: "matrix.python-version == '3.11'" + run: | + echo "TEST_GXPDF=1" >> "$GITHUB_ENV" - name: Test run: | PYTEST_ARGS=(); @@ -49,8 +70,10 @@ jobs: PYTEST_ARGS+=(-k "$PYTEST_K_FILTER"); fi; pytest \ + -vv --durations=50 \ --cov=galgebra \ --nbval examples/ipython/ \ + --nbval examples/primer/ \ test \ --nbval-current-env \ --nbval-sanitize-with test/.nbval_sanitize.cfg \ @@ -60,6 +83,11 @@ jobs: uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} + - uses: actions/upload-artifact@v3 + if: "matrix.python-version == '3.11' && failure()" + with: + name: PDF-diffs + path: test/diff release: name: Create release and send to PyPI diff --git a/.gitignore b/.gitignore index 9b724e36..11bd29c3 100644 --- a/.gitignore +++ b/.gitignore @@ -139,3 +139,7 @@ examples/**/*.tex # Mac .DS_Store + +test/generated +test/diff +examples/GSG/ diff --git a/README.md b/README.md index c0f0b088..899cab2f 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,11 @@ Development Status The fork supports Python 3, increases test coverage, sets up CI and linters, maintains releases to [PyPI](https://pypi.org/project/galgebra/#history), improves [docs](http://galgebra.readthedocs.io) and has many bug fixes, see [Changelog](https://galgebra.readthedocs.io/en/latest/changelog.html). +> [!NOTE] +> Readers of Prof. Alan Macdonald's [Linear and Geometric Algebra](http://www.faculty.luther.edu/~macdonal/laga/index.html) and [Vector and Geometric Calculus](http://www.faculty.luther.edu/~macdonal/vagc/index.html), please check out [**Migrating guide for readers of LAGA&VAGC**](#migrating-guide-for-readers-of-lagavagc) below. +> +> If you are coming from [sympy.galgebra](https://docs.sympy.org/0.7.6.1/modules/galgebra/) or [brombo/galgebra](https://github.com/brombo/galgebra), please check out section [Migration Guide](#migration-guide) below. + Features -------------------- @@ -54,8 +59,8 @@ Overloaded Python operators for basic GA operations: AB &= \texttt{A*B} \\ A \wedge B &= \mathtt{A \verb!^! B} \\ A \cdot B &= \texttt{A|B} \\ - A \rfloor B &= \texttt{AB} \\ + A \rfloor B &= \mathtt{A \lt B} \\ + A \lfloor B &= \mathtt{A \gt B} \\ A/B &= \texttt{A/B} \\ \end{aligned}\end{split} ``` @@ -77,10 +82,10 @@ The various derivatives of a multivector function is accomplished by multiplying 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{gradF} \\ - F \lfloor \bar{\nabla} &= \texttt{F>rgrad} + \nabla \rfloor F &= \mathtt{grad \lt F} \\ + F \rfloor \bar{\nabla} &= \mathtt{F \lt rgrad} \\ + \nabla \lfloor F &= \mathtt{grad \gt F} \\ + F \lfloor \bar{\nabla} &= \mathtt{F \gt rgrad} \end{aligned} ``` @@ -92,10 +97,10 @@ The various derivatives of a multivector function is accomplished by multiplying \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{Fgrad} \\ - \bar{\nabla} \lfloor F &= \texttt{rgrad>F} + F \rfloor \nabla &= \mathtt{F \lt grad} \\ + \bar{\nabla} \rfloor F &= \mathtt{rgrad \lt F} \\ + F \lfloor \nabla &= \mathtt{F \gt grad} \\ + \bar{\nabla} \lfloor F &= \mathtt{rgrad \gt F} \end{aligned} ``` @@ -152,8 +157,6 @@ You may also check out more examples [here](https://github.com/pygae/galgebra/bl For detailed documentation, please visit https://galgebra.readthedocs.io/ . -**NOTE:** If you are coming from [sympy.galgebra](https://docs.sympy.org/0.7.6.1/modules/galgebra/) or [brombo/galgebra](https://github.com/brombo/galgebra), please check out section [Migration Guide](#migration-guide) below. - @@ -201,7 +204,7 @@ Further, to run the complete test suite including the ones using [nbval](https:/ ```bash pip install nbval -pytest --nbval examples/ipython/ test --nbval-current-env --nbval-sanitize-with test/.nbval_sanitize.cfg +pytest --nbval examples/ipython/ --nbval examples/primer/ test --nbval-current-env --nbval-sanitize-with test/.nbval_sanitize.cfg ``` This could take more than 10 minutes, please be patient. @@ -214,6 +217,15 @@ Migration Guide > Note: The APIs have changed since the era of `sympy.galgebra` and `brombo/galgebra`, some properties and methods are deprecated, the supported versions of Python and SymPy have also changed, please check [Changelog](https://galgebra.readthedocs.io/en/latest/changelog.html) and further update your scripts accordingly besides the following. If you encounter any problems, feel free to [open an issue](https://github.com/pygae/galgebra/issues/new)! +### Migrating guide for readers of LAGA&VAGC + +Readers of [Linear and Geometric Algebra](http://www.faculty.luther.edu/~macdonal/laga/index.html) and [Vector and Geometric Calculus](http://www.faculty.luther.edu/~macdonal/vagc/index.html) might be guided by [GAlgebra Primer](http://www.faculty.luther.edu/~macdonal/GAlgebraPrimer.pdf) (version November 29, 2022, accessed May, 2024) to download [GAfiles.zip](http://www.faculty.luther.edu/~macdonal/GAfiles.zip) and copy `gprinter.py`, `lt.py`, `mv.py`, and `GAlgebraInit.py`ΒΈ into where GAlgebra is installed. These steps are NO LONGER NEEDED since GAlgebra 0.6.0 as they are merge into GAlgebra with tests, copying these files will cause conflicts and regressions of fixed bugs. + +For minor differences to those files, please check out [the change log for GAlgebra 0.6.0](https://galgebra.readthedocs.io/en/latest/changelog.html#0.6.0). Also please note that: + +- `GAlgebraInit.py` is renamed to `primer.py` and can be imported like `from galgebra.primer import *` but it's usage is discouraged, although it saves some boilerplate code, this is not part of GAlgebra's maintained API, GAlgebra might remove it in future. +- Some notebooks from the zip is included in GAlgebra in `examples/primer`. + ### Migrating from [sympy.galgebra](https://docs.sympy.org/0.7.6.1/modules/galgebra/) GAlgebra is no longer part of SymPy since 1.0.0, if you have an import like this in your source: @@ -249,6 +261,7 @@ Note that in the [doc/books](https://github.com/pygae/galgebra/blob/master/doc/b - `BookGA.pdf` which is a collection of notes on Geometric Algebra and Calculus based of "Geometric Algebra for Physicists" by Doran and Lasenby and on some papers by Lasenby and Hestenes. - `galgebra.pdf` which is the original main doc of GAlgebra in PDF format, while the math part is still valid, the part describing the installation and usage of GAlgebra is outdated, please read with caution or visit https://galgebra.readthedocs.io/ instead. - `Macdonald` which contains bundled supplementary materials for [Linear and Geometric Algebra](http://www.faculty.luther.edu/~macdonal/laga/index.html) and [Vector and Geometric Calculus](http://www.faculty.luther.edu/~macdonal/vagc/index.html) by Alan Macdonald, see [here](https://github.com/pygae/galgebra/blob/master/doc/books/Macdonald/) and [here](https://github.com/pygae/galgebra/blob/master/examples/Macdonald/) for more information. + - Particularly, `GAlgebraPrimer.pdf` is an archived version of [GAlgebra Primer](http://www.faculty.luther.edu/~macdonal/GAlgebraPrimer.pdf) by Alan Macdonald, last updated on November 29, 2022. diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..f0e50a7b --- /dev/null +++ b/codecov.yml @@ -0,0 +1,10 @@ +coverage: + status: + project: + default: + # Keep the project coverage target to auto + target: auto + patch: + default: + # Set the patch coverage target to 75% + target: 75% diff --git a/doc/books/Macdonald/GAlgebraPrimer.pdf b/doc/books/Macdonald/GAlgebraPrimer.pdf index a4feb7b5b435ee50332188b340dc93e3253381e9..22d43c27cc41ec33ebd9739cdab62a1aa8f90d58 100644 GIT binary patch delta 453936 zcmZs?Q+Fl|)MXpnuGqG1+pO5O@x-=m+jc6pZQEAA-F` zlY%gDB<(X%0eaMB;ttv2dQUapEI?z7dTjpmxa0*PaV;-LtctVOSs&rcz3ON%|ExulM#9jT>qnkFV5NIE4-njVEOR2o3b&le()XLN;2K zPtElE4v*bhJSVGykBceOWm`XkndO6(Ba*@Qg-JJc0T0$*N%P&Z`X+t0eUQF>6|>TV z)G%&AM&69C^5)ih6Hha2IgXBTvXo>g$+T-oqQ`2DW|8HQ`!kp|H--c>3j{7bO+9w* ze%6f`WEEJHD)Q6?itq5aThWXDI5*kbS%&p93X@AWr_Liq=TB=(BAimpg9FyQ<^O_q zI?jw1Da^{rPL|It6*Y^a_KM#tW(HSRzpT=JKS;!2o@1z)oOy5p9)Kng zhH%OrRPYLq=4~;7K5I}YBR7>Te$>55V|IHQ$3LTNWx=UN=L>qPDm?u0ee&C2X_RZ~ zFkfMebLF2Bnp99BkM#do8o_ZH=~2Zh3y}ug094TCaIr-uFJ}@^QYn5D>C$qiVXy1h zKO+9%GFrzX6dn^!BN*ntX}FME!{Bz6P~ZZqe^J!X61-oB&RqC@^3pLHiUm1_iPBXQ z1I1N0jX}Z8k=k=Y>ZC6#Sb7jIv4+jcby1CRRV`t-Mu$rY#J5`o0h@=3H}35&bz!CA zfOS?;SAEtWoY%!C0~>R3$Vg4ZY|4@SEYMGCu=0itjuyKBrvmH{$y@x9B98M>3SIB+ zK68{vFd5jtb@YqCo|MIzpOCEB6Q|;!1)Yi}qLEhf=FH>yPm0gX*>eMgLrO^|)=G0v zZla>*aS{^c<`%?75t$YYo9=;9|x!Xz2jvdXIq<$}3P>s^1LpyQKbY^Qf1(542Rf~%xk%1! zDK^ap4d@9CI(S><-Y>#M+t0}fVD9%bV++W@{)v+dHNeVzj%9Nkw0p3 z&M&mxcAn^-FM%P!QzxLv^n)4cF%U*hzin|wl&G6b5m!4rXU`X?iKaX0rK`iIop*zMJs0zOf(+0Vglqu(_nHxQX8nls0t7gST} zSp}o^fCvJc^i465#VDSZ0lU1%JQLueoF|W8&DQ~8lfa zj0(caoHoAzMg^GG+>Bk6MDoq6yDOqYKJ0ye;LIli3BYKWw<2>R$ZmJ6zPH_GN4lQ1 zSJN0hG+`!zpbMvHtC~EnRVkC_^6Y)T%k?bjIM^|3j~t{NN4cF;J4(?zs@aE8Z)MEx z>{PUVy#Qid@c+hn%SEshU}TIknb5~&^a(_N*4DV)g`@mvL&7B5J#ofIfO`Bz=5J3) z+LhzEp-?$CV@<1=%=yn-ImFa`V>w$p@(bbN6z!dMsV$ zcLy-oJ_sj`TSz+#D$XmqB^M5tGqb0R2YtTZo5K%6f#Su*7iw5fesaMr z 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掽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�H@XUc?;G0mY>>2?~LR0t^!+3o9)J3j-1c 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

3NEm3MRI3;; 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ⅈFfQ0Jx+pNuE2F{XHVyg)7 zw7*ky$QzscK7cGWBrEfZ)5@0n6_(VSeb^LnI1|J%4eMC-Ivuwjdp&4m`7hPH!Fj&1 zspsH)e1&_j0VUEM_AL@CGXEr#a{wMc_V&~1J%A504<>5_AwR`BIaCNWAE$N3Xl{-} za*@im!=mKmt&T<_)BkXHacu$dW9k8Lhkaga%6oaZI=KsT`GTf}x9}&tSO&=162iK7 zr2;JJV`eD1dHb9@OA#96MPb>yPG+o5!PkJ3(SrpvR5p%d-2_IJPpoF`DO!NP{k^m7 zG(|o~)4h9W%Z5~(WN4~k9CTES+X7K9iba5<_c`*9K(BW`LWJxG9Nd=hC**(zn}t1K+w`2iCOSn@*9&@uYcX5%`mT`i=ZX~lX^4|l>KLeLUz zQo4CTSVsZwN_%+C(=djY9GZt*1s7U#PO`0^`00>NAk-ihB{3W0 zhK{04NGO^5>QO^vBSgfgi&M6HFR@w#FsTenk&|4*OtL5~d{-$#G zuVjT*k@Xsegx)rGeIb99L59LN%r)JZV8_+y7b>~J+RyzEaQ?4gkJ`#8J@?Q{Ez1aP z`9wdr0Apzvxk!dxB@71j}JP!lDPiuU!*>o z1}rmu=;6oL-z?Dl;%b)w#tk*!C#sr1V>4@Q#-;W#D^R@%NAzug|7y0CCT)+(h!;Q%5c!iq6moOKX`R4=VbX5w;3-R=MpjZx;)4N?qV zqfe?5l0ct?#yZZ#b5#Gwy=FI;@ei{_-D+gcpg!d7a%I+{53EmVJInO$`AiWKSKCFj z&9gluEuudwg>$2WtEoAd9q)1 z)p_N&d3@#`HG1Xva&Pj_kX95ke;~#-K~~Nm5bE7b?E@Kh=7kiUQZru$p56|F zO}YI!Y^$2 zGsHg$AfelA*GI)x?Q24kbMS7bED3Ts&=eDY>jqXZHDQ{DI*OBou=TE6NM7{iY!&U< zqTs{oxt=E^nC6>x)cp6V;OiJ}JLNQs{w;<;foXOg`z7?OL$tQK4@+wCM(uaajKL(~ z0Zspt^0a67iy-B(m3-knjqS7IYVKMzVDRG(DDCC;&}1Ddf|(?AE|1?mI{>M6?}I1V z7~I^>bzwQJkJh?*@2M`-3(Y*=5;K#;yKVL9ZqdPkMTvoY6jHIa7G|mriiIhGX-52! zmJUcn+zl3xP&sV?q-gT3H%)b5PCk33+LEk;Nd|5&-r;t4BL8GaKV;m3H|>w-Z|u$i zD6_%P(b5HFAD4@a98kx5K&eEIz8iJq13(em+#pj;FQZIskGNA0MV~@^{l8<30Q z3Bd#IA=&B(W5s>cD)QLFYOwVR$O4zhzDjA`=YPpi$K~w`LS3VB5t$vn1QX9Wvs^p` zNk?3{Ops_4`{huuhc#~dy_K~nwNL2I)2S+y>#RSSn#En)s6KD{QJ=!zxNWX3z@o~S z`WIym%>lbcv&hvSVc$Dkz8Y{~{X3G01y$8g?90KCuR&n!^_+^i5^sB92QlRs#p{)l*+6M0I>7=<_IqGI#4JoP>a*yVd{;;K;-}acs;X8?%h8Yc@F8k z%hSm5ZH_KRO3R(Hz>|IYCNKgVez$Ht6)e_FKI`jW1XrLx2gLcFS%4UxIk zA-a-}WdF1C9aK@=qQg!mPTGr}B@av(bIgZJsO+=lG|2V&!fgp+pSrT=LlMqs5n8}f z#1dSA{DtsP33ATqLkOhc=@JQk3|0Ez#F{%(=<_ooC>_b_nl?aAD3!8cTsp^&((-2q5c6V0@yprO&ol)+m1yWVD zq-WV%K#Xow05;XR`ib9w>W}7X(xQ*=%ngc7q*>#TIDrs$@33eT7%i@HKrduIAd-hn zJt>eNHb%cx1X?H0qQw9>i6#aS3BQhkSeu+g@IG8e_=>*X4rZw(v#cDn+y{BK`)gV2 zKn66nVu!$<=g^R!4E69MO zpl4r5;HO%U<;oN>rtY=5I@7wS&>2L}z{bUjsR!o(<-ezMkioc-=W$3X(xv_GK6tUG{!S~Fb#8`% zS)m)Sb9a1>Qxx1ZZ(>v<52L^r#CC8psnv;Z<=% z^iHS?d^Uqq4stu7+@3{LRjXDsvxgCFi(3XN*?E9d{-2IZ07L6$4{#l3Bu3cHJBxEs z^`WvgOQf3Uv~m$9>)%?t)F__iIsJF7A8KAfBl{gRdpBP5OZCo1Ba6#usWKyuxR~Tb zot3gHpKsA-S-P>v;UAIVgNw8B>;|&Ob$>hc`z>TTPaB+M;yE7DYWCZuxS#A*2pDXE z#aF>QykM{Z`eAs~6xw zYDx%TL{Nr5%Y>%tL9R7OOPEA|?O>@-WDfZ*D#VusIe12tlO^cPY!1LiD6Zx>ymoEc zbVVjOBy2r#UcPtAdCWG+#?^|V{T)C;iZjMYHGJAA5l{Wp{j!_5JU^r^q9wwlJ-kz= zYk9=nkY|w~8oaZc!iLdviG*>Pe+1Zht{ENb6d@EQRSHQaZuNJC)F}|OiQw7B?fjjI zXkl>#zeZz`Jgzn&IMfQRvPcV?H{~BE_b?ov_H9#Ta(H3kuYu!dgblf~p2sC0o>jQ{ zNHM_Ngl=fJK$eqcdf)Ajnk-0JLeT6(} zJ5z0*)Q3Y;E{Q`i^PL=k|Jj;m{%gEDuyT{1lqYa4=--zBXL*LUOUXtXdIKPeMu=8ol;G^s z={I6KSg+tD#;hlOb-=%-p2t@&*kG5>A^XglL6=8vo2|_TBthsu6#4eZR){qUvA$?OY1-o}lStqjQ%l_3m=6Llw)0RDwd`P= zBk?#!?EpDMtt$W*Y$r1b%7M!j)QdFn0|t8{@q9iYh)BmM0jlgFy{dKpzXIMyjE>%+ z?Py`hP^VqK=TMyE%96n|ArF)DR1s?nK01@HOBKJk$5Vp=?i0iCJ(W5R63XhFrs)$vS6a%rqPCSfmCx!<@Bs4I*_Cw{u zY8v135ADD9H`~^#gUvt)%?0USW&z5J!QN&f8uppV_jR*JblbZsUbWoNyHYJ!F00D7 z9B^6A%B$*LL;DH*ikM+w!{}#=AY>)*=Bu&iOg{kI!F&2aKDs*o-Bu!7+Zr9K*+lO? z@!B6vn2>GKtRn)JYinpMB7W6LU;Y*q_YAkeaH*RgLX`A%ej|QRn}LY7&5-OyGcgr$@bKg{)UBs!gBKGAMpQhH=0<_xjf%d3S2mP@plnOrm$!)ZWz_pVg`$uY+20AXfZQ0SJ9kyDDLtfe<#~-bU+f*R_jecI@rYP{Bo!ic!=}m%kyxU^@3>m( zQ4u` z*ggh7;MEm8)p4tk*D4m_Z$_kFKNA38cZVNXLXGzxyR5^$TYMm`F{kqyENpdeq6%9D zl(1z)6*UikeVQ-|6--BPe)^gZ&6|p?>3kU`yZvR6GY{e{^$raH!v8bRRBc#|q_&1E zKo+@S^-j8bvNLW-&gye$3;-P)l~oi;<(av z#dmO8Z9yA!R1^^RQe(Np{=ucBR+#}|-r>U^ZSq0hGq$rX7h?$RNjb*H8GftMYoR`D znL-XTqs^@gE6Idz$t=jh!}7X_wr{)AQ_%8II7>>1p*>sZf|6y4$7l@g=>m6YOqIew6mImFy`8hUR8 z`Cysl3{H_iNZv{}?-HJ;4Cd21QXk@r^P~)zln7o%$3l1!Cm|RWZ2h51Oe<4QZ1eOs zs}v+k)MXI5j6TCpIPu03tK@@RJ4K2&3Oi?uX6(<@E`YC`+moUX%U?!r#Vp-JkUsi! z;uiQtojabOK}=wN^y=jI^~w{RBPG0<`Es+bOA^er&piG5UDKjhJ9SV1-9yBf3Q6T& z%4$&G-$nd~=|vYyFe&_%{AB9c0wDFn0RBCn!3@g{HKLF)8W^L4eS_d;c{it?u6=># zkqu4QL@K~r+b^3c3A2as$@bz~o2;LBtl1#5pYsD|OiWX76fsZDAWOU+168Zpk4H#p z)(KfV@!>U&6*ir&tu)UYK^$9WFTZBNtZZ}038tJMVi6+m^-2u*>tv5mlhhh#i{XuB zQYypzqz_$JROPnFGbzM=WU}rZY${dMTXwl`wblbP@|cUye86uqysS99U2FHgy)v3C z)0LFDoTQ3d`s`S-SA9gns-J8!lp2H+bwhcVi}(`^9{`qQ8O|E)Be1|FAOtii zbPvf!U&M=r1D5QoV0a$%&F!x+X{Z{j;c5Z^T1lv=cVlzpyP!kR*SovA@(AT60=Bv7 z@TL$it{)wSip;6-9M`iODuOSh5Yq4EOP>fXJB6F|R59B_PpPlWU-k$|pAmQ2C2cRs&D2 zG$Qhn$vj7R4pok`N*46K-R*Idztb^^m_`4bJ}|qtzzFuD?e$p}QPbIHNN)+G=vzuf z8Nda?b9Lfr@XNdTruN4JN|tXMorvqco*bHlXBc~H4DrQ*xC9%D7=xuj$B3-j>$yVQ zwX-UoCkktxu-MI?$afaR|c-n^8_S`7-I#(QI!COT$o2ri^+#Soc; zlC&kzr7MXdRg+LC7MN(}nlpE3$o5Q>fkX`V+@Qe;vYQO<-(MK96t6c9e^QA_fKPZ# zX_1@BFre?HhQyO@z(rxi#4>+vL6l4Zu1XTvR~P=Gvn5@edP+X!JEKM3Y_Eho2bk)$ zlTHL9qKm$!!|jz=Q$p+}QPDYRp8hbOaM`AsA`<@Lhtg)E!V99SN1Mmk7Zlc3eIGCint7yjt`XPtahio#LNDEo@457c zu9omg9URq2ncFdJfj`~+@~_SrUI7e!LMv<=AuF1yxs`ayh5|652X>@YX36bqeSr(w zuH2}z-fa}NS^;|G25&yiZ|m_{~KWS7LME}27%q% z^>~mJObvO3y?KV9gzr=GhTVAIC=`}Bv^(f`hMB_F{3+Xnv74(WqbY$yetgD^Y1tAd zNg1SPr6MdnZBf5iBx9}9sZ_oin#1_*fc)z3yel`^x<@oRVCj90gzY}5GluC?VDE24 zGg=>4eDxAMuzsMTTrvatswLY}O=D;YFpRKF@{0CUmIKDB@{jye18?wm2%llEjkU4M z;oswyl+HwTC{qEKh{jy?cfylM){P1#8&ZFy7)OVY{EW-E2A|uE5*onV=q2re^qnPI zJ~MwuyM_LfH-144wZw~u^Fyp*)MY%h;4H1E!VK))A>T(zzbP<)J=+t)E`w#g9R)h~ z*R2u(`91m7&d8L*0==K3+)T+WM~+*DZFRNRR6}7C;CjhCE?A$X6(ikj2r^K<>akOb zx=se^EUjO_%nzm9aA+uA62JDS##vM+Om%Haat4W9E217HwUNBoTvZcL(0PuinMkri zG)uKiOHJGBjeHyi;DQ^1w#}9#=SamODVCKaUzmZqB2WShSftSqUq{+RLKr%yiq{4h z1Myqoeu&7ErMZ!xi6f9gLQF$&%Xn^^wCdk+S(r%BTzC6An;%nR_--T)g)`Z;-a2~X zQ$|6)35ebmL5dKZ@6M%Kf)KgP-p4|~WKrTFFFGDB8JJ1{a!13v6dIkcwH^{i@t#~U z##5Z|cAI;>3>gusEq5A5t3neeK7epvP+&Yikki=q230%7(nW7$rMi=^4GOv*N_ZC< zrZk%Ljzw4tDQ|AVk47ky<{g!xv*xa=g zFquWL@NFv+@X2=}CCMryfLi`oqdSzOkJhdvggN+qWQl2Ud-|JGU>zPS=J$HlCYE;> zxm>dJjynk0_-2XIM0KhMTnCse;6EaISDKGk%YaCrA zV)8bLzCO?h`U){H{CxP*B`!==MPkWQpna`;R zZ0iAhbb#XL!+B5agaf+6&<{F1pmkwOi%*SGmH865s%cJv=${{?)(NQX^E&bJDdmv1 zMB$+pJo)V-mL&#JF+^+d?3NQZ1o7}0?zmdFvhnqXI^_3-)%^q1wTBy7Bpj|E39jWf ztfJ9POof(tpqVr#6={sZRI%(jIL9JeY#2{+m7>E?nUOfxGyDFAfEX4Z$AnF&?F#SCD zz5sA)Qm{p2`Y!nxY$Niq6O0gJ9n!@<(AdQZ{Y*^@l3gB3EfI+ z^2Aon+?UVi9`%QMK|)RJ24WDOFh4?ea&`WopDVaUxPRTWTr|szHs%zFT(+`SUUT>9 zS0Z^?Ny{bhe|XfXIG~yd-AQ{2xs+Wb{@emcD^^vxmP-7=uzoo6Of(F;1I=p^L^oLX zeh})X@BUM+TaTjKa=mXEim7~|YG`&{BC^ug^b<%lX&w@*}%5vg9ubw*nLS7zL-Fa{qJJo8>P;qoV z(|2Bmm=~h+I^$`>s*mMZqv@*GCx)}lc-_!-pGebW0OPk2s0U<}FljdoCzMtPnQQtK zPw$8GjPBv0v&9kRJjjisvq}Vs$OuOPVS@Z2Y8Cp%h;hYcC=J5akbRT^tWagL5!=Ow zeto`o2v~IvdprW)ri84qMb$+bLR= z!&dRvWA2hf4l?YlU=Ot~Xbvr`+en);5euDV=)J$MuWMzn;eFAWr}0uV$G!Ou5bBHz z*nVbeDT3LK*E;?1y&`D)><~TFUv}RdGKoB5wc`haI4}_LBtg&6aARq8&+2QHXaos5Hi52MZH}h1AT_q zKCssZ&X`}D`*VD}V|kvzLeh)e6!6#%_=GZYC@(K?F{Z)JDzwgq7>(7Q>=4s@S{!h1 zsK6)!Emxe>ukch6$xwxq1DM$bJvo-0(Zj*!jQ`ALNy8i6mpVMCv52R8n_N+d^LfEa zSU3(A6po6r9=AJ2Vfn(49yH>KJgACd=RtfJMTctbDIlvluiIt)@bsPZ|C}bz^ zcZ;{?PXr6am9>%M&Y)WSL;&_opI{Fek1kS3_M?j7(r|7}1=-$_!S!D(XgK)ExpF_u zy$B|Th_BJ(J)I!W@R~Nx=%t9M66i4`_z^NBG`Xhg6$q0#ch^vgp_s{9z;sl)xy{mg zuqMMNGwsstM^7rrOQP7X)Bz{$IL4;jtG+n1-#O$|c}6HxOSxmP*#No)Q~NZW9;p_` z`xR!wRQmX9x%jrkzBf6B56i{S^lB3@Rww!dE5qQM?7Mx&RP0jfbBs<0YgWLmse&*q zhy7t0#2*9K4Y2vDU>%9k`ceCuHMti%D6qf^+0r|#JXXbv+p3~4C`buHVRf~Ojnnr_ zQ1D!ay{0i=4H%@K^9!Jo)}`2i8qO9q#83X56iZY_$1OxjkZ6jmH~q8-D|#6*Ok+NT zI9hYC;`q}Kqe@i6@Lfi3yoM>MTS=yJ;X9J`oUEUAdQfB1E)~h>#{)8G=>D`J0T;M3nVpz{*w)Yjj)&)O_m&cKGB6VVWp$Ct zkj)myyOtyBhG38s|9(&Ld>#gb=vc(iIHSMh(z!RzGh^0PW>AOUoMD@A6cv zT-30>ZgdmzXPLF}A8!tOCTyzl5YQ=MnT=#E8C{%@6E+R;Medz3-hOMZ$ZQMEn#%Er zG`pDRsg>KZdyS3F>N|az?AMyzlK_ykAsWdF5?$P*zGXT;tsEFJF6ji_T``Q3#_9!K zc}PAw>5$4lBf%|RtEJ0!8$6Rut5KSO%^I!Y-(qhm4_7JoJd2(>V?P}XiXC@U%4=Q= ze`)icu&tMK*T1^zKfu3}+d9for|W%I)8xr0Lf*VDNPbIx$dhQM00S?n50xrNibBT$p zkEk!~1D;(1N@ZEg08;F0(g6U?cK;+@`;(#Apdko4O0l3p$d*z`n}*t0IXy?ATL`Ai z6+T1*!K|b{X5B!rQx#zvBs*9K#Lf}~DLviDcf8kNBBvrzldJ>$oKI?>vC)i>MM}V5 z|9c_mjZg+FVlj&6EK9bix|t04AuE&RqJE|58mmmO7x#?jifrSP88<)&F{f6DphUbH zL|0L1S#embl7bF)O@5es&8Of;3l@`j;-`(zqy)8AT0K3Dnnu!%1_?jWhI2keZhrVy zoTm;sMXYOwiFZohy72d{uBYnt2HeO!Ze9r#wYf7zT0aL#`2AneBB+%%%y z`GLQsy_{;)6p0tvS@arZ){@WVDXenaKDY3;YW()Z^t7f1{AT**k@RwQbo@sA{mp;y z6`AXaKl%7g-t;Xv`h_U<_^oeSBlVK+!-_-G%>7gNcAqO? zGBWss%LGwtV0}L;mL5M_Z+p(ek-(p*3uG?GpP9?f@^|LS*lseQx9q98A}1_@_qvFK zVF=Y+k=V~$tCY^@k}$4_M`ypwKWW#C((_BQM$W#tx_9d%9A2qU8u_GhGAi9AHmW<) z*y>b}lD}48w0=rwIW#oE@`7wcr4;dfkNkGBcBk+9m`}&-sPL4C#%(1&Sjt3nc8=6~ z^{7v&8i3pkU~VVdvA+{LA2?McdTdIui(Wf?)tAs4W!5sT7um&pVOeRkNh2pC;AxG}ywIhNiUQ3R{|!nL%`)M>+%}(NIZxVQ^RjCRd>`ZTUu9IV;n=@Mw~(9xcen zyzVww_#meCDw%XvTE0JNnY&mxa%LbwF<~RC0;p9}T2DT|yv-9Lrg`fH;1}Clb!k#o9w&I;nmN>X~52x}2E|KYndLM<|S8LF? zoWibU%&xA@5I9WeA$9e13bkqub+Tk>MV3u4UUc{3UT3T_OXcWcF_E1!Yxd838(>2m zxB#gEBYg>HiggkLM4k`n;9@_(p(A0N`MO7KXq_ZUbmW*&`tSAAA1}bRhNG0iuK@QS ziW(|>$T$A;FQfwt7xGYTf7ja$;4w4&$PS}HR zmg`T#5O!oJ_V4X-)1QTem80pe!#OWO^to`@qN}JnrdT|$6)^(Qh4Uqb$Wr}QuW{Q zf|Hm5{U49Ce?emW{5LWFO^p9fh~aKiYWN#surmCQAO?BnG2Km0RT?bxUBxMK;?)ex zcUBiABbx!asf?pKH^a>sM;mxIrGgU_!qHBr@y^1$8m|@Q72=>1V%m4HD$WbYAMSJr zPYm=gcDI((wwe~|I~@iJt6VOZzYxi82s3z{QccZ_a5uLrn3}OAO&#cG`(5bQ0t^!t zmV#!VqE05N57eNl;_IX03??HWOQ@Cx)8&>XotAc2Af!gstTfQeI#^}^j<6N;Ct?JuwuI~2<@SzbRH(zBcK|{i73(qJs^bP>-YvRhivyX- zUsZ4}+wSN4oF=f$Db0TSRo7h(Cuq(Vm_3 zC&@Ua!ywP#ko)Lq6Mx;PkTVvM`T$(VzbD$u$4+(8s4%!Es-TK~UEJBc1w0n0+DGE3 zY_9SjtTTVyr<2q2?@0vn$pPGfXUT^wa)KwGgPuK!F|W+)u009rEb|8M1?thT&FC%91)KtR|8ZHRuq^G13m|WJ)QYZXs#5@RtJ4C|OZB}TvEq(sDbHZ4 z3PG3BmWaGN9}iwpr7nRptFGXnZloDDF}-TOhCb$o@+O?@2ruV_2JBo#!QM3|^{cCZj~ZNsUda|B%MLvitQ z>j~5ekG4LJm=S=|4S}Wv36h7j+}A9?aXrLky@SzU&TM|6B2bnx|44#t6PqYpiCHh^tL0+Yejmxf6=gInWL+=1s_SAv>5zldo|NIi?g=0%SdaLkILT_-0c&uNR8j=o zAd^YLL6Q*@l=(RXWREQD-)oZjaUxXZvyMshwDQkqGbHuKf+Ir`vv9KfwI>iKW1GkDF6itT?u+y0iVR4UwFMeevjBqyvu_jA!H|*8Nd`Pps`aH$a23)Ix%{kEMhc1JDQD4fNKpBAM_Y$u) z7BvC9a1V_>^mJ=6?zf|FU;s>>^ovT)WnBFj?%-{yS-8bricb6+$d>r4@B)z-x9k}} zW6q`%VZNb3fuT7O&!}0Y;c)Mlif1ld`Usu59hVFZBmykQ?T}5a?c`1B?SSMDV<9>x z>DQ2#ew&<^u^gXtQEa0fH?iGhj!zfgiT(6bC$cW05N^J!fZ2)J}T3;w52h8@@tRpKe2IMoPLUo7DL@bV_VvfyL*i8&~ntN(UHso~zM&f@Ep$ z*0X0JRdT)F`R*m1|a!zMIsewQqCZ6cdH=A!GxwGlm_NuDA#9`Rh zwjjXSl=kOhq*K4pc6!V^Ap^47$~SBeiGmL&)fV@PSJYm5EeH!zBEAtZ?n=J;9F&Uw z6(4vNvoaCPPPz<_`kf;SC6j~Urt>HjZU#NdAD=F^Gi&PT!M}c)s|d=nj1x|QA>VzovMJO`&6*e)@nUvnDEpHTs%H- zey!^M27+&k*Zy04u>2VxY@BR=eSawb>P)`w2T$T5oOy=5f%LTmS-H|i*gi3uq+Re{}G~O>sZ9n3U?@rNIR(5pU%&oY2 zw6qp1czF50&9zb2yXfC7kgff=IbZ*oR>z}D#a-h~hVukmH|)m;IDTDu&4`y#g6CV% zJKU15M?<>w;Ke66=y%)|xWzDzzwW=?YqHErcHK_r)?ZQ8n9~n;WNDQ&m{M5Iu_=2k z4L-@CLj}rAPVKdQ4YpIh=oaAKj=F^(!E~B*3)dqAnZd7dEPS7)lG=c>)VunrYI1qv z)`5$F)|i2?LbV)F1FbeO^44NWllIE76>;_IRwF&xeBLxzS+h4)`QxSXrFtUv3PTIC zm#W74=0w^dtA;;(dD{K~AGu&F0UTkI6;zZ%AUidLHyT7B?3|Jex*8-K_9q9(^t(oA zbf2zXMOR{HpHEHN?<|-=#FK(RN^{0leLEY$7=+!Wb?y-WU53?0PB9W-1hCj8W~BO` zohH6Aqyvq@fQ@i42IOv>d_1%u$3y(+;0*)|V;+Pg36Mj!^yZrjceAUDrXfJ{>mh;~ ze7^n9=-52!B*Lr@w+Wa~7sLIQJ*!}dh;*TbrH&a<4hNWl`Kgc_kh_>YdqIY0){*Lu zZ2?ki?ESR>@ilfaf`cc_fTuPaL#!e`G9-(^`RLkh=XBqy797;agbT)H)s(x0&E+k~ z&D#D@IcL(DEPH_3KAsZ&M@A3rdu&%Bd=j6cX(@`&;w4GS_plNMpWZRW4w2 z%SWBOmMG7YO!oyU=Tc*SdR$1}2c-7}Q|n2yo%9)|(Cy&}-YFvI)M)JO`$M_(uy0n! zIZKli^j>GTu(Z^gXzK5rEp4BUr!%5O_%#Ezc6*nkP+p+zPyBoS5$nHRg{;4WI_tj{ z)XC#s3iyzmxi{9^=DH{By}3-0jPw{pDFIf1%I4e9P_fZQ@LB5wXGBvDv8gg7Hi86# z!@9#N!+FBV_rF?j-8T`LCR=pi150C9`e`yA`?)~fxVF6Ew$CrIATsm7s#-rub z`(~n0{(ebyZItwm@~Qi$3_;S^g*=xoX9uw^ntlK{L}}WM%4jH(QlQ~Q_E}S(6b~-f(bAJDH;21H028vr0D}{7C#wW&I z6f8&-s}-i(eAwg@_9z9&6+^mU6Qcn~(I}`J_Gq?fU$#-DtTyqZ;Nj3`Nr5f*a^=$+_Z76P6 zcS8!!q#CZh9JRj!fS=PbZMK39XGdf%_J>BB*@fYV8dAFbIQN5TBsqFGMBUa2ZhDlX zyt>4?9_jbWVu~*~cV7bA7;h9&zxM}5`I7gbfVoPx2KWWVyGuY?o1bzvl*J#O8R$?uTP_CEmWMgKIiq(F0xRKz>15Cd)j(NueX{vUqq;;lrH!Pk9Vj~2P(EcYp;_n?RH#b z=wn)2WB1iKAhs*`^W&siUDXn@%bQ3F_kyl$QC=WiUmnmQ2i&g1H7#U)i7=VUf@)D% z<(Es8aL3YBSx~w4Tui82t0iL7bZ9di%2gMst7yxRI90k0j!EO9%i79uYH{!pY$5A_ zfre2=`v#2)B96k>yA6T~!UBo|?SuRN&Ie4sK^+b`A1PWq30_DB3glq&od7HPA{7IN z8i=WQR0({RAV3|#C7g~)BKrgAhnsK+ga|r!l%T2Pp%8|21(00>4u2=3E<4!_@Jrz9 zJt91Kg9%n(CCIU!Pxs7PjssUExyX0(2Kno#XO;Jgns&ZYW+q6MPe3HN!D z>%QR1WIZXSlm0u5x5?%%mY2r$$BnEATBjwPor1F!t{fE+OECCcn-lA_j3%_2eKAWr z?Iu?b%G|f-rA~k6tUZ^KUfbiSPV+5>f8DR+7 zn62sRePH9$O;g%_4exxY`}Xlj=8}}&yu_o&n#h+g8d};GO9*4LiFNpLV{*r}wqG*{ z=DnIm>SS1XI4qIOz=mQ*P-%*t-CEhkHU~ce zbMQBM?7VpXI)1gkcD+E;3Z<8DnbY$QRG`x$2P0LKZq*o%LCj;K%ge(y9!1A;U6Opa zSN7bhZ|XSffZC+c_7r#}byog4Now15!AaS!{|Z21SJow|l3Sx#pGUJw!yFJ*nVt6H zrl-aBV%~wb^YZ=sFP&Z*R`+AiMsMDG&2#>9??YQesKXf{HHAFV7I44l2rvP>O@-Llk|4XN%S}6Wbr*{GV(CJs4 zPQ#tzJVr>r)CV+rs!>a3_)JtQO?^q}h z=>flx4*Lt~vBN;5!_I8rocI1Sr1K*Gq1BzwrOZq^=|A}Enc_T4_Kwg$*6d4l@#AUj z*D;4ltu;Ffm4(ehV1AmJUt&92MEbjW*`5HLEcreE4(UKs@K2r~Gv{A*y2_u-a+Lt% zJ>kvj|7?~cz1$sLd~jX31;OQy$}&6dTz+xYkyBo=9wGGvB0asyQ7=W}*3l8+^z^cl zi%6QA2Tv)@J)M^qSdx~_ngUBwD!tl~bNzv`y2UI@=9)Hg^Q(y;nSNe?`IqJg-V&tN z^|+J91!S3DI-R|H)uAoTw64#_Vwm>9M>l1%u2c0vvDMrU zX8=lfT{I@lz+oXS9nkq8I0iZ&k5??o-K8tef~hqJX&F3-FGWiC@1*q}7q4ZWI!|rm z7gBB>T$k~HP*^kQBg~qvR6v+p7Ks6-tiom ztkH%ltawY4`rPZnu81bJ60Kkq_I+lj!v) zrLE;U?4Do%2Rtb9Eh(D5g!Vq#DEJ(+{+^&|Zd;98 z;{@pE@6*{)I@^i$3bx{khV9`t#q}>YZWH_fHh7N(`If`JXkF(7igJ*$;=ICkLR=pZ zc_%)Cam0mipl~P%dgqW(4Pd$VrQeT7Z!1IdlXyq+!5%n$Dd9NiaiiLB%*!8(fb+7M z9^Mlb0lFTyjS8V-5sG~5VKuqgVmd&p{PZe63}}^K{?#h40$SykzpV0nGr&K$%KzTn zjid9*WCB{{uvtaYk31&-$tve|_qr){Tw8*k;H~>*mCyayeIz7m{_x8x|JmP;7_K|G zPJaQ6zW#<4Y(Phl*cSD_roY(#)o2m@Z(97D7XQU4|KCLm>gZz4-_Zi-2mYBB41YT< zfDKHb0n&O!-4ZN$LK0yOMv4(;d_}TTZ9Su0)=IYS6oV=dfd6krcjRJvXme(|k%w-3x~vm4I8w9L%-7I7)O_gRaB_dFeR61i^GvE6T)Eh!uxys* zImNc+Pj0(-=vuPU^O$11A~wYYc?&?fJ3Boq=R%yY0+>e{O^uSuucck=Q}UO?5uxe{ zgQ2}PY%DvS#K}h~N)k~lavjOq`8YDPhrPR!n9VUi+9>^WEU1?Kqd3i?#e1Wf>mki& z`()3}sR-EC@ngZbVsCdP43?X|dpE2Xw1_D4L~_~=cLl#BwMIk`@{UQpN(69%)RxJA zcXhhm^Bg?2f(^Wl5)HQH zT>@1%M!p0^d2KkTWmtC*6Dhz7lpY4l=fk2PSR|}b#?fdpJXh_c`qX<}U(*y6QE%B` zDG;m>L%XI}luD@n=Z==@RDcY}pKdLJ@Y$YEvP5a94@O zpMoz;Vn{2FppO`Af+E=(CfM{ba*xd0=sgoY68xuS7#S$nmNFHCpyYr6HA1mDOjDl{ zQ;789?C%0E#iS!0Q6DdIyknK{?_n<-i{ql9jss)zK~D!MPMar|zo0p+jrcv;ygzLY zZ9F5}Xv6FFVmDR?cSl&kxNyAnr<_MFH0D+PLms09Pt9U$GXr)j`&{UpLMO;_z&Z?*!NZ@8$d*@PU5c?^F`;AAfN4qUKgk zabAM>0PBCMn3hU`91t>WiXj#x`Ne@PF}wewm^A*bm}dU0n4Xym*={&I+zsiy)G9_g zPQRrLmi2HC$4 zC(iGoI>LLWy-qv*r3%*i#Q`J+JGeqD6f3U5MONz-z4&TcCrF{1rjnqcpI&Ov9;oUq zuN;WG)fQiLq6>e83+060Hm-Sr;legHuc@~0Ph(xjJ&&F|r-+{z2x*ea0c_k$V~?-3 zzZ6s7O2Wmh{U3@+=I@HBE$x51Vp{ost(edN+wuS05oiA8h$H>U5nl#6;&6X=#3zA{ z_$~+JUmS5sLBL-e@!dZ=;`^we=@OsPVbY6<+sEG}Y{T;!$$EYkcPRDGddDx872wp= zteoz&$&+y2s4%%F8py|PvFn)k9vCxxS}yL{6Q#_;6VXr@&!bx<;JE-c+5}!Q%*!8iBAsa&TTMY zOo_}Zvu5FDbeVqbW%7b;1EZDCeWvm3#A82G^KN`2)Kb&YD{sx=Q-x+Ow^t-Xt@aNgu*BKoD2 z%Ei`vv|6j`>!M(+UX*@!h84`=w0C zXYWXj)_|#7eE^Zmo9Wx|pi-6TAI%}tKHo=GWHGS^)5J#9CvC%q_4<=B=OrG-i=Uid z0$WNZZy}&YJ3Y}mcjL;1SCn6h15O0hekDa5u*L3mGM6PfHc$H9s*7YCKl_s!T&c0U z5k4aSIvTQ`25+6OMo;KEv8&zIz~|HC{Sx8H`5)kC1x{sX(7!f%DhHit_b_YVL+?arsg!KNEF#wZKj_lHn2^hLn z;FB{wxH1ODL`0u>aJH_D6|>0W9(Yog_Xg1U(g24qt1&3$15`nO3Q#>Z zAJ8wlHFPjV_9~d%-v#!6DX^*Cy{>;1*mvW+wSOzHasOIi_w@r1!ZU}~i8?`w{C`J_KkVUuJTCt4 z3+(^1wCMdeE&ff5|EC4^e~T6?twkZfqs1Ry@;}nzpR1_9%`VkZ%~(`LC)<#U%cK6T z9lIi}JaanyM?3cVq>*}r^rev(@|W?D8C8gr8Brq5I(iE<9xR6|iS?hAh$!mq} zFYQ*>XxC}^=bimx54Jtx?1~J zJN7vEbc)gwrjTC8q^apa|Bij|czD;7ivU5Hfv_By5MuIJ8g~b*{+e7eJC}5O70vy4p{7jZ_mLN!KoteqmqJv8 zz4vx5CTp(+4jff_-=hKJT1}n;BDE=$Wk=YM3CfMk1e{Y6G##hf$3;idAXQfDaMV2F z7{wdI2db!Gtc{jXm{-ULDtw@dii|@O1B*khuR;enE&WABr2|8z(e6}sLWekhXp=bR z`=N9w9VwrBLOVhoF5wXs1lz`$cYA_^Nb|UWWjFJ+gm_W2RIdd2s1j@z-bY}`3Yljv%og(joW0(SllS^5in@$032Jo=P8)nqs-7b8-BT5 zp$Fb5zdCVLrk2?}$`^9_%^8^>v!RJ`?(Tj%vwF~LS(xwDTK`%R0s!j0Su*@PUi@;N z|4~J8GW@6NVu=eljjL82406!P%1^3DhX9^$49`w%J9GF+|7>w<)9yop8P3I_M z`f3!kk2%~rZTt00A9<@EE?!*2nu9M)^k|X{U#V#c<)*mppS6bp(q8F77b?qd6123u zfK24zdKg?G%(8_2EveGv-M6+C5ym&WKCRKIClWZBwJtB|6!q3sy`iN;SjA zh4L_tTR??*zgDJRWux<8g3RNDyFx`+!6c<>kk29*1*kH_JgN`mI*4mK=sGCGYA$GY zriI&A=xV5Hk`B=EX^@0kO>B_q4yJVwfIRQ}LQP}rX$I|Xf3Xrp?VS2}O1eZ0CaTf# zVgr%@l@`bznxOB~OXBC%+4|H_79iu@bRZ3^Akea--vstItM|uMrD)OCL0z*xUMDXz zBd31M7Od8o@^Q}@O@*3<;j_e*|4{yGI2SjC)tW&q&o;HNyDihAqOxfDr9OiW5Hzlt z6RAw94nki-X+ydDK@B}Az?Nb+&bC8Qa}^$kR4UhwB{ovCj@EEfyMnQBxmt1?c31wr z*hP%`v_iR``8#?J=qAenU7s#Z`*1Ez$MDuv&UoYO)C!>o_(;k%N9hOJGf4KpxKrCu+9Ce zIQGx#6O4^v4PU@OD)zQ=dX+(7*jZH{4TfGbZaQsN61dzE2Ne5|7s26@6v6b5}`U0C{iysEu&^ zi*JbznvwQ&HY1EW{fPbRN^iS3^d(4Z@(C|z&bRIC3vX@1uXn)7+r?s`x__yUzNDr9(>5QMF!~-+kA*c_3>8| zHR8$l;AlT~vN#BWU+z_k=@kbd%KO_E&KSDCCF{9{JR~d(G2BiChPy)53YkwJuN+*8 zw6D;G`i?}M^(!s&hSNV8HlknYnP0f3u7+;x8NM1FZn1<{ZN4I#n(tfyJULoKs^8V9 zS9~JUQ|x4Ux;vo@dk_O(Rm@yPR`~p=I$XMRci}qkV!s$!^-W!}5p`(9RHf(Jo23l* z>gBV;NQF|R)nwG{R|^%I1ley)5Yw0fu-WfB5^Yn8+%gy~8alNKk2ySnbEuDFHPTNnM7y$vZaL)PfJHcEfWbCCF zi5hboNIiuavpm5QCogq>5^JCa=EXQo*I1*V?O8-H?gXj4mtzP<}PDyI6abI(>=^C+-Wm59P-i%n~T>|;ImXQ z#QbuB!ND;(h?hL4^TQ8-Z&}dUnczvj{;|I;cj(Mw))xT09}K~4J0z+$e##--(cUuh zfXjvhD(jJb%vHkqKB)8Q{RRCX~&fIM-sus=E#uZ!+pv0u=E#~6Nbn@w;FeVohh z4qJ6b*T&*)74`;7Ykwg2JL3K(81S!3T=stx_us_*{~dAVy$+;*LtOShvJ3w;y6`Vb z+&lMMPr_B%ZjQL0UbwQhlzVw5F$@>bWS@ul?YWSiF3RNf^5bFEqrASa83Y+Iwx7Sd zqW+#_a9jkBbAezHIGIb-G_~{9yIBVnJdJ2As;I#OTkp2lfpWKfa`S?v6|H-$_ql(% z-yB=77kHQK^$tGY87cOk6w~^k3W)g7f~tcc z`P|`w5DKi*;({EOB-XovSc2ez;e*H^%4?Jbf(jtgfFpqbWRWOO~FoUv|tS>oY;qhVw0u!WTP{< zMuUiDpEC84K02Tig^CdLQYAxO_&H`bCmusmlw z?X90nBhZkfB22W9=Q_P#PWjwahu%*+fH zGc&VfSu9y>F|#bPsKv6#VrG`b%*+-uTFlH$+xq6s%+5Z??*7@>`7sflH?p#_s-vs# zsmjcI&#AD7$e)qZ%@iRjRywLnw;c zAQV2KAlhJ+AOs+1Tp;{Do!aamGb#*r7a(&WoDkd~DR^1cpW(rM@HC(ZKmf&3y{cgd z{&+!FZs*i$p>)>?tbKjeqLO{McpUTrm7xtjNqzPS?)b1oSQyrQ!iXU53y>fUQ0tw) zc(7n}39ty4EPtAS@q?Vz1Q5k~?26Ptu)}Zyfyy-VK1%KaN=;b?ypNi{kku3*?pj{U zO*<{jtCY>&#I?NDPxk>(wCHA{Lm}YTDLDEV`aHKoH)GBb`#diZH9ih|kop_TVEmAr zQW~z8_>@+{(I1EZIfTE9;Nv#6AX*r2s2VfkCgh&5E5jnZq6Xa$B`K>PRqAZPF$k(P zYSe%(mK~2DG#xu_>jm=!Oej~HH1=#W>UhT-BWz7veWmQly_KHb~?^4xgN* z>5Ql|&EnQg-6UlmtiMDqBCZj`g5%b=eMsY>J7>~F_fHGG;wV+Tc$rNCzLHtpzh>vk zaovJ&VBNH-Ld?tKr+-SqQ%nfMoej+w6>o`$Qne7x-+k)q>(X>~`d?fp;a(j|6tf%n#lX?=*y|nT z(^?{MnmhD*$N99@0)(*H8#EBBs<(iN#kVftQ!uXAga(pVT0rwzbx~yNw zm0!HUESFC~#a(H?E+-Mpu9vxg+23V>xH9Z@pQ5$B<(~bqisltMA^za=pMd+P>=2-+ z$bU)2{Wn@C?cW5a{<&zIL;hD*l-POoiLW_7Fe_@@8}HP+)z+-p^3J7zh{vNw%;WTb z3VmPw;@qmKi!Uo!*$8R7wP~s&Yf<1@EciJ94ZX^~bD^^cdm}Ko5ZQcz!VL&s=~!N? zxn!U78^7Iq32Su;uRn`EU`Gt&((Q_(Xv z^lzET3r{2TZQ~0)Uv-EFnv)$m+vm3?4ceDY83$|~5oEm=y^EH2|DuD+ zZp+2jQ%x{KT)`uAW+o9H7927eFAx<0lctIp2ZrG~c7EwXVb}=;PiAnAW+TP~jIRCO zWxmZEJSR=+xQ;(L0un0Ln7{HZe+4FoRQ@A5BzyX`l~0rNO@1Bo@^w*@(t+W-+Tv%I zeV66)kdqQ$nr>bz0E(%J072J>Xx}unj zNHiOpBq0G|MiK8wK}dCgi)d72%+3z}qO0K0N(m(^$U^&e{0Q$_{#o&F$sv9k%0xK! z5>>u#A`VCn(p2`}$wI5fcZ^FRGnA!|Wj^G9TR8yZdZ| z;)4!iiZwES#7;l%bp}O&WI*7<{CL>^WzT8eMKMr_;Cy-ww)9KrI#YUgIoH1e#E#%E zfc!xj;NK4*CI11)e*p6T79cI4<@|pH$e;8CxLE(LC(vd4SLQk9s#yMQR6i$Z3~i_} zew5=vy(Li86WzX9Iz&Vm>E-DrT+FoP5cC?SBl+7F)$ZxQk!``@t-jd>nVFr7Ig^)( z+3sF@7?7t_-<(#4pIKIBBan{t&d4iCCtPe>+|`~BN6u(-i(Z0v{meT6cfxP(j0~r`{qMAxu8g z298oW4D`>ws3G(DG)qf==9+bT>2`I#y#xK#GHy`2SH@RA={~w^_iB&xq%d=jG76+A z-9|j=-|6K)j6@FljCo#LfV{fF8%m>?~J_72AJmJ`g*a33hNG6 zAocWXyTMWQZ}GX=w{!~9E&H^hOGfoH`7mVGOX}M#Mfnc?iDw$a$TEa0q#w zik*rj+K6k;#hDjB^={18^x`kvFrV0eq?0Rv4x{G zmHVZL8p=huL83Lm;yipyq5vo8R~&?8vjo^#`SMC2IDqmth5IrYB%rELCo;?N*dKJeoo zL|~u9a{l#F33EG__LtP?FDZsWDTZHCgt3wCB7%njo-;HLMQoQ!OuwYsJ`mRdKa|9E zq{Pnhf`@*dGZYWz+z;ju59Z_#=7yJj^tRp`#6bXz=Z(rp+u>aK=IgdKy2e_2-Oe2I zw6>GF@)HtxVx8~PP(c-mtdH;&asdPXi%=T(-hKJlD=W#jJK#LH)p>wZt77qalo-kAEd-7@=RsC) zx!nOc4-R7mRJS;-{PF_|1dImF-U9aF9~U$4%!YT@5Z!WH0WJwL&sZXAvvV%{xA7-; zr#+HZV_ep{38{n4j~zAS#sojmIj(>?;OeC@a?JJNpYl=*S;7yn!Z2- zhhynnve6=c!zOrB@_PJK!b((OnAu+yyG^5yyQ!Et0BY44<^$g;v)>5{CI{fSy3{DBLUObEHg*rx{vj>kaq%XuJzkv|kF^eY(iVH^}s zk;-nCR6v-j1{=Hsq#LedwEyF`9|VDoATOf1K@jZl{ugKuA{`>~sN87w6OmpN`-$+d zO=yoFPnX@!+&Vjdff1kC03ML_F6@PvbJ4aFW404Re=*gObf}7Y|BQQ9#(l`gc*u8} zhyq7qgYuRaEcWwMrFbafc_@N>C<0cDfH&qrsr0BwUJ7DoNx?&4llpe<=k46N?Oe|7 z+_7I$x>1qMjpW2gv^yufF^GH7-g8E4tS5^7M_B$&`b*yrD4UCAI zhO)UjLgNkpBYUm(^BZMJ04UtN|Kp!r`VR>Vod0ev&G8?X{*O!lcb6u6_J8}6OaCFX z&&~dK89KEt+f-p7ixYEMEbn^V9UFl@-oyfwY-fVqTG^V@a%)r!g8weE_X z(bKw_v+l|amzWR$aXU5Ji^uh~`!P-RanIWgP?#0j?0wyV{W^nOGa2^M1W0}|$nNq! z-b?I!Ov@5g_4-cx@oA?}MF?pv{-K}_$@gSJZ3{FuEhoQ7X*jIC(0iXUI`0+*Ct1VU zi*Gpe^n_HyZ##H?`WTt3XBww$-trqUr^40sN7@d_;pLxKDnk4vN61Uvt33~Ho);6@ z0H@l;qA{Vsm@fa!7Jv2O@c~aVfp(&{PzxIkO+J@br{8tnONirwT2^gJM+J-G-ur^b zxH5}Ex{b@7vvQ4nyfmDXOC*cE7|fVpG+?;UF(}`=zN1d?uA@|f79v7h!x&Spr_mny z_vveMI>{2$s02`x*nP^jKY=%P@FQOOcCYz}PusCggg`*clm-3Wk zq7vL{bJ}Ek|KGmGPf{SUseWTC8*Gl44=7IksfaOsknv0p_f|BFTXj}_6dlK^g2m|tVTGdN$-D_tSLkg=L#Y_zLuQ;3Q&&8 zPW7HM7f&l!Xn2-0mhOy}N6G#4mbN@#fUlN;Q2g!Z7vuf3F>$++tEiVB2TI*SdFD#J zg)%y>-0O*Px8yQvKSx%th)u(gQZJZccCB|NDirnn?7;oFqH?z+RT7`{1{W5*buNMj z956*@Ux+QYg#cevVQ}zJyVl_W7(`*!s*u>y12-yqdotbYd!EK)VqqfoU}7J|JSu+b zC%#QxLQXv$m7=4WH&jzQ8gv~6SXJ%Dog6urs%|J8v1>yMgMWu*MiU0p??R>U!SEp^ z$^DMdc^OIutq4+?4C~X)80t!cn%$ZGy{8!x#J-3ETowe&#|R1RBM7DszyuNrQF$~k z84@HvC2r|A=pgkYEm+Tyaq;lDB;^@2VLwEy!C2PtT(!_mWmq#(OF{Fr7Lmm(Vdh8HoPh8>P7pP+>a#$r0J z;l#W9wF?%$Oay!A;LUPE>;f*B?hoC zw;533&6wP~;LI3y>KU6VsXBFq=MHo$A?dm&qmA9j4lz~qWA>>}ME^SYqU9c#N12P= z&|bY$R*}|x6F=S14shI^Q)g_si7%nl+i|>9BT{g`+|G%$1>qs8pjmw#7SqiPB5mEc z_RT89jdWao80IowJByYOdb|(U;~Vi-ofNXcpTznT?EVm8=VE348;hIdZ!~TbN0L|{ z5nO=Rzo;4b_Hza#(T4UG#`V;zsg&KO_)SY#f`Ib8Ggc8~K9>|jPZ$9axVtzq8o8IA zIkS>_hNR2_Xi(67WYuxXBr7i_zQojlGtXuP{}Ge;q|> z0_EnNsAL-C!M^eL+nOL&)=_$ia!kZ^*D2>F0__R*dD7hlgomiuGr=_)6L1r}Yyrg6 zs71@8k4c}|4-cCr=WCcjpCU^F*qBkD;0c2ScKA&1-Lr{%GCm&L#FV&FwtZn1^R7Az z8fWsgRbdX23Tl(BR3F(($&x3yY@fic$$)qnsF5ndt;qo4Flra0nI#pF@cFVCcRwS` z|MY_`Os1zAkj4Ep*nybo;KwGPq+pgg<{=`Ma@o|q<}`=wO{8RtKcV$ZM$ZofCP6uy!OQGA!c{WiN^)m5=%gqbII5Xut`R0_>oPJ-G zv|~9!53AV}o1W{TS8f%lE_~PZNa@(uB}|u*UiJDBD`2}UwpTW9c(I8!U~y00=eoLS zQFJm9;&TjX<{R~XaF0DSaKLr)+G_kS{IgV9)ru-FD-hkAvQfxmR!)H1&qP?ij~{>kSZMV zLl<~C*Msc}#-MTU=xmyeDENLo6sJI<8^uXcgBZ_AI}hDt95nzhHQZNXF=8(pqLUJ< zLE_jMP?RG~__GP+nusBk2w! z+jXOk13y?0GU#2)2mlwoaQzF0{V#5N?#F?*@7ziOI%JDt_ZBm=Uvn$W48U%Q)nU!_ zKip#TB6tkBj-20!3Iz$oFD#R*pM7#~(+_$!Ttm#%16wK3M~Fo5NYt-L8s`v6=ic_p zW-=9keT+1VRAe(10JZG*3|1}{a}Nb+>!rE)ndo*)XoeLVWC9RzxQzzj3vNM}r7>rY z38vrq1+njZ4eU55C4T15`AzT~1M9wk!<5N zPZmam7rHkYUQsyp1mCnAzVs&y{3$ri!t?Kjf%v%po9BQl1opeG$B%uRYpfcK047WUzhnO$IkT_0^pdA(6b#c`$GT3JJa zBiWou(}lJ6TSNV3ctg)8L}5h3yO=2hI~&p9(W$oD85nYX@=&l1G|&iPQ5vKc;SKxd zP2mkNn#24N`vpi=2sk9;yrWW*(6P{Bp(lemMw5WD{7pbO3itLS6wYPd*jN1}bu&8s zQ!*M~l`#tM{$~vCLV4BA%Bk>dO^I{*A=nD)()KfJ{kU0j@`PEK2=1hj@D^N<%<)Pi3L! z0D>OVwb6n~NSmDF%~;+%yy+m*?aKKB#e@x9|M_60E9`CPgAV#kh}bIjqv2d^)|=Zc z42RJidY0*kD|J3^ULnkcY#Lgodx+VZgDH!J1{MIrjQF8pgH7JPANK0tc={WYxwML) z`hDuyW7jy@&}bJEZeqzpMRo_o8;9wXiKA+vfxTED6gDDkcyK{o;^LgEK=pohwj0st zy*q7N$7yzW^`9W{r||RpW8iP|k$;!5kQ{5m{|yHIGZy;KSm=K@7RuO;fc_H*{t#m3 z`nP)y$bI~Hpe_aAzi~M)RC++;sTjT9Xk42N&_>rQho!w3MlzbNLl#}(^Ml8*Nq3gI z=5!C!%+yH3Bu=R(GL7Cuj1kC}SW%sRmN+}y|0H^O`Zev?VVQ{6t_>>;yMbH2hl-~C z3QIxECb+;0yFriEDSYMUnGpR90Or7kGp8O}ec{_xqmWkBefb6a%}q^%=yZc&yqfxQ z)tb7?Lc`gdwrmqBFw*Q+U-qW0?a;q$Pym$$RplXbP}#tl-D3)z@L58jF{4TN+K2c^ zl4N59>t@+=>pEoF`(oTEn{pq6;etUzvrajGMv*X+n9Y1)wn}8}o>O)JNWu^}dVwQ+ zQ{LlYJ}IfeWWI}z>!jI36EgCKOH-kubwbzE3VV;*($6S0y28Zlo8|KFnEU z8rS6Pft}DTRAx_@#x;{MKoU3PU5<}zzi-c^(5qB$$cJsbUqsysx#b!7UIOswm2Zt7 zxxvw^IwlMjRN9S#DzG0}j(_&9QZ~7pO&vk9ZDT*#-an)5b3z)q885Uzc=UOe!yfjM zp22&u9LY=o_&owrSdL&7*>?HjlnJL)AoeNbLloM2YtFc9lGy3tl|ySHpO?>ZskpZS z9-M9uTCv&lXfo-Z<;-5z_fU6s*Av5sXP@UM^!(oN*bZ2Eil>qhf7Gm1JCp#Gqn$MM__CO_%@y%o_YCToofZSqUpy)F@aH+%Sr0t_z(^&;YNT$DOv=Z|0z(BA|XIx zR}!7E(vbkQoCE(mh)2NC2OryH6ng+!2nwDZJ8Jf4dvw%a2KHTGA50)9!qIVA=%d9U z;ZiMg8iTww#N*)Zh0lG8q}f1*LnQV6zzq#Pvio*r^F&JHnBz!6kYmsX;LD2!iowX_ z_~6r%Z|+ilh~9Q5F&6%S$Plni9tv?yMiByz+Z92{qE131jV8OFd==FTHxL4lE)|1p zlp%1C#G$4LLi3T+=)@srhRp}9HznbKHzpB|X8BDs!3NLq`#@tI|6T};o4&Wf0m6hC z!(Uz$ty{Ly&u^X330A|Ny?{L&MYw}L08qt-We^Y2Y|64AF2XP-tQBNrPvl#@L6}Iw zH|J`&Kh_7Dj>+e1$Ujl_vCk-C=&4`xH$ zz`+n;(JB^vkDvp=Ld^x=hgt5%F&OmgT6+`B!UnVz1e}f*JjgdUW|~zzSPL?bQ~iQ( zs|Cfq)zI+yJ_w^}BF7P1?LV zy_G0$ar&$LIw*7(cBTj!xO);+?6J4iBfHGS&bN$qPjD{0iKFU33``Q1GWdGBo3 ztL@i2_RPG<2WF3I;o1_nWZEOt{Oi!qNfs`=-B9P>e$aonntlFG{bFXPR=@VPF!fo*-R5Q!#^$+ zLTA-5Nm@}|1LA%h;0hFCU!ys>nbf+$(?@|!E~ESRTuF|{F3wEV<0ceLL#rA+4rsGx zA4ERMT!Oi{^}exMzCNKNuz93TQ$2pld~^4bFQmNe6z>wk-|77WUwG{+f)6>FK6-U zCAqer8Gm!oG5s*&>?{Af-Q#ODM=LvHr}i!z`U}G4n>ia%)|{KL!P^I|e*KH#?x8P( zKAP22ST!HJifRbhuU6C~spf=u8yj(qV!jnztLTOP-UOh@Wg!vNzBvQrQy! zkZ0^qDhH$;U@?|Lbni@4mWIu0m3c%$u^TjmR)sTy!-(~|JjeIUr?*b0ReG@z061K1 zl1B_6wTgYOB8o_Lq`uN^C>^`dNK7zr5w0F*;?ijEI%qI{M%SyvrMb~!b^ZBVK92HsxG?6@0+~d)wxiJT&tCidQ@C#f!5^d~A!1@*`ol{N90o$*673)WgC2i)`*_!Xhqfg@$A!73?q9 zJgzL++4k7=qC?Ve?tT(7**^2%Za1xYVCMi9hIo3&cgQ~?vTVXEAY)R>bndCb?dZkIj+`jZ7u!)THO#Daip7vf#V8De3 znysxEk46jBTJX#Si*pc|`oq%DZ#q6e3+Hb7zSEie)BYs^hy7$TA|xJ)A2q7q$Q*wW z?pF+-NLfhxu_tR$H6p#80VAueUqcaLZB$gb_vSgr`GZIGsR6`>$WK_+FrT_d!RUjxx=-t%F+-$CW z5GO*r@S?0_#pfG*=mBDo$Cuf=*Ecrl?UQTMSM=2F2DiV;uPa-Vg z*ZVs~D*twOvN4xlYoYqsBg}d-M4^GnHnJkPBjYSR!jIZq+Z5W*6KmHxIEEZc36M)Y zK<&#g*kjEqvs+G|4s&UFcj)e>Glv$De)!AdXc75Ag*FaHH$XTlM>< zVRGzs5T@7fvu_R#q@f#%#M?Y%%*xa_Q;XEo6UjuML`xvI_ZB4Psxo;C&S?M%@`5ovMj zyE|=NLXiCvMy^N=m}A~g04$nzU+z|dhz5rjL3*t7AGa{`5(pD**6o9+LggG#*W6W^ z<<-H@-$b~Xe&A1rE$*;`Pf#nu)0Fx{$h^(x(gmmz>|c@umO_Orf9KXF^&=@E4Q(dl zU3ztQu2Lb{MEo8Q2~+4}D&7pL^qX*U_V(n}%^2kXN_Yr5uMV7A0{}`J3x32^xYYHn;8BYb(SENj}v|dP6;<2>BA~vv}^kqIL1Yt zPh3Qyh*%CE(OYi{vh<^m>dfwJ_37+K7pZMRsw>cg6m$t2dDXEMB$8ReDA$EyXpC8Q zj0R9z#BGqN70_=|)c}5B2gNXt<=|SvTj%o60*y<2Dmz;n#0^Q->)C>;Cqz1zpub#! z+JRVB_SrqcE>p%ZXR~3s?N983~>_ z0xO6%iUtfN)XXGS{PS1PNd+@f#AKJV>kz3*dk(~=#wHPoe*iqGFsosUi1eDFC0d}d zJ^7n^*!8HySNyZv#`guYQuunlFDsLudUKW3$*6j#7TLlUXEZNi3|*oLvK4$9===3Gl(DMDJk%D6Oo?)U@lQ5&fKC;=5HF2Jtk`Jy!ye(4{gh| zEUGe~0tL*Mo}@Ryi<|1qp;a?AdWiUSmtXHlf7Sgq4+LoXtKaEc0`S*@Rjv-B>PD`M zPeqlGi_6dYpQ0>n8LS(y64Vp<7>C;guRNCV28o_^*G%t(hf+%5JrL7 z-Mx-}L;n&&sQzv532jWAQehMPM6xr$@lz128v16wq0uYqaVsSpxMjeJL#1$FDBNIX zcMt0d0vP}Ln-Y8WbyVrr=V?9&Tsk@~YI8=AaX-|G#b#5X?BY>76I4Sa;Qpkj^>DLz zc(2lvxQ#E!l8}t?iPqaw#LeLuwS0#S&|ru4IUSQu@(TSdM`3p2_L?EnSjF1*lk~?z zG58ouA_m?ciHJ1>9Sm{4RT9PAj1t9K5qk%j;(*2t?OKfC1QDa**lQ{IfbxdYdYF3Y zcqjT<94&ud3m3?2l%F{_qU5K}6$vX}3!jR`rumTZe5#5~;*~uZBBXWZw5#*+l69!i z8lI}C{NNNUSeqmT>s9&T=fX|2eK|A?ECQT4qg<#EP#$Z!7?4KM^sbT@a?hTX&Y0)Cr4ajPRGOl-elq)E|8jad5JDA zPnz0BhQQ~BlEe3luOmtdeKzJeDAMo=S}j0oe?~-Ge2Gzn$FLByJJM>YykF=j518 z+Bqfh)HF3PG60q-OHXP?&?O6wJXO@Zi0z2iSmZ}z@v@@@>@jpMud>kNPYHpPE5 zTfEn7-pybA9ch?UoDD5aj1upzAczyWt|3U6SXo(ESb11Dm|0o57??S!n3<`7zfaE2 zSlqzLgoIk0mle3@pIs7zt|8>a*cezDIsbk+NT`9=hUAlliwVhlUm6lCdjlu)uOlO#^XgUTc~y*ds-#!)^jyYjIyQGPVL z^3hXKA&mf*JA@wkZRSLM+cX2lQls+kO|b}9B$-W|yZt!j!H6R#rnYegpct(4UB9Oh z!m@BaW+4nQQS)=K@t->u8ji7o;gPCS++oD;a($@$@1-2i%mdF>7)GUW=7B`x)-~{2V+=pD4#W< z5^l*qA*xb*tCF89FQz?=8p@xO>m*MLc7Pv^bn4Tz<%RIi3KWo9l1~Y=fM3x&+{Q&B zpc)1AfQ>4-?$KY%*@vn;hBDU78X&5z#|8dEX3v``uQp{ES)0{CQm;hGkezBj0h?Q$ zHEcdQWQ@2`9;~T!6XBxX-cBdCJfc9*))%VOmY+}ScTWza+i5OM%a!s)Jhv>WJ?{r6 zEZg+)#$5K1b8tVba#r_nf?ILMJ7S-+D4hmq6gtZrrT6njI44Y}3fpO!8PqAb8uX>R z@SZpoZ;oP>ugojOHxpBrs3;XCwa<4)4Dd<_aR{ixOKPT9^O`unkX&18!FYdP1#c5h z)v;0t^8zt1w36A+o0cgIkcUlQaV_hInGi1wk-te}ikOz!Ti#}$w8)u$Z$VF|1Uzac z`F#~;5pX&A-0)h83$NEQRjT>OmCsWnRv5oKT96ozH6plHJO?@4e%5t7#)Ox$sOS9g zA~p3YPhUbp2b_6#wMhXGC!O`P+N6Ki?t~y&gj=IQofGtkM^wEu^6U1+8xcy zT&a%_3C}MHQ|_{L75Rt>c(OE@8i2#iYUS+w&tdVQ^v+jF%2oN^_u@Z$mET-wZEBsS z!Sj`6BcF>^O%H~-;)fW#o??^(^UuoK)bjJ+9+Z9#v5wBi7c;PNm#P{i$KJ(rYVHmp z=4%bNYUZk%CA-eAX05Wi7RGaG*WcUgOjjRD?`Y)hmPxO0MKd6iA$oj>U;;?G=!Dj` zVp(`lRp0eUOZ^VDo>z$0;2*xN7I^82CL4~#;SYNZFSt!^OqWA<(Zl1CUtX9ldB-&lLR$rJzuDOYO0GkE>LlMUDSWGY zoJ$Y3n83Eh+SMn*qW5^ock6&vPzZbjb++1gOl*3AAVA~*-aI+j;3z006eQvP2Oc=C AuK)l5 delta 280365 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 z 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 XV;LkKJS)pj-Xl8ciR+6W diff --git a/doc/changelog.rst b/doc/changelog.rst index 489fed42..ee20e9b0 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -2,6 +2,78 @@ Changelog ========= +.. math:: + \newcommand {\lt}[1] {\mathsf{#1}} + \newcommand {\mbf}[1] {\mathbf{#1}} + \newcommand {\es}[1] {\mathbf{e}_{#1}} + \newcommand {\til}[1] {\widetilde{#1}} + +- :bug:`518` :class:`~galgebra.mv.Mv` now correctly returns ``Mv`` instance when raise to power of zero. But in general, if one needs to call ``Mv`` methods on a result returned by some GA operations, it would be more prudent to initialize it as an ``Mv`` instance first, as sometimes the result becomes a ``sympy`` object. + +- :bug:`516` :attr:`~galgebra.mv.Mv.grades` no longer incorrectly returns ``None`` under some circumstances, as now all initialization branch will correctly call :meth:`~galgebra.mv.Mv.characterise_Mv`. + +- :bug:`513` :class:`~galgebra.mv.Mv` now correctly handles differentiating by a coordinate symbol. + +- :bug:`511` :class:`~galgebra.mv.Mv` now correctly handles negative integer power. + +- :feature:`510` Added :class:`~galgebra.gprinter.gprint` by Alan Bromborsky developed back in 2020, which improved printing of text and LaTeX for multiple GA objects in Jupytper notebooks, and is the recommended way to print GA formulas, see :doc:`tutorials/gprint` for a demonstration. Testability and test coverage are improved. + +- :support:`510` Testing infrastructure for generating and diffing PDFs is added, see ``test/test_gprinter.py`` and ``.github/workflows/ci.yml`` for details. + +- :feature:`510` Improved functionality for :class:`~galgebra.mv.Mv`, :class:`~galgebra.lt.Lt` by Greg Grunberg, with improved test coverage and minor fixes. + + Changes by Greg Grunberg include (see the attached notebooks in :issue:`478` for details): + + * The following methods of ``Mv`` are added, along with their corresponding functions (applied to multivectors ``A`` and ``B``): + + * Undualization: :meth:`A.undual() ` and :func:`undual(A) ` + * Grade involution: :meth:`A.g_invol() ` and :func:`g_invol(A) ` + * Clifford conjugation: :meth:`A.ccon() ` and :func:`ccon(A) ` + * Scalar product: :meth:`A.sp(B) ` and :func:`sp(A,B) ` + * Quadratic form: :meth:`A.qform() ` and :func:`qform(A) ` + * Magnitude squared: :meth:`A.mag2() ` and :func:`mag2(A) ` + * Magnitude: :meth:`A.mag() ` and :func:`mag(A) ` + + * The following methods of ``Mv`` are improved, along with their corresponding functions: + + * Norm squared: :meth:`A.norm2() ` and :func:`norm2(A) ` now returns the absolute value of the quadratic form of ``A``. + * Norm: :meth:`A.norm() ` and :func:`norm(A) ` + + * :class:`~galgebra.lt.Lt` is significantly improved and fixed, see also :doc:`tutorials/lt`: + + * :class:`~galgebra.lt.Lt` adopts the contravariant-covariant indexing notation long used in tensor analysis and differential geometry, which is consistent with the indexing notation GAlgebra already uses for the display of a multivector's basis blade expansion + * :meth:`~galgebra.lt.Lt.Symbolic_Matrix` allows the creation, for a symbolic transformation :math:`\lt{T}`, of matrices with entries of any of the four forms :math:`{T^i}_j`, :math:`T^{ij}`, :math:`T_{ij}`, or :math:`{T_i}^j`, although GAlgebra will use only the first two. + * :meth:`~galgebra.lt.Lt.Dictionary_to_Matrix` fixes a bug that incorrectly raises an exception if `T` maps one or more of the basis vectors to the zero multivector, and improves the readability. + * :class:`~galgebra.lt.Lt` fixes a bug that erroneously post multiplies the transformation's standard matrix by ``self.Ga.g_inv`` (the reciprocal metric tensor), resulting in a contravariant-contravariant matrix :math:`[T^{ij}] = [{T^i}_k g^{kj}]` instead of the standard matrix :math:`[{T^i}_j]`. In the same spirit, :meth:`~galgebra.lt.Lt.matrix` now returns the standard matrix $[{T^i}_j]$ instead of the product matrix :math:`[{T^i}_j][g_{ij}]`. + * :class:`~galgebra.lt.Lt` now distinguishes symmetric and antisymmetric transformations from general transformations, ``Amat`` will be the standard matrix :math:`[{T^i}_j]` of the transformation when ``mode=='g'``, , but will be :math:`[T_{ij}]` when ``mode in ['s','a']``. Since :math:`[g^{ij}][T_{ij}] = [{T^i}_j]`, in either case ``Lt.__init__`` will receive the standard matrix as its first parameter. + * :class:`~galgebra.lt.Lt` now correctly handles Versor input, and initializes the internal ``lt_dict`` for the versor-based linear transformation. + * :class:`~galgebra.lt.Lt` adds support for both even and odd versors, after generalization of spinors to versors in ``Mv``. + * For versor based transformations, the inverse transformation :meth:`~galgebra.lt.Lt.inv` is now based on simply :math:`\til{\mbf{V}}` instead of :math:`\mbf{V}^{-1} = {\frac 1 {\mbf{V} \til{\mbf{V}}}} {\til{\mbf{V}}}`, as a versor-based transformation is independent of taking nonzero scalar multiples of the versor. + * :class:`~galgebra.lt.Lt` adds support for LaTeX printing of versor-based transformations. + * The determinant method :meth:`~galgebra.lt.Lt.det` for a linear transformation is fixed, it now uses directly the geometric algebra definition of :math:`\lt{L}`'s determinant: :math:`\det(\lt{L}) = \lt{L}(\mbf{E}) \mbf{E}^{-1}`, where :math:`\mbf{E}` denotes the basis blade :math:`\mbf{E} = \es{1} \wedge \cdots \wedge \es{n}` for the grade space of pseudoscalars. + + Minor fixes includes: + + * ``norm`` is fixed by using ``metric.square_root_of_expr`` instead of ``sqrt`` + * making a "spinor" mv is kept for backward compatibility with existing tests, which is still aliased to making an "even" mv, see discussions ``10. An unimplemented suggestion`` in ``Changes to module lt.py`` attached in :issue:`478` + * fixed linting errors reported by ``flake8`` + * fixed some typos of ``return``, ``raise`` etc. + +- :feature:`510` Added example notebooks for typical GAs by Greg Grunberg, and they are now part of the tests: + + * Standard 2D Model :math:`\mathcal{G}_2`: :doc:`g2 ` + * Standard 3D Model :math:`\mathcal{G}_3`: :doc:`g3 ` + * Standard 4D Model :math:`\mathcal{G}_4`: :doc:`g4 ` + * 3D Homogeneous Coordinates :math:`\mathcal{G}_4`: :doc:`h3 ` + * 3D Conformal Model, Amsterdam convention :math:`\mathcal{G}_{4,1}`: :doc:`cm3 ` + * Spacetime algebra: :doc:`spacetime ` + * Sphere-related algebras: + + * Geometric algebra for unit sphere in :math:`\mathbb{R}^3` using spherical coordinates: :doc:`sp2 ` + * Unit sphere :math:`\mathbb{R}^3` as a submanifold of :math:`\mathcal{G}_3` in cartesian coordinates: :doc:`sp2g3 ` + * A geometric algebra for the unit sphere in :math:`\mathbb{R}^3` as a submanifold of :math:`\mathbb{R}^3` with spherical coordintes: :doc:`sp2sp3 ` + * Spherical Coordinates in :math:`\mathbb{R}^3`: :doc:`sp3 ` + - :release:`0.5.2 <2024.05.01>` - :support:`517` Add citation info, star history, contributors to README, and fix zenodo citation issue for ``0.5.1``. diff --git a/doc/index.rst b/doc/index.rst index 7b1043c6..7c6561de 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -23,6 +23,8 @@ :hidden: tutorials/algebra + tutorials/lt + tutorials/gprint .. toctree:: :caption: API diff --git a/doc/tutorials/cm3.nblink b/doc/tutorials/cm3.nblink new file mode 100644 index 00000000..b3362829 --- /dev/null +++ b/doc/tutorials/cm3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/cm3.ipynb" +} diff --git a/doc/tutorials/g2.nblink b/doc/tutorials/g2.nblink new file mode 100644 index 00000000..aaaea087 --- /dev/null +++ b/doc/tutorials/g2.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/g2.ipynb" +} diff --git a/doc/tutorials/g3.nblink b/doc/tutorials/g3.nblink new file mode 100644 index 00000000..4296628e --- /dev/null +++ b/doc/tutorials/g3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/g3.ipynb" +} diff --git a/doc/tutorials/g4.nblink b/doc/tutorials/g4.nblink new file mode 100644 index 00000000..792efcd3 --- /dev/null +++ b/doc/tutorials/g4.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/g4.ipynb" +} diff --git a/doc/tutorials/gprint.nblink b/doc/tutorials/gprint.nblink new file mode 100644 index 00000000..8e24f846 --- /dev/null +++ b/doc/tutorials/gprint.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/gprint.ipynb" +} diff --git a/doc/tutorials/h3.nblink b/doc/tutorials/h3.nblink new file mode 100644 index 00000000..26e2a89e --- /dev/null +++ b/doc/tutorials/h3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/h3.ipynb" +} diff --git a/doc/tutorials/lt.nblink b/doc/tutorials/lt.nblink new file mode 100644 index 00000000..5b8c4a56 --- /dev/null +++ b/doc/tutorials/lt.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/ipython/lt.ipynb" +} diff --git a/doc/tutorials/sp2.nblink b/doc/tutorials/sp2.nblink new file mode 100644 index 00000000..04ff90dc --- /dev/null +++ b/doc/tutorials/sp2.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/sp2.ipynb" +} diff --git a/doc/tutorials/sp2g3.nblink b/doc/tutorials/sp2g3.nblink new file mode 100644 index 00000000..53c81af0 --- /dev/null +++ b/doc/tutorials/sp2g3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/sp2g3.ipynb" +} diff --git a/doc/tutorials/sp2sp3.nblink b/doc/tutorials/sp2sp3.nblink new file mode 100644 index 00000000..56b4de64 --- /dev/null +++ b/doc/tutorials/sp2sp3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/sp2sp3.ipynb" +} diff --git a/doc/tutorials/sp3.nblink b/doc/tutorials/sp3.nblink new file mode 100644 index 00000000..5d2df21e --- /dev/null +++ b/doc/tutorials/sp3.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/sp3.ipynb" +} diff --git a/doc/tutorials/spacetime.nblink b/doc/tutorials/spacetime.nblink new file mode 100644 index 00000000..b27ea42d --- /dev/null +++ b/doc/tutorials/spacetime.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../examples/primer/spacetime.ipynb" +} diff --git a/examples/ipython/LaTeX.ipynb b/examples/ipython/LaTeX.ipynb index 60b98304..fab88b66 100644 --- a/examples/ipython/LaTeX.ipynb +++ b/examples/ipython/LaTeX.ipynb @@ -1519,43 +1519,43 @@ "\\begin{equation*} \\boldsymbol{\\nabla} \\cdot A = \\partial_{u} A^{u} + \\partial_{v} A^{v} \\end{equation*}\n", "\\begin{equation*} \\boldsymbol{\\nabla} A = \\left ( \\partial_{u} A^{u} + \\partial_{v} A^{v} \\right ) + \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\partial_{v} A^{u} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\partial_{u} A^{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\partial_{v} A^{v} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) \\partial_{u} A^{v} }{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} \\end{equation*}\n", "3d orthogonal ($A,\\;B$ are linear transformations)\n", - "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{yx} \\boldsymbol{e}_{y} + A_{zx} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{zy} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\f{mat}{A} = \\left[\\begin{array}{ccc}A_{xx} & A_{xy} & A_{xz}\\\\A_{yx} & A_{yy} & A_{yz}\\\\A_{zx} & A_{zy} & A_{zz}\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} \\f{\\det}{A} = A_{xz} \\left(A_{yx} A_{zy} - A_{yy} A_{zx}\\right) - A_{yz} \\left(A_{xx} A_{zy} - A_{xy} A_{zx}\\right) + A_{zz} \\left(A_{xx} A_{yy} - A_{xy} A_{yx}\\right) \\end{equation*}\n", - "\\begin{equation*} \\overline{A} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{xy} \\boldsymbol{e}_{y} + A_{xz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{yx} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{yz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{zx} \\boldsymbol{e}_{x} + A_{zy} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\f{\\Tr}{A} = A_{xx} + A_{yy} + A_{zz} \\end{equation*}\n", - "\\begin{equation*} \\f{A}{e_x\\W e_y} = \\left ( A_{xx} A_{yy} - A_{xy} A_{yx}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} + \\left ( A_{xx} A_{zy} - A_{xy} A_{zx}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} + \\left ( A_{yx} A_{zy} - A_{yy} A_{zx}\\right ) \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{equation*}\n", - "\\begin{equation*} \\f{A}{e_x}\\W \\f{A}{e_y} = \\left ( A_{xx} A_{yy} - A_{xy} A_{yx}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} + \\left ( A_{xx} A_{zy} - A_{xy} A_{zx}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} + \\left ( A_{yx} A_{zy} - A_{yy} A_{zx}\\right ) \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{equation*}\n", + "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto {A^{x}}_{x} \\boldsymbol{e}_{x} + {A^{y}}_{x} \\boldsymbol{e}_{y} + {A^{z}}_{x} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {A^{x}}_{y} \\boldsymbol{e}_{x} + {A^{y}}_{y} \\boldsymbol{e}_{y} + {A^{z}}_{y} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {A^{x}}_{z} \\boldsymbol{e}_{x} + {A^{y}}_{z} \\boldsymbol{e}_{y} + {A^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\f{mat}{A} = \\left[\\begin{array}{ccc}{A^{x}}_{x} & {A^{x}}_{y} & {A^{x}}_{z}\\\\{A^{y}}_{x} & {A^{y}}_{y} & {A^{y}}_{z}\\\\{A^{z}}_{x} & {A^{z}}_{y} & {A^{z}}_{z}\\end{array}\\right] \\end{equation*}\n", + "\\begin{equation*} \\f{\\det}{A} = {A^{x}}_{x} {A^{y}}_{y} {A^{z}}_{z} - {A^{x}}_{x} {A^{y}}_{z} {A^{z}}_{y} - {A^{x}}_{y} {A^{y}}_{x} {A^{z}}_{z} + {A^{x}}_{y} {A^{y}}_{z} {A^{z}}_{x} + {A^{x}}_{z} {A^{y}}_{x} {A^{z}}_{y} - {A^{x}}_{z} {A^{y}}_{y} {A^{z}}_{x} \\end{equation*}\n", + "\\begin{equation*} \\overline{A} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto {A^{x}}_{x} \\boldsymbol{e}_{x} + {A^{x}}_{y} \\boldsymbol{e}_{y} + {A^{x}}_{z} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {A^{y}}_{x} \\boldsymbol{e}_{x} + {A^{y}}_{y} \\boldsymbol{e}_{y} + {A^{y}}_{z} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {A^{z}}_{x} \\boldsymbol{e}_{x} + {A^{z}}_{y} \\boldsymbol{e}_{y} + {A^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\f{\\Tr}{A} = {A^{x}}_{x} + {A^{y}}_{y} + {A^{z}}_{z} \\end{equation*}\n", + "\\begin{equation*} \\f{A}{e_x\\W e_y} = \\left ( {A^{x}}_{x} {A^{y}}_{y} - {A^{x}}_{y} {A^{y}}_{x}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} + \\left ( {A^{x}}_{x} {A^{z}}_{y} - {A^{x}}_{y} {A^{z}}_{x}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} + \\left ( {A^{y}}_{x} {A^{z}}_{y} - {A^{y}}_{y} {A^{z}}_{x}\\right ) \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{equation*}\n", + "\\begin{equation*} \\f{A}{e_x}\\W \\f{A}{e_y} = \\left ( {A^{x}}_{x} {A^{y}}_{y} - {A^{x}}_{y} {A^{y}}_{x}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} + \\left ( {A^{x}}_{x} {A^{z}}_{y} - {A^{x}}_{y} {A^{z}}_{x}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} + \\left ( {A^{y}}_{x} {A^{z}}_{y} - {A^{y}}_{y} {A^{z}}_{x}\\right ) \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{equation*}\n", "\\begin{equation*} g = \\left[\\begin{array}{ccc}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{array}\\right] \\end{equation*}\n", "\\begin{equation*} g^{-1} = \\left[\\begin{array}{ccc}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} A + B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( A_{xx} + B_{xx}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yx} + B_{yx}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zx} + B_{zx}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( A_{xy} + B_{xy}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yy} + B_{yy}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zy} + B_{zy}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( A_{xz} + B_{xz}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yz} + B_{yz}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zz} + B_{zz}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} AB = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( A_{xx} B_{xx} + A_{xy} B_{yx} + A_{xz} B_{zx}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yx} B_{xx} + A_{yy} B_{yx} + A_{yz} B_{zx}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zx} B_{xx} + A_{zy} B_{yx} + A_{zz} B_{zx}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( A_{xx} B_{xy} + A_{xy} B_{yy} + A_{xz} B_{zy}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yx} B_{xy} + A_{yy} B_{yy} + A_{yz} B_{zy}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zx} B_{xy} + A_{zy} B_{yy} + A_{zz} B_{zy}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( A_{xx} B_{xz} + A_{xy} B_{yz} + A_{xz} B_{zz}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yx} B_{xz} + A_{yy} B_{yz} + A_{yz} B_{zz}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zx} B_{xz} + A_{zy} B_{yz} + A_{zz} B_{zz}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} A - B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( A_{xx} - B_{xx}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yx} - B_{yx}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zx} - B_{zx}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( A_{xy} - B_{xy}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yy} - B_{yy}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zy} - B_{zy}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( A_{xz} - B_{xz}\\right ) \\boldsymbol{e}_{x} + \\left ( A_{yz} - B_{yz}\\right ) \\boldsymbol{e}_{y} + \\left ( A_{zz} - B_{zz}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A + B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( {A^{x}}_{x} + {B^{x}}_{x}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{x} + {B^{y}}_{x}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{x} + {B^{z}}_{x}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( {A^{x}}_{y} + {B^{x}}_{y}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{y} + {B^{y}}_{y}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{y} + {B^{z}}_{y}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( {A^{x}}_{z} + {B^{x}}_{z}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{z} + {B^{y}}_{z}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{z} + {B^{z}}_{z}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} AB = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( {A^{x}}_{x} {B^{x}}_{x} + {A^{x}}_{y} {B^{y}}_{x} + {A^{x}}_{z} {B^{z}}_{x}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{x} {B^{x}}_{x} + {A^{y}}_{y} {B^{y}}_{x} + {A^{y}}_{z} {B^{z}}_{x}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{x} {B^{x}}_{x} + {A^{z}}_{y} {B^{y}}_{x} + {A^{z}}_{z} {B^{z}}_{x}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( {A^{x}}_{x} {B^{x}}_{y} + {A^{x}}_{y} {B^{y}}_{y} + {A^{x}}_{z} {B^{z}}_{y}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{x} {B^{x}}_{y} + {A^{y}}_{y} {B^{y}}_{y} + {A^{y}}_{z} {B^{z}}_{y}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{x} {B^{x}}_{y} + {A^{z}}_{y} {B^{y}}_{y} + {A^{z}}_{z} {B^{z}}_{y}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( {A^{x}}_{x} {B^{x}}_{z} + {A^{x}}_{y} {B^{y}}_{z} + {A^{x}}_{z} {B^{z}}_{z}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{x} {B^{x}}_{z} + {A^{y}}_{y} {B^{y}}_{z} + {A^{y}}_{z} {B^{z}}_{z}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{x} {B^{x}}_{z} + {A^{z}}_{y} {B^{y}}_{z} + {A^{z}}_{z} {B^{z}}_{z}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A - B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto \\left ( {A^{x}}_{x} - {B^{x}}_{x}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{x} - {B^{y}}_{x}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{x} - {B^{z}}_{x}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\left ( {A^{x}}_{y} - {B^{x}}_{y}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{y} - {B^{y}}_{y}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{y} - {B^{z}}_{y}\\right ) \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto \\left ( {A^{x}}_{z} - {B^{x}}_{z}\\right ) \\boldsymbol{e}_{x} + \\left ( {A^{y}}_{z} - {B^{y}}_{z}\\right ) \\boldsymbol{e}_{y} + \\left ( {A^{z}}_{z} - {B^{z}}_{z}\\right ) \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", "\\begin{equation*} General Symmetric Linear Transformation \\end{equation*}\n", - "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{xy} \\boldsymbol{e}_{y} + A_{xz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{yz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{1} \\boldsymbol{e}_{x} + A_{2} \\boldsymbol{e}_{y} + A_{3} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{2} \\boldsymbol{e}_{x} + A_{4} \\boldsymbol{e}_{y} + A_{5} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{3} \\boldsymbol{e}_{x} + A_{5} \\boldsymbol{e}_{y} + A_{6} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", "\\begin{equation*} General Antisymmetric Linear Transformation \\end{equation*}\n", - "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto - A_{xy} \\boldsymbol{e}_{y} - A_{xz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} - A_{yz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto - A_{1} \\boldsymbol{e}_{y} - A_{2} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{1} \\boldsymbol{e}_{x} - A_{3} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{2} \\boldsymbol{e}_{x} + A_{3} \\boldsymbol{e}_{y} \\end{aligned} \\right\\} \\end{equation*}\n", "2d general ($A,\\;B$ are linear transformations)\n", "\\begin{equation*} g = \\left[\\begin{array}{cc}\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) & \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\\\\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) & \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) \\end{array}\\right] \\end{equation*}\n", "\\begin{equation*} g^{-1} = \\left[\\begin{array}{cc}\\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) }{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} & - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) }{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\\\- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) }{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} & \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) }{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\end{array}\\right] \\end{equation*}\n", "\\begin{equation*} gg^{-1} = \\left[\\begin{array}{cc}1 & 0\\\\0 & 1\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\f{mat}{A} = \\left[\\begin{array}{cc}A_{uu} & A_{uv}\\\\A_{vu} & A_{vv}\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} \\f{\\det}{A} = \\frac{- \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} + \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v}}{\\sqrt{\\left (\\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\cdot \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\right ) \\left (\\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\cdot \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\right ) - \\left (\\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(- \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\cdot \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{u} + \\left(\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\right) \\boldsymbol{e}_{v}\\right ) ^{2}}} \\end{equation*}\n", - "\\begin{equation*} \\overline{A} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{3} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\f{mat}{\\overline{A}} = \\left[\\begin{array}{cc}\\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left(\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu}\\right) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left(\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv} - \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vu}\\right)}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} & \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vv} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4} A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}}\\\\\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{4} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{3} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{3} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vv} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} & \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left(\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{3} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}\\right) + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) \\left(\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vu}\\right)}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} - 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}}\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} \\f{\\Tr}{A} = - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{vv}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} A_{uu}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{uv}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{3} A_{vu}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} + 2 \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{4}} \\end{equation*}\n", - "\\begin{equation*} \\f{A}{e_u\\W e_v} = \\frac{A_{uu} A_{vv} - A_{uv} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} \\end{equation*}\n", - "\\begin{equation*} \\f{A}{e_u}\\W \\f{A}{e_v} = \\frac{A_{uu} A_{vv} - A_{uv} A_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} \\end{equation*}\n", - "\\begin{equation*} B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} A + B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} A - B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} - \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vv} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vv} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} - \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{uv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{uu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{uu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) A_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) B_{vv} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) A_{vu} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) B_{vu}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto {A^{u}}_{u} \\boldsymbol{e}_{u} + {A^{v}}_{u} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto {A^{u}}_{v} \\boldsymbol{e}_{u} + {A^{v}}_{v} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\f{mat}{A} = \\left[\\begin{array}{cc}{A^{u}}_{u} & {A^{u}}_{v}\\\\{A^{v}}_{u} & {A^{v}}_{v}\\end{array}\\right] \\end{equation*}\n", + "\\begin{equation*} \\f{\\det}{A} = - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} {A^{v}}_{v}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{v} {A^{v}}_{u}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{u} {A^{v}}_{v}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{v} {A^{v}}_{u}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\end{equation*}\n", + "\\begin{equation*} \\overline{A} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} {A^{u}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{u} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\f{mat}{\\overline{A}} = \\left[\\begin{array}{cc}\\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} & \\frac{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} + \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\\\\\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) ^{2} {A^{u}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} & \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{v} + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{u} - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{u}}{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) - \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}}\\end{array}\\right] \\end{equation*}\n", + "\\begin{equation*} \\f{\\Tr}{A} = - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{u}}_{u}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} - \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) {A^{v}}_{v}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{u}}_{u}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} + \\frac{\\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2} {A^{v}}_{v}}{- \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{u}\\right ) \\left (\\boldsymbol{e}_{v}\\cdot \\boldsymbol{e}_{v}\\right ) + \\left (\\boldsymbol{e}_{u}\\cdot \\boldsymbol{e}_{v}\\right ) ^{2}} \\end{equation*}\n", + "\\begin{equation*} \\f{A}{e_u\\W e_v} = \\left ( {A^{u}}_{u} {A^{v}}_{v} - {A^{u}}_{v} {A^{v}}_{u}\\right ) \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} \\end{equation*}\n", + "\\begin{equation*} \\f{A}{e_u}\\W \\f{A}{e_v} = \\left ( {A^{u}}_{u} {A^{v}}_{v} - {A^{u}}_{v} {A^{v}}_{u}\\right ) \\boldsymbol{e}_{u}\\wedge \\boldsymbol{e}_{v} \\end{equation*}\n", + "\\begin{equation*} B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto {B^{u}}_{u} \\boldsymbol{e}_{u} + {B^{v}}_{u} \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto {B^{u}}_{v} \\boldsymbol{e}_{u} + {B^{v}}_{v} \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A + B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\left ( {A^{u}}_{u} + {B^{u}}_{u}\\right ) \\boldsymbol{e}_{u} + \\left ( {A^{v}}_{u} + {B^{v}}_{u}\\right ) \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\left ( {A^{u}}_{v} + {B^{u}}_{v}\\right ) \\boldsymbol{e}_{u} + \\left ( {A^{v}}_{v} + {B^{v}}_{v}\\right ) \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} A - B = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{u} &\\mapsto \\left ( {A^{u}}_{u} - {B^{u}}_{u}\\right ) \\boldsymbol{e}_{u} + \\left ( {A^{v}}_{u} - {B^{v}}_{u}\\right ) \\boldsymbol{e}_{v} \\\\ \\boldsymbol{e}_{v} &\\mapsto \\left ( {A^{u}}_{v} - {B^{u}}_{v}\\right ) \\boldsymbol{e}_{u} + \\left ( {A^{v}}_{v} - {B^{v}}_{v}\\right ) \\boldsymbol{e}_{v} \\end{aligned} \\right\\} \\end{equation*}\n", "\\begin{equation*} a\\cdot \\f{\\overline{A}}{b}-b\\cdot \\f{\\underline{A}}{a} = 0 \\end{equation*}\n", "\\begin{equation*} g = \\left[\\begin{array}{cccc}1 & 0 & 0 & 0\\\\0 & -1 & 0 & 0\\\\0 & 0 & -1 & 0\\\\0 & 0 & 0 & -1\\end{array}\\right] \\end{equation*}\n", - "\\begin{equation*} \\underline{T} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{t} &\\mapsto T_{tt} \\boldsymbol{e}_{t} + T_{xt} \\boldsymbol{e}_{x} + T_{yt} \\boldsymbol{e}_{y} + T_{zt} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{x} &\\mapsto - T_{tx} \\boldsymbol{e}_{t} - T_{xx} \\boldsymbol{e}_{x} - T_{yx} \\boldsymbol{e}_{y} - T_{zx} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto - T_{ty} \\boldsymbol{e}_{t} - T_{xy} \\boldsymbol{e}_{x} - T_{yy} \\boldsymbol{e}_{y} - T_{zy} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto - T_{tz} \\boldsymbol{e}_{t} - T_{xz} \\boldsymbol{e}_{x} - T_{yz} \\boldsymbol{e}_{y} - T_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\overline{T} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{t} &\\mapsto T_{tt} \\boldsymbol{e}_{t} + T_{tx} \\boldsymbol{e}_{x} + T_{ty} \\boldsymbol{e}_{y} + T_{tz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{x} &\\mapsto - T_{xt} \\boldsymbol{e}_{t} - T_{xx} \\boldsymbol{e}_{x} - T_{xy} \\boldsymbol{e}_{y} - T_{xz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto - T_{yt} \\boldsymbol{e}_{t} - T_{yx} \\boldsymbol{e}_{x} - T_{yy} \\boldsymbol{e}_{y} - T_{yz} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto - T_{zt} \\boldsymbol{e}_{t} - T_{zx} \\boldsymbol{e}_{x} - T_{zy} \\boldsymbol{e}_{y} - T_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", - "\\begin{equation*} \\f{\\det}{\\underline{T}} = T_{tz} \\left(T_{xt} T_{yx} T_{zy} - T_{xt} T_{yy} T_{zx} - T_{xx} T_{yt} T_{zy} + T_{xx} T_{yy} T_{zt} + T_{xy} T_{yt} T_{zx} - T_{xy} T_{yx} T_{zt}\\right) - T_{xz} \\left(T_{tt} T_{yx} T_{zy} - T_{tt} T_{yy} T_{zx} - T_{tx} T_{yt} T_{zy} + T_{tx} T_{yy} T_{zt} + T_{ty} T_{yt} T_{zx} - T_{ty} T_{yx} T_{zt}\\right) + T_{yz} \\left(T_{tt} T_{xx} T_{zy} - T_{tt} T_{xy} T_{zx} - T_{tx} T_{xt} T_{zy} + T_{tx} T_{xy} T_{zt} + T_{ty} T_{xt} T_{zx} - T_{ty} T_{xx} T_{zt}\\right) - T_{zz} \\left(T_{tt} T_{xx} T_{yy} - T_{tt} T_{xy} T_{yx} - T_{tx} T_{xt} T_{yy} + T_{tx} T_{xy} T_{yt} + T_{ty} T_{xt} T_{yx} - T_{ty} T_{xx} T_{yt}\\right) \\end{equation*}\n", - "\\begin{equation*} \\f{\\mbox{tr}}{\\underline{T}} = T_{tt} - T_{xx} - T_{yy} - T_{zz} \\end{equation*}\n", + "\\begin{equation*} \\underline{T} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{t} &\\mapsto {T^{t}}_{t} \\boldsymbol{e}_{t} + {T^{x}}_{t} \\boldsymbol{e}_{x} + {T^{y}}_{t} \\boldsymbol{e}_{y} + {T^{z}}_{t} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{x} &\\mapsto {T^{t}}_{x} \\boldsymbol{e}_{t} + {T^{x}}_{x} \\boldsymbol{e}_{x} + {T^{y}}_{x} \\boldsymbol{e}_{y} + {T^{z}}_{x} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {T^{t}}_{y} \\boldsymbol{e}_{t} + {T^{x}}_{y} \\boldsymbol{e}_{x} + {T^{y}}_{y} \\boldsymbol{e}_{y} + {T^{z}}_{y} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {T^{t}}_{z} \\boldsymbol{e}_{t} + {T^{x}}_{z} \\boldsymbol{e}_{x} + {T^{y}}_{z} \\boldsymbol{e}_{y} + {T^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\overline{T} = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{t} &\\mapsto {T^{t}}_{t} \\boldsymbol{e}_{t} - {T^{t}}_{x} \\boldsymbol{e}_{x} - {T^{t}}_{y} \\boldsymbol{e}_{y} - {T^{t}}_{z} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{x} &\\mapsto - {T^{x}}_{t} \\boldsymbol{e}_{t} + {T^{x}}_{x} \\boldsymbol{e}_{x} + {T^{x}}_{y} \\boldsymbol{e}_{y} + {T^{x}}_{z} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto - {T^{y}}_{t} \\boldsymbol{e}_{t} + {T^{y}}_{x} \\boldsymbol{e}_{x} + {T^{y}}_{y} \\boldsymbol{e}_{y} + {T^{y}}_{z} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto - {T^{z}}_{t} \\boldsymbol{e}_{t} + {T^{z}}_{x} \\boldsymbol{e}_{x} + {T^{z}}_{y} \\boldsymbol{e}_{y} + {T^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\} \\end{equation*}\n", + "\\begin{equation*} \\f{\\det}{\\underline{T}} = {T^{t}}_{t} {T^{x}}_{x} {T^{y}}_{y} {T^{z}}_{z} - {T^{t}}_{t} {T^{x}}_{x} {T^{y}}_{z} {T^{z}}_{y} - {T^{t}}_{t} {T^{x}}_{y} {T^{y}}_{x} {T^{z}}_{z} + {T^{t}}_{t} {T^{x}}_{y} {T^{y}}_{z} {T^{z}}_{x} + {T^{t}}_{t} {T^{x}}_{z} {T^{y}}_{x} {T^{z}}_{y} - {T^{t}}_{t} {T^{x}}_{z} {T^{y}}_{y} {T^{z}}_{x} - {T^{t}}_{x} {T^{x}}_{t} {T^{y}}_{y} {T^{z}}_{z} + {T^{t}}_{x} {T^{x}}_{t} {T^{y}}_{z} {T^{z}}_{y} + {T^{t}}_{x} {T^{x}}_{y} {T^{y}}_{t} {T^{z}}_{z} - {T^{t}}_{x} {T^{x}}_{y} {T^{y}}_{z} {T^{z}}_{t} - {T^{t}}_{x} {T^{x}}_{z} {T^{y}}_{t} {T^{z}}_{y} + {T^{t}}_{x} {T^{x}}_{z} {T^{y}}_{y} {T^{z}}_{t} + {T^{t}}_{y} {T^{x}}_{t} {T^{y}}_{x} {T^{z}}_{z} - {T^{t}}_{y} {T^{x}}_{t} {T^{y}}_{z} {T^{z}}_{x} - {T^{t}}_{y} {T^{x}}_{x} {T^{y}}_{t} {T^{z}}_{z} + {T^{t}}_{y} {T^{x}}_{x} {T^{y}}_{z} {T^{z}}_{t} + {T^{t}}_{y} {T^{x}}_{z} {T^{y}}_{t} {T^{z}}_{x} - {T^{t}}_{y} {T^{x}}_{z} {T^{y}}_{x} {T^{z}}_{t} - {T^{t}}_{z} {T^{x}}_{t} {T^{y}}_{x} {T^{z}}_{y} + {T^{t}}_{z} {T^{x}}_{t} {T^{y}}_{y} {T^{z}}_{x} + {T^{t}}_{z} {T^{x}}_{x} {T^{y}}_{t} {T^{z}}_{y} - {T^{t}}_{z} {T^{x}}_{x} {T^{y}}_{y} {T^{z}}_{t} - {T^{t}}_{z} {T^{x}}_{y} {T^{y}}_{t} {T^{z}}_{x} + {T^{t}}_{z} {T^{x}}_{y} {T^{y}}_{x} {T^{z}}_{t} \\end{equation*}\n", + "\\begin{equation*} \\f{\\mbox{tr}}{\\underline{T}} = {T^{t}}_{t} + {T^{x}}_{x} + {T^{y}}_{y} + {T^{z}}_{z} \\end{equation*}\n", "\\begin{equation*} a\\cdot \\f{\\overline{T}}{b}-b\\cdot \\f{\\underline{T}}{a} = 0 \\end{equation*}\n", "\\begin{equation*} f = f \\end{equation*}\n", "\\begin{equation*} \\boldsymbol{\\nabla} f = \\partial_{u} f \\boldsymbol{e}_{u} + \\frac{\\partial_{v} f }{\\sin{\\left (u \\right )}} \\boldsymbol{e}_{v} \\end{equation*}\n", diff --git a/examples/ipython/issue-511.ipynb b/examples/ipython/issue-511.ipynb new file mode 100644 index 00000000..5902a167 --- /dev/null +++ b/examples/ipython/issue-511.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c037437a-5863-4af2-82fb-3f715a984ad0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(e_0, e_0)" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from galgebra.ga import Ga\n", + "import sympy as S\n", + "\n", + "ga = Ga('e', g=[1,1,1], coords=S.symbols(f\"0:{3}\", real=True), wedge=False)\n", + "ex,ey,ez = ga.mv()\n", + "ex**-1, ga.mv(1)/ex" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ea2d702a-dd04-4f5c-8794-1efefc8e7ee9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{1}{8} \\mathbf{e}_{0}$" + ], + "text/plain": [ + "e_0/8" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2*ex)**-3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "09faf76e-f43c-4023-be91-3f2460de0456", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{1}{65536}$" + ], + "text/plain": [ + "1/65536" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2*ex)**-16" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "91e20a05-ba7d-48cd-8916-d7460fb99e87", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2*e_0/29 + 3*e_1/29 + 4*e_2/29, 2*e_0/841 + 3*e_1/841 + 4*e_2/841)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((2*ex + 3*ey + 4*ez).inv(), (2*ex + 3*ey + 4*ez)**-3)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "bdf6ce81-ab58-4e3b-aa72-6cd320e6062d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{1}{841}$" + ], + "text/plain": [ + "1/841" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2*ex + 3*ey + 4*ez).inv() * (2*ex + 3*ey + 4*ez)**-3" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2a557448-ac80-4b1c-87a0-0d25d731953c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((2*ex + 3*ey + 4*ez)**3) * (2*ex + 3*ey + 4*ez)**-3" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fd88f171-7f74-4112-9123-e986d8d92d76", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(2*ex + 3*ey + 4*ez)**-3 * ((2*ex + 3*ey + 4*ez)**3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47ca185d-a790-4ba9-9c45-265572e6675d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/issue-513.ipynb b/examples/ipython/issue-513.ipynb new file mode 100644 index 00000000..5e42d46c --- /dev/null +++ b/examples/ipython/issue-513.ipynb @@ -0,0 +1,196 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "26c91d51-9f62-4c3e-9d02-2ca3a0977913", + "metadata": {}, + "outputs": [], + "source": [ + "from galgebra.ga import Ga\n", + "import sympy as S\n", + "\n", + "x,y,z = coords = S.symbols('x y z', real=True)\n", + "ga = Ga('e', g=[1,1,1], coords=coords, wedge=False)\n", + "ex,ey,ez = ga.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5d541f6c-f9f8-4adb-a4b5-5ab27a9293dc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{x} \\frac{\\partial}{\\partial x} + \\mathbf{e}_{y} \\frac{\\partial}{\\partial y} + \\mathbf{e}_{z} \\frac{\\partial}{\\partial z}$" + ], + "text/plain": [ + "e_x*D{x} + e_y*D{y} + e_z*D{z}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ga.grad" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d07a0e79-b467-4cef-9ea6-3b49e925bf0e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ga.grad * (x*ex)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "417d322c-30f5-4353-9f32-cc39cb7b2d8e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{x}$" + ], + "text/plain": [ + "e_x" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(x*ex).diff(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7d66fe00-5011-4946-ad4f-9ae6f38c315d", + "metadata": {}, + "outputs": [], + "source": [ + "x,y,z = coords = S.symbols('x y z', real=True)\n", + "ga = Ga('e', g=[1,1,1], coords=coords, wedge=False)\n", + "ex,ey,ez = ga.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7bac45e6-985f-497d-b13e-b40f9150dfd5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{x} \\frac{\\partial}{\\partial x} + \\mathbf{e}_{y} \\frac{\\partial}{\\partial y} + \\mathbf{e}_{z} \\frac{\\partial}{\\partial z}$" + ], + "text/plain": [ + "e_x*D{x} + e_y*D{y} + e_z*D{z}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ga.grad" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2f8161af-c147-4fcf-adfa-53613b24210f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ga.grad * (x*ex)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "231177c9-3422-4e33-9ace-d914502ba060", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{x}$" + ], + "text/plain": [ + "e_x" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(x*ex).pdiff(x) # notice this is pdiff() not diff() this tim" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/issue-514.ipynb b/examples/ipython/issue-514.ipynb new file mode 100644 index 00000000..135a7c80 --- /dev/null +++ b/examples/ipython/issue-514.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c98f4750-3af1-4749-b2a6-8a17764511bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(e_xyz, e_xyz, 'Iinv+')" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from galgebra.ga import Ga\n", + "import sympy as S\n", + "\n", + "Ga.dual_mode('Iinv+')\n", + "\n", + "ga = Ga('e', g=[1,1,1], coords=S.symbols('x y z', real=True), wedge=False)\n", + "ex,ey,ez = ga.mv()\n", + "I = ga.i\n", + "(ex*I) * (ex*I).dual(), (ex*I).dual() * (ex*I), ga.dual_mode_value" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "95c6f201-9f55-4e5d-9996-6a19b0f915ff", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(ex*I).dual().undual() == (ex*I)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8d2ce01-aae9-46ff-be2d-225138fa30cf", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/issue-516.ipynb b/examples/ipython/issue-516.ipynb new file mode 100644 index 00000000..5360e912 --- /dev/null +++ b/examples/ipython/issue-516.ipynb @@ -0,0 +1,59 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ee7c8882-7356-441a-920e-3603d081002b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1]\n", + "[1]\n" + ] + } + ], + "source": [ + "from galgebra.ga import Ga\n", + "import sympy as S\n", + "\n", + "ga = Ga('e', g=[1,1,1], coords=S.symbols(f\"0:3\", real=True), wedge=False)\n", + "x,y,z = ga.mv()\n", + "a = ga.mv('A','mv')\n", + "print((a.grade(0)*x).grades)\n", + "print((a.grade(0)^x).grades)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8920d631-eb4f-4955-9558-9dc158b5171e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/issue-518.ipynb b/examples/ipython/issue-518.ipynb new file mode 100644 index 00000000..2e891d10 --- /dev/null +++ b/examples/ipython/issue-518.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "2956314d-53f6-4150-ab15-90eaa84e8815", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from galgebra.ga import Ga\n", + "import sympy as S\n", + "\n", + "ga = Ga('e', g=[1,1,1], coords=S.symbols(f\"0:{3}\", real=True), wedge=False)\n", + "x,y,z = ga.mv()\n", + "(x**0).grade()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2fa9ab19-eb44-4eb8-b369-453cd779a249", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle 1$" + ], + "text/plain": [ + "1" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(x**2).grade()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b287705-2c5a-4a6b-88f4-ba7c7c336947", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/lt.ipynb b/examples/ipython/lt.ipynb new file mode 100644 index 00000000..2bfab038 --- /dev/null +++ b/examples/ipython/lt.ipynb @@ -0,0 +1,1858 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6db85fa4", + "metadata": {}, + "source": [ + "# Linear Transformations / Outermorphisms in GAlgebra\n", + "\n", + "Author: Greg Grunberg\n", + "\n", + "Last updated: 2021-11-04\n", + "\n", + "Original name: `Linear Transformations in GAlgebra.ipynb` in [GSG_2021-11-05_GAlgebra_fixes.zip](https://github.com/pygae/galgebra/issues/478)" + ] + }, + { + "cell_type": "markdown", + "id": "3fa7d107", + "metadata": {}, + "source": [ + "## 1. Preliminaries\n", + "\n", + "This Markdown cell implements certain user-defined LaTeX macros which I'm in the habit of using. (Not all are used by this notebook.) The macros ease creation of LaTeX/MathJax code, which in turn allows production of more readable Markdown cells and In[ ] cell output. \n", + "- Enter edit mode to see definitions of the macros. \n", + "- Exit edit mode (Shift+Enter) to activate the macros in this notebook. \n", + "- An example of each macro follows its definition. The typeset result of each macro appears when not in edit mode.\n", + "\n", + "$$\\newcommand {\\Rn}[1] {\\mathbb{R}^{#1}}$$ $\\Rn{p,q}$ scalar product space of signature $(p,q)$ \n", + "$$\\newcommand {\\Gn}[1]{\\mathbb{G}^{#1}}$$ $\\Gn{p,q}$ geometric algebra of signature $(p,q)$\n", + "$$\\newcommand {\\op} {\\wedge}$$ $A \\op B$ outer product\n", + "$$\\newcommand {\\ip} {\\cdot}$$ $A \\ip B$ dot product\n", + "$$\\newcommand {\\lc} {\\rfloor}$$ $A \\lc B$ left contraction\n", + "$$\\newcommand {\\rc} {\\lfloor}$$ $A \\rc B$ right contraction\n", + "$$\\newcommand {\\dual} {^\\star}$$ $A\\dual$ dual of multivector\n", + "$$\\newcommand {\\undual} {^{-\\star}}$$ $A\\undual$ undual of multivector \n", + "$$\\newcommand {\\rev} {^\\dagger}$$ $A\\rev$ reverse of multivector (dagger notation)\n", + "$$\\newcommand {\\til}[1] {\\widetilde{#1}}$$ $\\til{A}$ reverse of multivector (tilde notation)\n", + "$$\\newcommand {\\ginvol}[1] {\\widehat{#1}}$$ $\\ginvol{A}$ grade involute of multivector\n", + "$$\\newcommand {\\ccon}[1] {\\overline{#1}}$$ $\\ccon{A}$ Clifford conjugate of multivector \n", + "$$\\newcommand {\\lt}[1] {\\mathsf{#1}}$$ $\\lt{T}$ linear transformation / outermorphism \n", + "$$\\newcommand {\\ad}[1] {\\mathsf{#1}^\\ast}$$ $\\ad{T}$ adjoint of linear transformation / outermorphism \n", + "$$\\newcommand {\\es}[1] {\\mathbf{e}_{#1}}$$ $\\es{j}$ (orthonormal) basis vector\n", + "$$\\newcommand {\\eS}[1] {\\mathbf{e}^{#1}}$$ $\\eS{i}$ (orthonormal) reciprocal basis vector\n", + "$$\\newcommand {\\bas}[2] {\\mathbf{#1}_{#2}}$$ $\\bas{b}{j}$ basis vector\n", + "$$\\newcommand {\\baS}[2] {\\mathbf{#1}^{#2}}$$ $\\baS{b}{i}$ reciprocal basis vector\n", + "$$\\newcommand {\\oder}[3] {\\dfrac{d^{#3}{#1}}{d{#2}^{#3}}}$$ $\\oder{y}{x}{k}$ $k$th ordinary derivative \n", + "$$\\newcommand {\\pder}[3] {\\dfrac{\\partial^{#3} {#1}}{\\partial{#2}^{#3}}}$$ \n", + "$\\pder{u}{(x^i)}{k}$ $k$th partial derivative\n", + "$$\\newcommand {\\qform}[1] {\\mathscr{Q}\\left({#1}\\right)}$$ $\\qform{A}$ quadratic form \n", + "$$\\newcommand {\\norm}[1] {\\left\\|{#1}\\right\\|}$$ $\\norm{A}$ norm \n", + "$$\\newcommand {\\normsq}[1] {\\left\\|{#1}\\right\\|^2}$$ $\\normsq{A}$ normsquared \n", + "$$\\newcommand {\\mag}[1] {\\left|{#1}\\right|}$$ $\\mag{A}$ magnitude \n", + "$$\\newcommand {\\magsq}[1] {\\left|{#1}\\right|^2}$$ $\\magsq{A}$ magnitude squared \n", + "$$\\newcommand {\\mbf}[1] {\\mathbf{#1}}$$ $\\mbf{A}$ mathboldface font \n", + "$$\\newcommand {\\msf}[1] {\\mathsf{#1}}$$ $\\msf{A}$ mathsansserif font\n", + "$$\\newcommand {\\mbs}[1] {\\boldsymbol{#1}}$$ $\\mbs{\\kappa}$ boldsymbol font \n", + "$$\\newcommand {\\scrB} {\\mathscr{B}}$$ $\\scrB$ basis \n", + "$$\\newcommand {\\scrE} {\\mathscr{E}}$$ $\\scrE$ (orthonormal) basis" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b65eb12b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\textsf{This notebook is now using} \\\\\\qquad\\bullet~ \\textsf{Python }3.11.8\\qquad\\bullet~ \\textsf{SymPy }1.12\\qquad\\bullet~ \\textsf{GAlgebra }0.5.1.$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Initialize this notebook to use SymPy and GAlgebra:\n", + "import platform\n", + "import sympy \n", + "import galgebra\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.lt import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()\n", + "Ga.dual_mode('Iinv+') \n", + "gprint(r'\\textsf{This notebook is now using} \\\\',\n", + " r'\\qquad\\bullet~ \\textsf{Python }', platform.python_version(),\n", + " r'\\qquad\\bullet~ \\textsf{SymPy }', sympy.__version__[:],\n", + " r'\\qquad\\bullet~ \\textsf{GAlgebra }', galgebra.__version__[:], r'.')" + ] + }, + { + "cell_type": "markdown", + "id": "9d4c3b94", + "metadata": {}, + "source": [ + "**Important:** GAlgebra 0.5.0 is the version available as of this file date from the PyGAE GAlgebra website at https://github.com/pygae/galgebra. This notebook actually uses GAlgebra 0.5.0 but with two of its modules, **lt.py** and **mv.py**, modified. The modifications have corrected those version 0.5.0 bugs of which I'm aware. The changes have also added to the capabilities offered by those modules.\n", + "\n", + "This notebook also uses module **gprinter.py**, provided to me by Alan Bromborsky (the original author of GAlgebra), which is not part of GAlgebra 0.5.0. That module's `gprint` function is used extensively in this notebook's In[ ] cells to produce beautifully formatted output." + ] + }, + { + "cell_type": "markdown", + "id": "35aaabcf", + "metadata": {}, + "source": [ + "## 2. `m3`, the geometric algebra used in examples" + ] + }, + { + "cell_type": "markdown", + "id": "fcafa8d7", + "metadata": {}, + "source": [ + "This notebook's examples use `m3`, a model of the geometric algebra $\\Gn{1,2}$ generated by an orthonormal basis of 3-dimensional Minkowski space." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ede9a31e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{m3: a model of }\\Gn{1,2}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{basis:}~~\\scrE= \\left( \\boldsymbol{\\mbf{e}}_{1}, \\ \\boldsymbol{\\mbf{e}}_{2}, \\ \\boldsymbol{\\mbf{e}}_{3}\\right) \\qquad\\text{reciprocal basis:}~~\\scrE^{-1}= \\left( \\boldsymbol{\\mbf{e}}^{1}, \\ \\boldsymbol{\\mbf{e}}^{2}, \\ \\boldsymbol{\\mbf{e}}^{3}\\right) = \\left( \\boldsymbol{\\mbf{e}}_{1}, \\ - \\boldsymbol{\\mbf{e}}_{2}, \\ - \\boldsymbol{\\mbf{e}}_{3}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{metric tensor:}~~[g_{ij}]= \\left[\\begin{array}{ccc}1 & 0 & 0\\\\0 & -1 & 0\\\\0 & 0 & -1\\end{array}\\right] \\quad\\text{reciprocal metric tensor:}~~[g^{ij}]= \\left[\\begin{array}{ccc}1 & 0 & 0\\\\0 & -1 & 0\\\\0 & 0 & -1\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{unit pseudoscalar:}~~\\mbf{I}= \\boldsymbol{\\mbf{e}}_{123} \\qquad\\text{square of unit pseudoscalar:}~~\\mbf{I}^2= -1 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\text{generic}\\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\quad\\text{scalar (0-vector):}~~ \\kappa \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\quad\\text{vector:}~~\\mbf{x}= x^{1} \\boldsymbol{\\mbf{e}}_{1} + x^{2} \\boldsymbol{\\mbf{e}}_{2} + x^{3} \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\quad\\text{multivector:}~~\\mbf{X}= X + X^{1} \\boldsymbol{\\mbf{e}}_{1} + X^{2} \\boldsymbol{\\mbf{e}}_{2} + X^{3} \\boldsymbol{\\mbf{e}}_{3} + X^{12} \\boldsymbol{\\mbf{e}}_{12} + X^{13} \\boldsymbol{\\mbf{e}}_{13} + X^{23} \\boldsymbol{\\mbf{e}}_{23} + X^{123} \\boldsymbol{\\mbf{e}}_{123} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "index_values = symbols('1 2 3', int=True)\n", + "coords = (x1, x2, x3) = symbols('x__1, x__2, x__3', real=True)\n", + "m3= Ga('\\mbf{e}*1|2|3', g=[1,-1,-1], coords=index_values, wedge=False)\n", + "e1, e2, e3 = m3.mv() # basis vectors \n", + "re1, re2, re3 = m3.mvr() # reciprocal basis vectors\n", + "kappa = m3.mv('kappa', 0) # generic 0-vector\n", + "x = m3.mv('x',1) # generic 1-vector\n", + "X = m3.mv('X', 'mv') # generic multivector\n", + "I = m3.I() # unit pseudoscalar \n", + "gprint(r'\\textbf{m3: a model of }\\Gn{1,2}')\n", + "gprint(r'\\text{basis:}~~\\scrE=', m3.mv(),\n", + " r'\\qquad\\text{reciprocal basis:}~~\\scrE^{-1}=', tuple(m3.r_symbols),\n", + " '=', m3.mvr())\n", + "gprint(r'\\text{metric tensor:}~~[g_{ij}]=', m3.g,\n", + " r'\\quad\\text{reciprocal metric tensor:}~~[g^{ij}]=', m3.g_inv)\n", + "gprint(r'\\text{unit pseudoscalar:}~~\\mbf{I}=', I, \n", + " r'\\qquad\\text{square of unit pseudoscalar:}~~\\mbf{I}^2=', I**2)\n", + "gprint(r'\\text{generic}',\n", + " r'\\\\\\quad\\text{scalar (0-vector):}~~', kappa, \n", + " r'\\\\\\quad\\text{vector:}~~\\mbf{x}=', x, \n", + " r'\\\\\\quad\\text{multivector:}~~\\mbf{X}=', X)" + ] + }, + { + "cell_type": "markdown", + "id": "5a249570", + "metadata": {}, + "source": [ + "The `wedge=False` specification of `m3`'s instantiations means that \"no wedge\" notation is being used, in which $\\es{i_1 \\cdots i_g}$ is an abbreviation for the basis blade $\\es{i_1} \\op \\cdots \\op \\es{i_g}$." + ] + }, + { + "cell_type": "markdown", + "id": "6ca8af1f", + "metadata": {}, + "source": [ + "It will be useful to have the following function for simplifying the coefficients in a multivector's basis blade expansion. The function doesn't always accomplish its purpose, but seems to do an adequate job when the coefficients are trigonometric expressions." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7d764d41", + "metadata": {}, + "outputs": [], + "source": [ + "from sympy.simplify.fu import fu \n", + "def mv_simplify(M:Mv, simp=simplify) -> Mv:\n", + " \"\"\"\n", + " Returns the multivector M but with the coefficients of its basis\n", + " blade expansion simplified. Does not modify the original multivector.\n", + " Uses the SymPy simplification function specified by the simp parameter.\n", + " \"\"\"\n", + " # Create `basis_blades`, a list of all basis blades for the geometric\n", + " # algebra to which multivector M belongs. The blades are listed in \n", + " # ascending grade order. Blades of the same grade are listed with \n", + " # ascending strictly ordered indexes.\n", + " basis_blades = []\n", + " for k_blades in M.Ga.blades:\n", + " for blade in k_blades:\n", + " basis_blades.append(M.Ga.mv(blade))\n", + " # Create a list `coefficients` of M's scalar coefficients in its basis\n", + " # blade expansion. Then simplify each coefficient in the list.\n", + " coefficients = M.blade_coefs(basis_blades)\n", + " for k in range(len(coefficients)):\n", + " coefficients[k] = simp(coefficients[k])\n", + " # Create and return a new version of M with simplified coefficients.\n", + " simplified_M = 0\n", + " for k in range(len(basis_blades)):\n", + " simplified_M += coefficients[k]*basis_blades[k]\n", + " return simplified_M" + ] + }, + { + "cell_type": "markdown", + "id": "e45cbd7b", + "metadata": {}, + "source": [ + "## 3. Contravariant/covariant indexing in GAlgebra's output" + ] + }, + { + "cell_type": "markdown", + "id": "af3da0c5", + "metadata": {}, + "source": [ + "Most introductory linear algebra textbooks, including Alan Macdonald's *Linear and Geometric Algebra*, write the basis expansion $\\mbf{x}=\\sum_{i=1}^n x_i \\es{i}$ of a vector $\\mbf{x}$ with the scalar coefficients $x_i$ labelled by a subscript.\n", + "\n", + "GAlgebra uses a somewhat different notational scheme, one borrowed from *tensor algebra*. GAlgebra places the labelling index $i$ of the scalar coefficient as a *superscript* and thus writes the basis expansion of $\\mbf{x}$ in the form \n", + "\n", + "$$\\mbf{x}=\\sum_{i=1}^n x^i \\es{i} = x^1 \\es{1} + x^2 \\es{2} + \\dots + x^n \\es{n},$$ \n", + "\n", + "where $n=p+q$ is the dimension of the scalar product space $\\Rn{p,q}$. Indexes written in superscript position, which should not be confused with exponents, are called *contravariant*, while those written as subscripts (as on the basis vectors) are called *covariant*. (Although not very relevant for GAlgebra, which uses only one basis per geometric algebra model, contravariant/covariant index positioning carries information about how an indexed quantity changes under a change of basis.)\n", + "\n", + "Something similar happens with the basis blade expansion of a multivector $\\mbf{X}$. GAlgebra labels the coefficient which multiplies basis blade $\\es{i_1 \\cdots i_g} := \\es{i_1} \\op \\cdots \\op \\es{i_g}$ with *contravariant indices* identical to the *covariant indices* on the basis blade multiplied. Thus $\\mbf{X}$'s expansion has the form \n", + "\n", + "$$\\mbf{X} = \\sum_{g=0}^n \\left< {\\mbf{X}} \\right>_g\n", + "= X + \\sum_{g=1}^n \\left( \\sum_{1 \\le i_1 < \\cdots < i_g \\le n} X^{i_1 \\cdots i_g} \\es{i_1 \\cdots i_g} \\right).$$\n", + "\n", + "$X = \\left<\\mbf{X}\\right>_0$ has no indices and is displayed in normal math italic so as to distinguish it from the multivector $\\mbf{X}$ of which it is the grade-zero part. In order to keep linearly independent the set of basis blades used in the expansion, only *strictly ordered* index values, $1 \\le i_1 < \\cdots < i_g \\le n$, are included in the summation." + ] + }, + { + "cell_type": "markdown", + "id": "2450d643", + "metadata": {}, + "source": [ + "$\\lt{T}(\\es{j})$, the image by a linear transformation $\\lt{T}$ of a basis vector $\\es{j}$, is itself a vector, so the image's expansion coefficients are also labelled by a contravariant index. Convention is to write the expansion coefficient of $\\lt{T}(\\es{j})$ which multiplies the $i$th basis vector $\\es{i}$ as ${T^i}_j$. Therefore\n", + "\n", + "$$\\lt{T}(\\es{j}) = \\sum_{i=1}^n {T^i}_j \\es{i} = {T^1}_j \\es{1} + {T^2}_j \\es{2} + \\cdots + {T^n}_j \\es{n}.$$ \n", + "\n", + "Notice that the coefficient's contravariant index $i$, which denotes which basis vector the coefficient is to multiply, is written not only as a superscript but also to the left of the covariant index $j$ which indicates the image vector in question. This is done so that when the coefficients of the various basis vector images are placed into a matrix, a coefficient's left index specifies the row in which a coefficient is placed while its right index specifies the column. With indexes so placed, the image vector may be written\n", + "\n", + "$$\\begin{align}\\lt{T}(\\mbf{x}) \n", + "= \\lt{T}\\left(\\sum_{j=1}^n x^j \\es{j}\\right) \n", + "= \\sum_{j=1}^n x^j \\lt{T}(\\es{j})\n", + "= \\sum_{j=1}^n x^j \\sum_{i=1}^n {T^i}_j \\es{i} \n", + "= \\sum_{i=1}^n \\left( \\sum_{j=1}^n {T^i}_j x^j \\right) \\es{i}. \n", + "\\end{align}$$ \n", + "\n", + "and the matrix of all expansion coefficients becomes\n", + "\n", + "$$[\\lt{T}]_\\scrE = \\left[ {T^i}_j \\right]\n", + "= \\left[ \\begin{matrix} {T^1}_1 & \\cdots & {T^1}_j & \\cdots & {T^1}_n \\\\\n", + " \\vdots & & \\vdots & & \\vdots \\\\\n", + " {T^i}_1 & \\cdots & {T^i}_j & \\cdots & {T^i}_n \\\\\n", + " \\vdots & & \\vdots & & \\vdots \\\\\n", + " {T^n}_1 & \\cdots & {T^n}_j & \\cdots & {T^n}_n \\\\\n", + " \\end{matrix} \\right].$$\n", + "\n", + "This *contravariant-covariant matrix* is the standard matrix of the linear transformation $\\lt{T}$ with respect to the basis $\\scrE = \\left(\\es{1}, \\dots, \\es{n}\\right)$. The definitions employed are the same as those in introductory textbooks; the only difference is that the matrix entries have been written with the row index appearing as a left superscript rather than a left subscript. \n", + "\n", + "Notice that the $j$th column of $\\lt{T}$'s matrix consists of the expansion coefficients of $\\lt{T}(\\es{j})$, the $j$th basis image vector.\n", + "\n", + "A GAlgebra user must keep in mind that Python indexing starts at $0$ while it's traditional in mathematics to start at $1$. The difference in start values means that for the SymPy matrix `T.matrix()`, it's the quantity `T.matrix()[i-1, j-1]` which retutrns ${T^i}_j$. It may not *display* as such, however, as we will see when we examine the matrices for symmetric and antisymmetric transformations.\n", + "\n", + "Beside the standard matrix $\\left[{T^i}_j\\right]$ (the contravariant-covariant matrix) associated with $\\lt{T}$, there exists a different matrix, useful when discussing symmetric and antisymmetric transformations, that we will refer to as the *covariant-covariant matrix* $\\left[T_{ij}\\right]$. The entries of the two matrices are related by the formulas\n", + "\n", + "$$T_{ij} = \\sum_{k=1}^n g_{ik}{T^k}_j \\qquad\\text{and}\\qquad {T^i}_j = \\sum_{k=1}^n g^{ik} T_{kj}.$$ \n", + "\n", + "Use of Euclidean metrics and orthonormal bases is common in introductory textbooks. Since $\\left[g_{ij}\\right]$ is the identity matrix in such situations, the above relations then reduce to $T_{ij} = {T^i}_j$, which is one reason introductory textbooks do not make the contravariant/covariant distinction. But if the metric is non-Euclidean or the basis is not orthonormal, the distinction is essential." + ] + }, + { + "cell_type": "markdown", + "id": "ad4283a5", + "metadata": {}, + "source": [ + "## 4. General symbolic transformations; transformation operations" + ] + }, + { + "cell_type": "markdown", + "id": "0a6c0a65", + "metadata": {}, + "source": [ + "As illustrated by the next In[ ] cell, GAlgebra may be used to: \n", + "- Instantiate a *general* symbolic linear transformation $\\lt{G}$. \n", + "- Display how $\\lt{G}$ maps each basis vector to a linear combination of basis vectors.\n", + "- Find the matrix of $\\lt{G}$.\n", + "- Compute $\\lt{G}$'s action on a generic vector $\\mbf{x}$.\n", + "- Compute $\\lt{G}$'s action on a generic multivector $\\mbf{X}$.\n", + "- Find the determinant of $\\lt{G}$.\n", + "- Find the trace of $\\lt{G}$." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "281d5ac4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mbf{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle [\\lt{G}]_\\scrE = \\left[\\begin{array}{ccc}{G^{1}}_{1} & {G^{1}}_{2} & {G^{1}}_{3}\\\\{G^{2}}_{1} & {G^{2}}_{2} & {G^{2}}_{3}\\\\{G^{3}}_{1} & {G^{3}}_{2} & {G^{3}}_{3}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{G.matrix()[3-1, 1-1]}= {G^{3}}_{1} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lt{G}(\\mbf{x})= \\begin{aligned}[t] & \\left ( x^{1} {G^{1}}_{1} + x^{2} {G^{1}}_{2} + x^{3} {G^{1}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} \\\\ & + \\left ( x^{1} {G^{2}}_{1} + x^{2} {G^{2}}_{2} + x^{3} {G^{2}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} \\\\ & + \\left ( x^{1} {G^{3}}_{1} + x^{2} {G^{3}}_{2} + x^{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lt{G}(\\mbf{X})= \\begin{aligned}[t] & X \\\\ & + \\left ( X^{1} {G^{1}}_{1} + X^{2} {G^{1}}_{2} + X^{3} {G^{1}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} \\\\ & + \\left ( X^{1} {G^{2}}_{1} + X^{2} {G^{2}}_{2} + X^{3} {G^{2}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} \\\\ & + \\left ( X^{1} {G^{3}}_{1} + X^{2} {G^{3}}_{2} + X^{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ & + \\left ( X^{12} {G^{1}}_{1} {G^{2}}_{2} - X^{12} {G^{1}}_{2} {G^{2}}_{1} + X^{13} {G^{1}}_{1} {G^{2}}_{3} - X^{13} {G^{1}}_{3} {G^{2}}_{1} + X^{23} {G^{1}}_{2} {G^{2}}_{3} - X^{23} {G^{1}}_{3} {G^{2}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{12} \\\\ & + \\left ( X^{12} {G^{1}}_{1} {G^{3}}_{2} - X^{12} {G^{1}}_{2} {G^{3}}_{1} + X^{13} {G^{1}}_{1} {G^{3}}_{3} - X^{13} {G^{1}}_{3} {G^{3}}_{1} + X^{23} {G^{1}}_{2} {G^{3}}_{3} - X^{23} {G^{1}}_{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{13} \\\\ & + \\left ( X^{12} {G^{2}}_{1} {G^{3}}_{2} - X^{12} {G^{2}}_{2} {G^{3}}_{1} + X^{13} {G^{2}}_{1} {G^{3}}_{3} - X^{13} {G^{2}}_{3} {G^{3}}_{1} + X^{23} {G^{2}}_{2} {G^{3}}_{3} - X^{23} {G^{2}}_{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{23} \\\\ & + X^{123} \\left({G^{1}}_{1} {G^{2}}_{2} {G^{3}}_{3} - {G^{1}}_{1} {G^{2}}_{3} {G^{3}}_{2} - {G^{1}}_{2} {G^{2}}_{1} {G^{3}}_{3} + {G^{1}}_{2} {G^{2}}_{3} {G^{3}}_{1} + {G^{1}}_{3} {G^{2}}_{1} {G^{3}}_{2} - {G^{1}}_{3} {G^{2}}_{2} {G^{3}}_{1}\\right) \\boldsymbol{\\mbf{e}}_{123} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\det(\\lt{G})= {G^{1}}_{1} {G^{2}}_{2} {G^{3}}_{3} - {G^{1}}_{1} {G^{2}}_{3} {G^{3}}_{2} - {G^{1}}_{2} {G^{2}}_{1} {G^{3}}_{3} + {G^{1}}_{2} {G^{2}}_{3} {G^{3}}_{1} + {G^{1}}_{3} {G^{2}}_{1} {G^{3}}_{2} - {G^{1}}_{3} {G^{2}}_{2} {G^{3}}_{1} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{tr}(\\lt{G})= {G^{1}}_{1} + {G^{2}}_{2} + {G^{3}}_{3} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "G = m3.lt('G') # instantiate general symbolic transformation \n", + "gprint(r'\\mbf{G}:~', G) # transformation's action on basis vectors\n", + "gprint(r'[\\lt{G}]_\\scrE =', G.matrix()) # matrix with respect to basis\n", + "gprint(r'\\text{G.matrix()[3-1, 1-1]}=', G.matrix()[3-1, 1-1])\n", + " # example: (3,1) matrix entry\n", + "gprint(r'\\lt{G}(\\mbf{x})=', G(x).Fmt(3)) # action on generic vector\n", + "gprint(r'\\lt{G}(\\mbf{X})=', G(X).Fmt(3)) # action on generic multivector\n", + "gprint(r'\\det(\\lt{G})=', G.det()) # transformation's determinant\n", + "gprint(r'\\text{tr}(\\lt{G})=', G.tr()) # transformation's trace" + ] + }, + { + "cell_type": "markdown", + "id": "5b062eb6", + "metadata": {}, + "source": [ + "- GAlgebra can multiply a linear transformation by a scalar provided it's a SymPy scalar. \n", + "If multiplying the transformation by a 0-vector (i.e. a GAlgebra scalar), the 0-vector has to first be converted into a SymPy scalar by use of the multivector method `.scalar()`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b31c6cd4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\kappa \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{converted } \\kappa \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\kappa\\lt{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto \\kappa {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + \\kappa {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + \\kappa {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\kappa {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + \\kappa {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + \\kappa {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\kappa {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + \\kappa {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + \\kappa {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lambda \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lambda\\lt{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto \\lambda {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + \\lambda {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + \\lambda {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\lambda {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + \\lambda {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + \\lambda {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\lambda {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + \\lambda {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + \\lambda {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kappa = m3.mv('kappa', 0) # a 0-vector, not a SymPy scalar\n", + "gprint(kappa, r'\\text{ belongs to }', type(kappa))\n", + "gprint(r'\\text{converted }', kappa.scalar(), r'\\text{ belongs to }', type(kappa.scalar()))\n", + "gprint(r'\\kappa\\lt{G}:~', kappa.scalar()*G) \n", + " # product of 0-vector and transformation\n", + "gprint()\n", + "lamda = symbols('lambda', real=True) # a SymPy scalar, not a 0-vector\n", + "gprint(lamda, r'\\text{ belongs to }', type(lamda))\n", + "gprint(r'\\lambda\\lt{G}:~', lamda*G) # product of SymPy scalar and transformation" + ] + }, + { + "cell_type": "markdown", + "id": "93d54c19", + "metadata": {}, + "source": [ + "GAlgebra can combine transformations $\\lt{F}$ and $\\lt{G}$ using\n", + "- addition, $\\lt{F} + \\lt{G}$, \n", + "- subtraction, $\\lt{F} - \\lt{G}$, and/or \n", + "- compositional multiplication, $\\lt{F}\\lt{G}$.\n", + "\n", + "The compositional product $\\lt{FG} \\equiv \\lt{F}\\circ\\lt{G}$ is obtained from GAlgebra expression `F*G`." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0ccb8a6f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\lt{F} + \\lt{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto \\left ( {F^{1}}_{1} + {G^{1}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{1} + {G^{2}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{1} + {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\left ( {F^{1}}_{2} + {G^{1}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{2} + {G^{2}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{2} + {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\left ( {F^{1}}_{3} + {G^{1}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{3} + {G^{2}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{3} + {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\lt{F}+\\lt{G}]_\\scrE = \\left[\\begin{array}{ccc}{F^{1}}_{1} + {G^{1}}_{1} & {F^{1}}_{2} + {G^{1}}_{2} & {F^{1}}_{3} + {G^{1}}_{3}\\\\{F^{2}}_{1} + {G^{2}}_{1} & {F^{2}}_{2} + {G^{2}}_{2} & {F^{2}}_{3} + {G^{2}}_{3}\\\\{F^{3}}_{1} + {G^{3}}_{1} & {F^{3}}_{2} + {G^{3}}_{2} & {F^{3}}_{3} + {G^{3}}_{3}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lt{F} - \\lt{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto \\left ( {F^{1}}_{1} - {G^{1}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{1} - {G^{2}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{1} - {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\left ( {F^{1}}_{2} - {G^{1}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{2} - {G^{2}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{2} - {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\left ( {F^{1}}_{3} - {G^{1}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{3} - {G^{2}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{3} - {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\lt{F}-\\lt{G}]_\\scrE = \\left[\\begin{array}{ccc}{F^{1}}_{1} - {G^{1}}_{1} & {F^{1}}_{2} - {G^{1}}_{2} & {F^{1}}_{3} - {G^{1}}_{3}\\\\{F^{2}}_{1} - {G^{2}}_{1} & {F^{2}}_{2} - {G^{2}}_{2} & {F^{2}}_{3} - {G^{2}}_{3}\\\\{F^{3}}_{1} - {G^{3}}_{1} & {F^{3}}_{2} - {G^{3}}_{2} & {F^{3}}_{3} - {G^{3}}_{3}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\lt{F}\\lt{G}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto \\left ( {F^{1}}_{1} {G^{1}}_{1} + {F^{1}}_{2} {G^{2}}_{1} + {F^{1}}_{3} {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{1} {G^{1}}_{1} + {F^{2}}_{2} {G^{2}}_{1} + {F^{2}}_{3} {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{1} {G^{1}}_{1} + {F^{3}}_{2} {G^{2}}_{1} + {F^{3}}_{3} {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\left ( {F^{1}}_{1} {G^{1}}_{2} + {F^{1}}_{2} {G^{2}}_{2} + {F^{1}}_{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{1} {G^{1}}_{2} + {F^{2}}_{2} {G^{2}}_{2} + {F^{2}}_{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{1} {G^{1}}_{2} + {F^{3}}_{2} {G^{2}}_{2} + {F^{3}}_{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\left ( {F^{1}}_{1} {G^{1}}_{3} + {F^{1}}_{2} {G^{2}}_{3} + {F^{1}}_{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( {F^{2}}_{1} {G^{1}}_{3} + {F^{2}}_{2} {G^{2}}_{3} + {F^{2}}_{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( {F^{3}}_{1} {G^{1}}_{3} + {F^{3}}_{2} {G^{2}}_{3} + {F^{3}}_{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\lt{F}\\lt{G}]_\\scrE = \\left[\\begin{array}{ccc}{F^{1}}_{1} {G^{1}}_{1} + {F^{1}}_{2} {G^{2}}_{1} + {F^{1}}_{3} {G^{3}}_{1} & {F^{1}}_{1} {G^{1}}_{2} + {F^{1}}_{2} {G^{2}}_{2} + {F^{1}}_{3} {G^{3}}_{2} & {F^{1}}_{1} {G^{1}}_{3} + {F^{1}}_{2} {G^{2}}_{3} + {F^{1}}_{3} {G^{3}}_{3}\\\\{F^{2}}_{1} {G^{1}}_{1} + {F^{2}}_{2} {G^{2}}_{1} + {F^{2}}_{3} {G^{3}}_{1} & {F^{2}}_{1} {G^{1}}_{2} + {F^{2}}_{2} {G^{2}}_{2} + {F^{2}}_{3} {G^{3}}_{2} & {F^{2}}_{1} {G^{1}}_{3} + {F^{2}}_{2} {G^{2}}_{3} + {F^{2}}_{3} {G^{3}}_{3}\\\\{F^{3}}_{1} {G^{1}}_{1} + {F^{3}}_{2} {G^{2}}_{1} + {F^{3}}_{3} {G^{3}}_{1} & {F^{3}}_{1} {G^{1}}_{2} + {F^{3}}_{2} {G^{2}}_{2} + {F^{3}}_{3} {G^{3}}_{2} & {F^{3}}_{1} {G^{1}}_{3} + {F^{3}}_{2} {G^{2}}_{3} + {F^{3}}_{3} {G^{3}}_{3}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(F*G).matrix() == F.matrix() * G.matrix()}:~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "F = m3.lt('F') # a symbolic linear transformation\n", + "G = m3.lt('G') # another symbolic transformation\n", + "gprint(r'\\lt{F} + \\lt{G}:~', F + G,\n", + " r'\\qquad[\\lt{F}+\\lt{G}]_\\scrE =', (F + G).matrix())\n", + "gprint(r'\\lt{F} - \\lt{G}:~', F - G,\n", + " r'\\qquad[\\lt{F}-\\lt{G}]_\\scrE =', (F - G).matrix())\n", + "gprint(r'\\lt{F}\\lt{G}:~', F * G,\n", + " r'\\qquad[\\lt{F}\\lt{G}]_\\scrE =', (F * G).matrix())\n", + "# Test: Is the matrix of two transformations' compositional product\n", + "# the same as the product of the transformations' matrices?\n", + "gprint(r'\\text{(F*G).matrix() == F.matrix() * G.matrix()}:~',\n", + " (F*G).matrix() == F.matrix() * G.matrix())" + ] + }, + { + "cell_type": "markdown", + "id": "f43bd94f", + "metadata": {}, + "source": [ + "Observe that the $(i,j)$ entry in the above output for $[\\lt{F}\\lt{G}]_\\scrE$ is given by $\\sum_{k=1}^n {F^i}_k {G^k}_j$ (where $n=3$ for $\\Gn{1,2}$), as it should be." + ] + }, + { + "cell_type": "markdown", + "id": "0190f4e4", + "metadata": {}, + "source": [ + "- The GAlgebra expression `G.adj()` returns the adjoint $\\ad{G}$ of transformation $\\lt{G}$." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3494bb1f", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{adjoint }\\ad{G}\\text{ of general symbolic transformation }\\lt{G}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\ad{G}: \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} - {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{2} - {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto - {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto - {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\ad{G}]_\\scrE= \\left[\\begin{array}{ccc}{G^{1}}_{1} & - {G^{2}}_{1} & - {G^{3}}_{1}\\\\- {G^{1}}_{2} & {G^{2}}_{2} & {G^{3}}_{2}\\\\- {G^{1}}_{3} & {G^{2}}_{3} & {G^{3}}_{3}\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\ad{G}(\\mbf{x})= \\begin{aligned}[t] & \\left ( x^{1} {G^{1}}_{1} - x^{2} {G^{2}}_{1} - x^{3} {G^{3}}_{1}\\right ) \\boldsymbol{\\mbf{e}}_{1} \\\\ & + \\left ( - x^{1} {G^{1}}_{2} + x^{2} {G^{2}}_{2} + x^{3} {G^{3}}_{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} \\\\ & + \\left ( - x^{1} {G^{1}}_{3} + x^{2} {G^{2}}_{3} + x^{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad {{G^*}^1}_2=(1,2)\\text{ entry of matrix of }\\ad{G}= - {G^{2}}_{1} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'\\text{adjoint }\\ad{G}\\text{ of general symbolic transformation }\\lt{G}:')\n", + "gprint(r'\\qquad\\ad{G}:', G.adj(),\n", + " r'\\qquad[\\ad{G}]_\\scrE=', G.adj().matrix(),\n", + " r'\\\\\\qquad\\ad{G}(\\mbf{x})=', G.adj()(x).Fmt(3))\n", + "gprint(r'\\qquad {{G^*}^1}_2=(1,2)\\text{ entry of matrix of }\\ad{G}=',\n", + " G.adj().matrix()[1-1,2-1]) # example matrix entry" + ] + }, + { + "cell_type": "markdown", + "id": "4e2ca7a3", + "metadata": {}, + "source": [ + "*Remark:* As the above output shows, the adjoint's matrix is not necessarily the transpose of the transformation's matrix. The two are necessarily equal only when the basis used is orthonormal and the metric has a Euclidean signature. The algebra being used, `m3`, fails the second of those two requirements." + ] + }, + { + "cell_type": "markdown", + "id": "de6e7f4c", + "metadata": {}, + "source": [ + "**Internal representation of a linear transformation.** The model `G` of a transformation $\\lt{G}$ is stored internally as a Python dictionary, accessible as the attribute `G.lt_dict`. The dictionary's *key: value* pairs, when printed, *appear* to have the form *basis vector: $\\lt{G}$(basis vector)*, but appearances are deceiving. Instead the keys are basis *symbols*, i.e. are objects which are mapped to the basis *vectors* by application of the method `m3.mv()`. And the values are linear combinations of the basis symbols, i.e. are objects which `m3.mv()` maps to basis image vectors. This distinction will be important in Section 6, when we explore the different ways one can specify a non-symbolic linear transformation." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "21468025", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{basis vectors}:~~\\text{m3.mv()}= \\left( \\boldsymbol{\\mbf{e}}_{1}, \\ \\boldsymbol{\\mbf{e}}_{2}, \\ \\boldsymbol{\\mbf{e}}_{3}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{basis symbols}:~~\\text{m3.basis}= \\left[ \\boldsymbol{\\mbf{e}}_{1}, \\ \\boldsymbol{\\mbf{e}}_{2}, \\ \\boldsymbol{\\mbf{e}}_{3}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{internal dictionary}:~~\\text{G.lt_dict}= \\left\\{ \\boldsymbol{\\mbf{e}}_{1} : {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3}, \\ \\boldsymbol{\\mbf{e}}_{2} : {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3}, \\ \\boldsymbol{\\mbf{e}}_{3} : {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3}\\right\\} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\boldsymbol{\\mbf{e}}_{1} \\text{ from m3.basis belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3} \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\boldsymbol{\\mbf{e}}_{2} \\text{ from m3.basis belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3} \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\boldsymbol{\\mbf{e}}_{3} \\text{ from m3.basis belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\text{ belongs to } \\text{} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'\\text{basis vectors}:~~\\text{m3.mv()}=', m3.mv())\n", + "gprint(r'\\text{basis symbols}:~~\\text{m3.basis}=', m3.basis)\n", + "gprint(r'\\text{internal dictionary}:~~\\text{G.lt_dict}=', G.lt_dict)\n", + "for base in m3.basis:\n", + " gprint(base, r'\\text{ from m3.basis belongs to }', type(base))\n", + " gprint(G.lt_dict[base], r'\\text{ belongs to }',\n", + " type(G.lt_dict[base]))" + ] + }, + { + "cell_type": "markdown", + "id": "80cc64e8", + "metadata": {}, + "source": [ + "Versor-based transformations will be discussed in Section 7. Such a transformation stores a versor internally in its `.V` attribute. Each transformation, whether dictionary based or versor based, have a boolean `.versor` attribute which, when `True`, signals the existence of the `.V` attribute." + ] + }, + { + "cell_type": "markdown", + "id": "e30fa966", + "metadata": {}, + "source": [ + "## 5. Symmetric and antisymmetric symbolic transformations" + ] + }, + { + "cell_type": "markdown", + "id": "f951af56", + "metadata": {}, + "source": [ + "Besides *general* symbolic transformations, encountered in the previous section, GAlgebra can create *symmetric* (a.k.a. self-adjoint) and *antisymmetric* (a.k.a. skew) symbolic transformations." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "76906c9d", + "metadata": {}, + "outputs": [], + "source": [ + "G = m3.lt('G', mode='g') # instantiate a general symbolic transformation\n", + " # specification mode='g' is not strictly necessary as 'g' is the default\n", + " # value of the mode parameter\n", + "S = m3.lt('S', mode='s') # instantiate a symmetric symbolic transformation\n", + "A = m3.lt('A', mode='a') # instantiate an antisymmetric symbolic transformation" + ] + }, + { + "cell_type": "markdown", + "id": "48f61f17", + "metadata": {}, + "source": [ + "Unlike a *general* symbolic transformation $\\lt{G}$, the entries in `S.matrix()` for a symmetric symbolic transformation $\\lt{S}$ will not *appear* to be entries in the standard (contravariant-covariant) matrix for that transformation, although they are. Instead they will appear as linear combinations of doubly-subscripted symbols $S_{ij}$, where $1 \\le i \\le j \\le n$. Those symbols have the significance of being the entries on or above the diagonal of $\\lt{S}$'s covariant-covariant matrix.\n", + "\n", + "Similarly, the entries in `A.matrix()` for an antisymmetric symbolic transformation $\\lt{A}$ will appear as linear combinations of doubly-subscripted symbols $A_{ij}$, where $1 \\le i < j \\le n$. Those symbols have the significance of being the entries above the diagonal of $\\lt{A}$'s covariant-covariant matrix. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "952ad12b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{general symbolic transformation }\\lt{G}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{G}: \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto {G^{1}}_{1} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{1} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{1} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto {G^{1}}_{2} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{2} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{2} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto {G^{1}}_{3} \\boldsymbol{\\mbf{e}}_{1} + {G^{2}}_{3} \\boldsymbol{\\mbf{e}}_{2} + {G^{3}}_{3} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\lt{G}]_\\scrE= \\left[\\begin{array}{ccc}{G^{1}}_{1} & {G^{1}}_{2} & {G^{1}}_{3}\\\\{G^{2}}_{1} & {G^{2}}_{2} & {G^{2}}_{3}\\\\{G^{3}}_{1} & {G^{3}}_{2} & {G^{3}}_{3}\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{G}(\\mbf{x})= \\left ( x^{1} {G^{1}}_{1} + x^{2} {G^{1}}_{2} + x^{3} {G^{1}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( x^{1} {G^{2}}_{1} + x^{2} {G^{2}}_{2} + x^{3} {G^{2}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( x^{1} {G^{3}}_{1} + x^{2} {G^{3}}_{2} + x^{3} {G^{3}}_{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is } {G^{3}}_{1} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\text{covariant-covariant matrix of }\\lt{G}= \\left[\\begin{array}{ccc}{G^{1}}_{1} & {G^{1}}_{2} & {G^{1}}_{3}\\\\- {G^{2}}_{1} & - {G^{2}}_{2} & - {G^{2}}_{3}\\\\- {G^{3}}_{1} & - {G^{3}}_{2} & - {G^{3}}_{3}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{symmetric symbolic transformation }\\lt{S}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{S}: \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto S_{1} \\boldsymbol{\\mbf{e}}_{1} - S_{2} \\boldsymbol{\\mbf{e}}_{2} - S_{3} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto S_{2} \\boldsymbol{\\mbf{e}}_{1} - S_{4} \\boldsymbol{\\mbf{e}}_{2} - S_{5} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto S_{3} \\boldsymbol{\\mbf{e}}_{1} - S_{5} \\boldsymbol{\\mbf{e}}_{2} - S_{6} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad[\\lt{S}]_\\scrE= \\left[\\begin{array}{ccc}S_{1} & S_{2} & S_{3}\\\\- S_{2} & - S_{4} & - S_{5}\\\\- S_{3} & - S_{5} & - S_{6}\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{S}(\\mbf{x})= \\left ( S_{1} x^{1} + S_{2} x^{2} + S_{3} x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( - S_{2} x^{1} - S_{4} x^{2} - S_{5} x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( - S_{3} x^{1} - S_{5} x^{2} - S_{6} x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is } - S_{3} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\text{covariant-covariant matrix of }\\lt{S}= \\left[\\begin{array}{ccc}S_{1} & S_{2} & S_{3}\\\\S_{2} & S_{4} & S_{5}\\\\S_{3} & S_{5} & S_{6}\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{antisymmetric symbolic transformation }\\lt{A}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{A}: \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto A_{1} \\boldsymbol{\\mbf{e}}_{2} + A_{2} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto A_{1} \\boldsymbol{\\mbf{e}}_{1} + A_{3} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto A_{2} \\boldsymbol{\\mbf{e}}_{1} - A_{3} \\boldsymbol{\\mbf{e}}_{2} \\end{aligned} \\right\\} \\qquad[\\lt{A}]_\\scrE= \\left[\\begin{array}{ccc}0 & A_{1} & A_{2}\\\\A_{1} & 0 & - A_{3}\\\\A_{2} & A_{3} & 0\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{A}(\\mbf{x})= \\left ( A_{1} x^{2} + A_{2} x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( A_{1} x^{1} - A_{3} x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( A_{2} x^{1} + A_{3} x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is } A_{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\text{covariant-covariant matrix of }\\lt{A}= \\left[\\begin{array}{ccc}0 & A_{1} & A_{2}\\\\- A_{1} & 0 & A_{3}\\\\- A_{2} & - A_{3} & 0\\end{array}\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'\\text{general symbolic transformation }\\lt{G}:')\n", + "gprint(r'\\qquad\\lt{G}:', G,\n", + " r'\\qquad[\\lt{G}]_\\scrE=', G.matrix(),\n", + " r'\\\\\\qquad\\lt{G}(\\mbf{x})=', G(x))\n", + "gprint(r'\\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is }',\n", + " G.matrix()[3-1,1-1]) # example matrix entry\n", + "gprint(r'\\qquad\\text{covariant-covariant matrix of }\\lt{G}=', m3.g * G.matrix())\n", + "gprint()\n", + "gprint(r'\\text{symmetric symbolic transformation }\\lt{S}:')\n", + "gprint(r'\\qquad\\lt{S}:', S,\n", + " r'\\qquad[\\lt{S}]_\\scrE=', S.matrix(),\n", + " r'\\\\\\qquad\\lt{S}(\\mbf{x})=', S(x))\n", + "gprint(r'\\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is }',\n", + " S.matrix()[3-1,1-1]) # example matrix entry\n", + "gprint(r'\\qquad\\text{covariant-covariant matrix of }\\lt{S}=', m3.g * S.matrix())\n", + "gprint()\n", + "gprint(r'\\text{antisymmetric symbolic transformation }\\lt{A}:')\n", + "gprint(r'\\qquad\\lt{A}:', A,\n", + " r'\\qquad[\\lt{A}]_\\scrE=', A.matrix(),\n", + " r'\\\\\\qquad\\lt{A}(\\mbf{x})=', A(x))\n", + "gprint(r'\\qquad(3,1)\\text{ entry of the contravariant-covariant matrix is }',\n", + " A.matrix()[3-1,1-1]) # example matrix entry\n", + "gprint(r'\\qquad\\text{covariant-covariant matrix of }\\lt{A}=', m3.g * A.matrix())" + ] + }, + { + "cell_type": "markdown", + "id": "77ceaac3", + "metadata": {}, + "source": [ + "Notice in the above output that the covariant-covariant matrices of the general transformation $\\lt{G}$, the symmetric transformation $\\lt{S}$, and the antisymmetric transformation $\\lt{A}$ are respectively neither symmetric nor antisymmetric, symmetric, and antisymmetric. None of the transformations display symmetry or antisymmetry in their standard (contravariant-covariant) matrices." + ] + }, + { + "cell_type": "markdown", + "id": "ca059499", + "metadata": {}, + "source": [ + "## 6. Non-symbolic, dictionary-based transformations" + ] + }, + { + "cell_type": "markdown", + "id": "d1c36ad5", + "metadata": {}, + "source": [ + "All examples in Sections 4--6 were of symbolic transformations. To create such transformations, all that was needed was a one-letter string, used to specify the kernel symbol of the matrix entries, and specification as to whether the transformation was to be general (`mode='g'`), symmetric (`mode='s'`), or antisymmetric (`mode='a'`).\n", + "\n", + "Besides one-letter strings, the transformation constructor `m3.lt` can accept objects of other types for its instantiation parameter. Such objects can be:\n", + "\n", + "- `lt_list`, a list of lists, has its $j$th entry `lt_list[j]` a list of the expansion coefficients of the $j$the image vector. \n", + "- `lt_matrix`, a SymPy matrix, is identical to the matrix of the desired tranformation. \n", + "- `lt_dict`, a Python dictionary, consists of *key:value* pairs, where each *key* is a basis symbol (entry in `m3.basis`) and each *value* is a linear combination of basis symbols. \n", + "- `lt_func`, a linear vector-valued function of a vector argument, has the same action on vectors as the desired linear transformation/outermorphism.\n", + "\n", + "Each such parameter is a different ways of specifying the images of the basis vectors by the desired transformation/outermorphism. The `mode` parameter is not specified since symmetry or antisymmetry, if either, is determined by the basis vector images." + ] + }, + { + "cell_type": "markdown", + "id": "9d442aad", + "metadata": {}, + "source": [ + "**An example.** Suppose we want to instantiate a transformation $\\lt{T}$ the actions of which on basis vectors are\n", + "\n", + "$$\\left\\{~ \\begin{array}{llrrr}\n", + "\\lt{T}(\\es{1}) &= &(0)\\es{1} + &(-1)\\es{2} + &(2)\\es{3} \\\\\n", + "\\lt{T}(\\es{2}) &= &(5)\\es{1} + &(2)\\es{2} + &(3)\\es{3} \\\\\n", + "\\lt{T}(\\es{3}) &= &(2)\\es{1} + &(0)\\es{2} + &(0)\\es{3} \\\\\n", + "\\end{array} ~\\right\\}.$$\n", + "\n", + "We create different type objects each of which encodes the information in the above set of equations:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3d14e81d", + "metadata": {}, + "outputs": [], + "source": [ + "# type list (of lists)\n", + "lt_list = [[0, -1, 2], [5, 2, 3], [2, 0, 0]] \n", + "\n", + "# type Matrix\n", + "lt_matrix = Matrix([[0, 5, 2], [-1, 2, 0], [2, 3, 0]])\n", + "\n", + "# type dict\n", + "lt_dict = {} # create empty dictionary, then add key:value pairs\n", + "b1,b2,b3 = m3.basis # basis symbols corresponding to basis vectors\n", + "lt_dict[b1] = -b2 + 2*b3 # 1st linear combination of basis symbols\n", + "lt_dict[b2] = 5*b1 + 2*b2 + 3*b3 # 2nd linear combination of basis symbols\n", + "lt_dict[b3] = 2*b1 # 3rd linear combination of basis symbols\n", + "\n", + "# type function\n", + "lt_func = lambda x: (re1" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_1:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto - \\boldsymbol{\\mbf{e}}_{2} + 2 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto 5 \\boldsymbol{\\mbf{e}}_{1} + 2 \\boldsymbol{\\mbf{e}}_{2} + 3 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto 2 \\boldsymbol{\\mbf{e}}_{1} \\end{aligned} \\right\\} \\qquad\\left[ \\lt{T}_1 \\right]= \\left[\\begin{array}{ccc}0 & 5 & 2\\\\-1 & 2 & 0\\\\2 & 3 & 0\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_1(\\mbf{x})= \\left ( 5 x^{2} + 2 x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( - x^{1} + 2 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( 2 x^{1} + 3 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{T2 = m3.lt(lt_matrix)}, \\quad\\text{where lt_matrix}= \\left[\\begin{array}{ccc}0 & 5 & 2\\\\-1 & 2 & 0\\\\2 & 3 & 0\\end{array}\\right] :$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_2:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto - \\boldsymbol{\\mbf{e}}_{2} + 2 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto 5 \\boldsymbol{\\mbf{e}}_{1} + 2 \\boldsymbol{\\mbf{e}}_{2} + 3 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto 2 \\boldsymbol{\\mbf{e}}_{1} \\end{aligned} \\right\\} \\qquad\\left[ \\lt{T}_2 \\right]= \\left[\\begin{array}{ccc}0 & 5 & 2\\\\-1 & 2 & 0\\\\2 & 3 & 0\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_2(\\mbf{x})= \\left ( 5 x^{2} + 2 x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( - x^{1} + 2 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( 2 x^{1} + 3 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{T3 = m3.lt(lt_dict)}, \\quad\\text{where lt_dict}= \\left\\{ \\boldsymbol{\\mbf{e}}_{1} : - \\boldsymbol{\\mbf{e}}_{2} + 2 \\boldsymbol{\\mbf{e}}_{3}, \\ \\boldsymbol{\\mbf{e}}_{2} : 5 \\boldsymbol{\\mbf{e}}_{1} + 2 \\boldsymbol{\\mbf{e}}_{2} + 3 \\boldsymbol{\\mbf{e}}_{3}, \\ \\boldsymbol{\\mbf{e}}_{3} : 2 \\boldsymbol{\\mbf{e}}_{1}\\right\\} :$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_3:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto - \\boldsymbol{\\mbf{e}}_{2} + 2 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto 5 \\boldsymbol{\\mbf{e}}_{1} + 2 \\boldsymbol{\\mbf{e}}_{2} + 3 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto 2 \\boldsymbol{\\mbf{e}}_{1} \\end{aligned} \\right\\} \\qquad\\left[ \\lt{T}_3 \\right]= \\left[\\begin{array}{ccc}0 & 5 & 2\\\\-1 & 2 & 0\\\\2 & 3 & 0\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_3(\\mbf{x})= \\left ( 5 x^{2} + 2 x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( - x^{1} + 2 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( 2 x^{1} + 3 x^{2}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{T4 = m3.lt(lt_func)}\\qquad\\text{where lt_func is defined by}\\\\\\qquad\\text{lambda x: (e2+2*e3)*(re1" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_4:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto 5 \\boldsymbol{\\mbf{e}}_{2} + 2 \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto - \\boldsymbol{\\mbf{e}}_{1} + 2 \\boldsymbol{\\mbf{e}}_{2} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto 2 \\boldsymbol{\\mbf{e}}_{1} + 3 \\boldsymbol{\\mbf{e}}_{2} \\end{aligned} \\right\\} \\qquad\\left[ \\lt{T}_4 \\right]= \\left[\\begin{array}{ccc}0 & -1 & 2\\\\5 & 2 & 3\\\\2 & 0 & 0\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_4(\\mbf{x})= \\left ( - x^{2} + 2 x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{1} + \\left ( 5 x^{1} + 2 x^{2} + 3 x^{3}\\right ) \\boldsymbol{\\mbf{e}}_{2} + 2 x^{1} \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "T1 = m3.lt(lt_list) # instantiate transformation using list-type object\n", + "gprint(r'\\textbf{T1 = m3.lt(lt_list)}, \\quad\\text{where lt_list}=', lt_list, ':')\n", + "gprint(r'\\qquad\\lt{T}_1:~', T1,\n", + " r'\\qquad\\left[ \\lt{T}_1 \\right]=', T1.matrix(),\n", + " r'\\\\\\qquad\\lt{T}_1(\\mbf{x})=', T1(x))\n", + "gprint()\n", + "\n", + "T2 = m3.lt(lt_matrix) # instantiate transformation using Matrix-type object\n", + "gprint(r'\\textbf{T2 = m3.lt(lt_matrix)}, \\quad\\text{where lt_matrix}=', lt_matrix, ':')\n", + "gprint(r'\\qquad\\lt{T}_2:~', T2,\n", + " r'\\qquad\\left[ \\lt{T}_2 \\right]=', T2.matrix(),\n", + " r'\\\\\\qquad\\lt{T}_2(\\mbf{x})=', T2(x))\n", + "gprint()\n", + "\n", + "T3 = m3.lt(lt_dict) # instantiate transformation using dict-type object\n", + "gprint(r'\\textbf{T3 = m3.lt(lt_dict)}, \\quad\\text{where lt_dict}=', lt_dict, ':')\n", + "gprint(r'\\qquad\\lt{T}_3:~', T3,\n", + " r'\\qquad\\left[ \\lt{T}_3 \\right]=', T3.matrix(),\n", + " r'\\\\\\qquad\\lt{T}_3(\\mbf{x})=', T3(x))\n", + "gprint()\n", + "\n", + "T4 = m3.lt(lt_func) # instantiate transformation using function-type object\n", + "gprint(r'\\textbf{T4 = m3.lt(lt_func)}\\qquad\\text{where lt_func is defined by}\\\\\\qquad'\n", + " + r'\\text{lambda x: (e2+2*e3)*(re1" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_\\mbf{V}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto - \\boldsymbol{\\mbf{e}}_{1} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\cos{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{2} + \\sin{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto - \\sin{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{2} + \\cos{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad\\left[\\lt{T}_\\mbf{V}\\right]= \\left[\\begin{array}{ccc}- \\frac{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} - \\frac{{\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} & 0 & 0\\\\0 & - \\frac{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} + \\frac{{\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} & - \\frac{2 \\sin{\\left (\\frac{\\theta }{2} \\right )} \\cos{\\left (\\frac{\\theta }{2} \\right )}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}\\\\0 & \\frac{2 \\sin{\\left (\\frac{\\theta }{2} \\right )} \\cos{\\left (\\frac{\\theta }{2} \\right )}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} & - \\frac{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} + \\frac{{\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad\\lt{T}_\\mbf{V}(\\mbf{x})= - x^{1} \\boldsymbol{\\mbf{e}}_{1} + \\left ( x^{2} \\cos{\\left (\\theta \\right )} - x^{3} \\sin{\\left (\\theta \\right )}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( x^{2} \\sin{\\left (\\theta \\right )} + x^{3} \\cos{\\left (\\theta \\right )}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\mathscr{Q}(\\lt{T}_\\mbf{V}(\\mbf{x}))= {\\left ( x^{1} \\right )}^{2} - {\\left ( x^{2} \\right )}^{2} - {\\left ( x^{3} \\right )}^{2} \\qquad\\mathscr{Q}(\\mbf{x})= {\\left ( x^{1} \\right )}^{2} - {\\left ( x^{2} \\right )}^{2} - {\\left ( x^{3} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\mathscr{Q}(\\lt{T}_\\mbf{V}(\\mbf{x})) = \\mathscr{Q}(\\mbf{x}):~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\det(\\lt{T}_\\mbf{V})= -1 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "theta = symbols('theta', real=True)\n", + "v1 = e2\n", + "v2 = cos(theta/2)*e2 + sin(theta/2)*e3\n", + "v3 = e1\n", + "lt_versor = v3 * v2 * v1\n", + "T_V = m3.lt(lt_versor) # instantiate versor-based orthogonal transformation\n", + "\n", + "gprint(r'\\textbf{T_V = m3.lt(lt_versor)}, \\quad\\text{where lt_versor}=', lt_versor, ':')\n", + "gprint(r'\\qquad\\lt{T}_\\mbf{V}:~', T_V,\n", + " r'\\qquad\\left[\\lt{T}_\\mbf{V}\\right]=', T_V.matrix(),\n", + " r'\\\\\\qquad\\lt{T}_\\mbf{V}(\\mbf{x})=', mv_simplify(T_V(x), fu))\n", + "gprint(r'\\qquad\\mathscr{Q}(\\lt{T}_\\mbf{V}(\\mbf{x}))=', qform(T_V(x)),\n", + " r'\\qquad\\mathscr{Q}(\\mbf{x})=', qform(x))\n", + "gprint(r'\\qquad\\mathscr{Q}(\\lt{T}_\\mbf{V}(\\mbf{x})) = \\mathscr{Q}(\\mbf{x}):~',\n", + " fu(qform(T_V(x))) == fu(qform(x)))\n", + "gprint(r'\\qquad\\det(\\lt{T}_\\mbf{V})=', trigsimp(T_V.det()))" + ] + }, + { + "cell_type": "markdown", + "id": "086ee861", + "metadata": {}, + "source": [ + "The output's penultimate line confirms that $\\lt{T}_\\mbf{V}$ is orthogonal, for a tranformation is orthogonal if and only if it preserves the quadratic form $\\mbf{x} \\mapsto \\mathscr{Q}(\\mbf{x}) = \\mbf{x}^2$. That $\\det(\\lt{T}_\\mbf{V}) = -1$ is a consequence of the transformation being a composition of three orientation-reversing reflections.\n", + "\n", + "The compositional inverse method `.inv()` is only implemented in GAlgebra for versor-based transformations. The next In[ ] cell computes the compositional inverse of the transformation `T_V` found in the previous cell. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "75a0ce52", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{T_Vinv = T_V.inv()}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad{\\lt{T}_\\mbf{V}}^{-1}:~ \\left\\{ \\begin{aligned} \\boldsymbol{\\mbf{e}}_{1} &\\mapsto - \\boldsymbol{\\mbf{e}}_{1} \\\\ \\boldsymbol{\\mbf{e}}_{2} &\\mapsto \\cos{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{2} - \\sin{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{3} \\\\ \\boldsymbol{\\mbf{e}}_{3} &\\mapsto \\sin{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{2} + \\cos{\\left (\\theta \\right )} \\boldsymbol{\\mbf{e}}_{3} \\end{aligned} \\right\\} \\qquad\\left[{\\lt{T}_\\mbf{V}}^{-1}\\right]= \\left[\\begin{array}{ccc}-1 & 0 & 0\\\\0 & - \\frac{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} + \\frac{{\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} & \\frac{2 \\sin{\\left (\\frac{\\theta }{2} \\right )} \\cos{\\left (\\frac{\\theta }{2} \\right )}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}\\\\0 & - \\frac{2 \\sin{\\left (\\frac{\\theta }{2} \\right )} \\cos{\\left (\\frac{\\theta }{2} \\right )}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} & - \\frac{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}} + \\frac{{\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}{{\\sin{\\left (\\frac{\\theta }{2} \\right )}}^{2} + {\\cos{\\left (\\frac{\\theta }{2} \\right )}}^{2}}\\end{array}\\right] \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\qquad{\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x})= - x^{1} \\boldsymbol{\\mbf{e}}_{1} + \\left ( x^{2} \\cos{\\left (\\theta \\right )} + x^{3} \\sin{\\left (\\theta \\right )}\\right ) \\boldsymbol{\\mbf{e}}_{2} + \\left ( - x^{2} \\sin{\\left (\\theta \\right )} + x^{3} \\cos{\\left (\\theta \\right )}\\right ) \\boldsymbol{\\mbf{e}}_{3} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\mathscr{Q}({\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x}))= {\\left ( x^{1} \\right )}^{2} - {\\left ( x^{2} \\right )}^{2} - {\\left ( x^{3} \\right )}^{2} \\qquad\\mathscr{Q}(\\mbf{x})= {\\left ( x^{1} \\right )}^{2} - {\\left ( x^{2} \\right )}^{2} - {\\left ( x^{3} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\mathscr{Q}({\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x})) = \\mathscr{Q}(\\mbf{x}):~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\det({\\lt{T}_\\mbf{V}}^{-1})= - \\frac{\\left(1 - \\cos{\\left (\\theta \\right )}\\right)^{2}}{2} - \\cos{\\left (\\theta \\right )} + \\frac{\\cos{\\left (2 \\theta \\right )}}{4} - \\frac{1}{4} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\left(\\lt{T}_\\mbf{V}{\\lt{T}_\\mbf{V}}^{-1}\\right)(\\mbf{{x}})= x^{1} \\boldsymbol{\\mbf{e}}_{1} + x^{2} \\boldsymbol{\\mbf{e}}_{2} + x^{3} \\boldsymbol{\\mbf{e}}_{3} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad\\left(\\lt{T}_\\mbf{V}{\\lt{T}_\\mbf{V}}^{-1}\\right)(\\mbf{{x}})==\\mbf{x}:~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "T_Vinv = T_V.inv()\n", + " # compositional inverse of versor-based transformation\n", + "gprint(r'\\textbf{T_Vinv = T_V.inv()}:')\n", + "gprint(r'\\qquad{\\lt{T}_\\mbf{V}}^{-1}:~', T_Vinv,\n", + " r'\\qquad\\left[{\\lt{T}_\\mbf{V}}^{-1}\\right]=', T_Vinv.matrix(),\n", + " r'\\\\\\qquad{\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x})=', mv_simplify(T_Vinv(x), fu))\n", + "gprint(r'\\qquad\\mathscr{Q}({\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x}))=', fu(qform(T_Vinv(x))),\n", + " r'\\qquad\\mathscr{Q}(\\mbf{x})=', fu(qform(x)))\n", + "gprint(r'\\qquad\\mathscr{Q}({\\lt{T}_\\mbf{V}}^{-1}(\\mbf{x})) = \\mathscr{Q}(\\mbf{x}):~',\n", + " fu(qform(T_Vinv(x))) == fu(qform(x)))\n", + "gprint(r'\\qquad\\det({\\lt{T}_\\mbf{V}}^{-1})=', trigsimp(T_Vinv.det()))\n", + "gprint(r'\\qquad\\left(\\lt{T}_\\mbf{V}{\\lt{T}_\\mbf{V}}^{-1}\\right)(\\mbf{{x}})=',\n", + " (T_V*T_Vinv)(x))\n", + "gprint(r'\\qquad\\left(\\lt{T}_\\mbf{V}{\\lt{T}_\\mbf{V}}^{-1}\\right)(\\mbf{{x}})==\\mbf{x}:~',\n", + " (T_V*T_Vinv)(x) == x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8594bcc5-e9a6-4de3-807f-7c3d9acc9c36", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/ipython/simple_ga_test.ipynb b/examples/ipython/simple_ga_test.ipynb index 3567610c..9891d78b 100644 --- a/examples/ipython/simple_ga_test.ipynb +++ b/examples/ipython/simple_ga_test.ipynb @@ -284,9 +284,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [], "source": [ "A = o3d.lt('A')" @@ -300,12 +298,12 @@ { "data": { "text/latex": [ - "\\begin{equation*}\\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{yx} \\boldsymbol{e}_{y} + A_{zx} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{zy} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" + "\\begin{equation*}\\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto {A^{x}}_{x} \\boldsymbol{e}_{x} + {A^{y}}_{x} \\boldsymbol{e}_{y} + {A^{z}}_{x} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {A^{x}}_{y} \\boldsymbol{e}_{x} + {A^{y}}_{y} \\boldsymbol{e}_{y} + {A^{z}}_{y} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {A^{x}}_{z} \\boldsymbol{e}_{x} + {A^{y}}_{z} \\boldsymbol{e}_{y} + {A^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" ], "text/plain": [ - "Lt(e_x) = A_xx*e_x + A_yx*e_y + A_zx*e_z\n", - "Lt(e_y) = A_xy*e_x + A_yy*e_y + A_zy*e_z\n", - "Lt(e_z) = A_xz*e_x + A_yz*e_y + A_zz*e_z" + "Lt(e_x) = {A__x}_x*e_x + {A__y}_x*e_y + {A__z}_x*e_z\n", + "Lt(e_y) = {A__x}_y*e_x + {A__y}_y*e_y + {A__z}_y*e_z\n", + "Lt(e_z) = {A__x}_z*e_x + {A__y}_z*e_y + {A__z}_z*e_z" ] }, "execution_count": 18, @@ -327,12 +325,12 @@ { "data": { "text/latex": [ - "\\begin{equation*}A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{yx} \\boldsymbol{e}_{y} + A_{zx} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{zy} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" + "\\begin{equation*}A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto {A^{x}}_{x} \\boldsymbol{e}_{x} + {A^{y}}_{x} \\boldsymbol{e}_{y} + {A^{z}}_{x} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {A^{x}}_{y} \\boldsymbol{e}_{x} + {A^{y}}_{y} \\boldsymbol{e}_{y} + {A^{z}}_{y} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {A^{x}}_{z} \\boldsymbol{e}_{x} + {A^{y}}_{z} \\boldsymbol{e}_{y} + {A^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" ], "text/plain": [ - "A = Lt(e_x) = A_xx*e_x + A_yx*e_y + A_zx*e_z\n", - "Lt(e_y) = A_xy*e_x + A_yy*e_y + A_zy*e_z\n", - "Lt(e_z) = A_xz*e_x + A_yz*e_y + A_zz*e_z" + "A = Lt(e_x) = {A__x}_x*e_x + {A__y}_x*e_y + {A__z}_x*e_z\n", + "Lt(e_y) = {A__x}_y*e_x + {A__y}_y*e_y + {A__z}_y*e_z\n", + "Lt(e_z) = {A__x}_z*e_x + {A__y}_z*e_y + {A__z}_z*e_z" ] }, "execution_count": 19, @@ -352,12 +350,12 @@ { "data": { "text/latex": [ - "\\begin{equation*}A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto A_{xx} \\boldsymbol{e}_{x} + A_{yx} \\boldsymbol{e}_{y} + A_{zx} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto A_{xy} \\boldsymbol{e}_{x} + A_{yy} \\boldsymbol{e}_{y} + A_{zy} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto A_{xz} \\boldsymbol{e}_{x} + A_{yz} \\boldsymbol{e}_{y} + A_{zz} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" + "\\begin{equation*}A = \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto {A^{x}}_{x} \\boldsymbol{e}_{x} + {A^{y}}_{x} \\boldsymbol{e}_{y} + {A^{z}}_{x} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{y} &\\mapsto {A^{x}}_{y} \\boldsymbol{e}_{x} + {A^{y}}_{y} \\boldsymbol{e}_{y} + {A^{z}}_{y} \\boldsymbol{e}_{z} \\\\ \\boldsymbol{e}_{z} &\\mapsto {A^{x}}_{z} \\boldsymbol{e}_{x} + {A^{y}}_{z} \\boldsymbol{e}_{y} + {A^{z}}_{z} \\boldsymbol{e}_{z} \\end{aligned} \\right\\}\\end{equation*}" ], "text/plain": [ - "A = Lt(e_x) = A_xx*e_x + A_yx*e_y + A_zx*e_z\n", - "Lt(e_y) = A_xy*e_x + A_yy*e_y + A_zy*e_z\n", - "Lt(e_z) = A_xz*e_x + A_yz*e_y + A_zz*e_z" + "A = Lt(e_x) = {A__x}_x*e_x + {A__y}_x*e_y + {A__z}_x*e_z\n", + "Lt(e_y) = {A__x}_y*e_x + {A__y}_y*e_y + {A__z}_y*e_z\n", + "Lt(e_z) = {A__x}_z*e_x + {A__y}_z*e_y + {A__z}_z*e_z" ] }, "execution_count": 20, @@ -379,7 +377,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -393,9 +391,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.0" + "version": "3.11.8" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 4 } diff --git a/examples/ipython/test_gsg_undual_etc.ipynb b/examples/ipython/test_gsg_undual_etc.ipynb new file mode 100644 index 00000000..85d4b49d --- /dev/null +++ b/examples/ipython/test_gsg_undual_etc.ipynb @@ -0,0 +1,4106 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6f55977f", + "metadata": {}, + "source": [ + "# Testing of undualization, grade involution, Clifford conjugation, scalar product, normsquared, and norm\n", + "\n", + "Author: Greg Grunberg \n", + "Last updated 2021-03-31 " + ] + }, + { + "cell_type": "markdown", + "id": "ebee586e", + "metadata": {}, + "source": [ + "In this notebook I test the operations `undual`, `g_invol`, `ccon`, `sp`, `norm2`, and `norm`, code for which was described in the notebook **Code for undualization, grade involution, Clifford conjugation, scalar product, normsquared, and norm**. The first four of these are operations new to GAlgebra, while the last two are old operations I have newly recoded. \n", + "\n", + "Herein I use SymPy and the latest development version, as of this writing, of PyGAE Galgebra. PyGAE GAlgebra is available from https://github.com/pygae/galgebra, with the latest development version uploaded on 2020-10-18. *The GAlgebra module* **mv.py** *being used by this notebook is the 2020-10-18 version except modified so as to incoporate the `Mv` class methods testing of which is the purpose of this notebook.*\n", + "\n", + "I also use the GAlgebra module **gprinter.py**. That module, not yet available from the GitHub website, was provided directly to me by Alan Bromborsky, the original author of GAlgebra. The functions **`gprint`** and **`gFormat`** used herein come from **gprinter.py**.\n", + "\n", + "\n", + "**References** \n", + "[CAGC]: *Clifford Algebra to Geometric Calculus*, by Hestenes & Sobczyk \n", + "[GACS]: *Geometric Algebra for Computer Science*, by Dorst, Fontijne, & Mann \n", + "[LAGA]: *Linear and Geometric Algebra*, by Alan Macdonald\n" + ] + }, + { + "cell_type": "markdown", + "id": "b8077836", + "metadata": {}, + "source": [ + "## 1. Notebook initialization\n", + "\n", + "Execution of the next cell makes SymPy and GAlgebra available within this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c59e2276", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{This notebook is now using} \\\\\\qquad\\bullet~ \\text{Python }3.9.18\\qquad\\bullet~ \\text{SymPy }1.12\\qquad\\bullet~ \\text{GAlgebra }0.6.0-dev.$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import platform\n", + "\n", + "import sympy \n", + "from sympy import *\n", + "import galgebra\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets display mode of a multivector's basis expansion.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "\n", + "gFormat()\n", + "\t# Default `Fmode=True` suppresses display of a multivector fields'\n", + "\t# arguments. Default `Dmode=True` causes partial differentiation\n", + "\t# operators to be displayed in shortened form.\n", + "Ga.dual_mode('Iinv+') \n", + " # Sets dual of a multivector to be the multivector multiplied on \n", + " # its right by the inverse unit pseudoscalar, the convention used\n", + " # in LAGA, VAGC, and GACS.\n", + "gprint(r'\\text{This notebook is now using} \\\\',\n", + " r'\\qquad\\bullet~ \\text{Python }', platform.python_version(),\n", + " r'\\qquad\\bullet~ \\text{SymPy }', sympy.__version__[:],\n", + " r'\\qquad\\bullet~ \\text{GAlgebra }', \n", + " galgebra.__version__[:], r'.')" + ] + }, + { + "cell_type": "markdown", + "id": "d5005640", + "metadata": {}, + "source": [ + "## 2. Testing environment `g3` for operations `undual`, `g_invol`, `ccon`, and `sp`\n", + "\n", + "For testing purposes we will use the geometric algebra $\\mathbb{G}^{3,0}$ of Euclidean 3-space, which we implement in the next cell as `g3`. Cartesian coordinates $(x,y,z)$ are used.\n", + "\n", + "**Notation:** Unlike [GACS] and [LAGA], where boldface is used to signal that a multivector is a blade, this notebook uses boldface to denote non-scalar multivectors. Doing so allows establishes a visual distinction between a multivector $\\mathbf{A}$ and its grade 0 part, $A = \\left< \\mathbf{A} \\right>_0$. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e053271f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{model } \\textsf{g3} \\textbf{ of } \\mathbb{R}^{3}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{coordinates}~~ \\left[ x, \\ y, \\ z\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{basis}~~ \\left( \\boldsymbol{\\mathbf{e}}_{x}, \\ \\boldsymbol{\\mathbf{e}}_{y}, \\ \\boldsymbol{\\mathbf{e}}_{z}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{metric tensor}~~ [g_{ij}] = \\left[\\begin{array}{ccc}1 & 0 & 0\\\\0 & 1 & 0\\\\0 & 0 & 1\\end{array}\\right] \\text{ is Euclidean}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{unit pseudoscalar}~~ \\mathbf{I} = \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\quad\\text{generic multivectors} \\\\ \\quad\\quad\\mathbf{A} = \\begin{aligned}[t] & A \\\\ & + A^{x} \\boldsymbol{\\mathbf{e}}_{x} + A^{y} \\boldsymbol{\\mathbf{e}}_{y} + A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\quad \\quad \\mathbf{B} = \\begin{aligned}[t] & B \\\\ & + B^{x} \\boldsymbol{\\mathbf{e}}_{x} + B^{y} \\boldsymbol{\\mathbf{e}}_{y} + B^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + B^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + B^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + B^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + B^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Instantiate Cartesian coordinates.\n", + "# Instantiate the geometric algebra `g3` of Euclidean 3-space:\n", + "x, y, z = symbols('x y z', real=True) \n", + "g3 = Ga('\\mathbf{e}', \n", + " g=[[1,0,0], [0,1,0], [0,0,1]],\n", + " coords=(x,y,z))\n", + "\n", + "# Show various attributes and functions of `g3`:\n", + "gprint(r\"\\textbf{model } \\textsf{g3} \\textbf{ of } \\mathbb{R}^{3}:\")\n", + "gprint(r'\\quad \\text{coordinates}~~', g3.coords)\n", + "gprint(r'\\quad \\text{basis}~~', g3.mv())\n", + "gprint(r'\\quad \\text{metric tensor}~~ [g_{ij}] =', g3.g,\n", + " r'\\text{ is Euclidean}')\n", + "gprint(r'\\quad \\text{unit pseudoscalar}~~ \\mathbf{I} =', g3.I())\n", + "\n", + "# Instantiate and show generic multivectors `A` and `B` of `g3`:\n", + "A = g3.mv('A', 'mv')\n", + "B = g3.mv('B', 'mv')\n", + "gprint(r'\\quad\\text{generic multivectors} \\\\ \\quad\\quad\\mathbf{A} =',\n", + " A.Fmt(2), r'\\\\\\quad \\quad \\mathbf{B} =', B.Fmt(2))" + ] + }, + { + "cell_type": "markdown", + "id": "99253ba6", + "metadata": {}, + "source": [ + "## 3 Tests of `undual`, `g_invol`, `ccon`, and `sp`" + ] + }, + { + "cell_type": "markdown", + "id": "10353087", + "metadata": {}, + "source": [ + "### 3.1. `undual` (undualization)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c7fa60e5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} = \\begin{aligned}[t] & A \\\\ & + A^{x} \\boldsymbol{\\mathbf{e}}_{x} + A^{y} \\boldsymbol{\\mathbf{e}}_{y} + A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A}^{\\star} = \\begin{aligned}[t] & A^{xyz} \\\\ & + A^{yz} \\boldsymbol{\\mathbf{e}}_{x} - A^{xz} \\boldsymbol{\\mathbf{e}}_{y} + A^{xy} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & - A^{z} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{y} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} - A^{x} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & - A \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A}^{-\\star} = \\begin{aligned}[t] & - A^{xyz} \\\\ & - A^{yz} \\boldsymbol{\\mathbf{e}}_{x} + A^{xz} \\boldsymbol{\\mathbf{e}}_{y} - A^{xy} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{z} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} - A^{y} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{x} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A}^{-\\star} = -\\mathbf{A}^{\\star}:~~ \\text{True} \\qquad \\text {(Note: }\\mathbf{I}^2 = -1 )$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle (\\mathbf{A}^{\\star})^{-\\star} = \\mathbf{A}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle (\\mathbf{A}^{-\\star})^{\\star} = \\mathbf{A}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Show `A`, its method dual, and its method undual. \n", + "gprint(r'\\mathbf{A} =', A.Fmt(2))\n", + "gprint(r'\\mathbf{A}^{\\star} =', A.dual().Fmt(2))\n", + "gprint(r'\\mathbf{A}^{-\\star} =', A.undual().Fmt(2))\n", + "gprint(r'\\mathbf{A}^{-\\star} = -\\mathbf{A}^{\\star}:~~',\n", + " A.undual() == - A.dual(), \n", + " r'\\qquad \\text {(Note: }\\mathbf{I}^2 =', I**2, ')')\n", + "\n", + "# Check whether method `dual` and method `undual` have inverse actions:\n", + "gprint(r'(\\mathbf{A}^{\\star})^{-\\star} = \\mathbf{A}:~~',\n", + " A.dual().undual() == A)\n", + "gprint(r'(\\mathbf{A}^{-\\star})^{\\star} = \\mathbf{A}:~~',\n", + " A.undual().dual() == A)" + ] + }, + { + "cell_type": "markdown", + "id": "3dd6433b", + "metadata": {}, + "source": [ + "### 3.2. `g_invol` (grade involution)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a8c28609", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} = \\begin{aligned}[t] & A \\\\ & + A^{x} \\boldsymbol{\\mathbf{e}}_{x} + A^{y} \\boldsymbol{\\mathbf{e}}_{y} + A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\widehat{\\mathbf{A}} = \\begin{aligned}[t] & A \\\\ & - A^{x} \\boldsymbol{\\mathbf{e}}_{x} - A^{y} \\boldsymbol{\\mathbf{e}}_{y} - A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & - A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\widehat{\\left< \\mathbf{A} \\right>_+} = +\\left< \\mathbf{A} \\right>_+:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\widehat{\\left< \\mathbf{A} \\right>_-} = -\\left< \\mathbf{A} \\right>_-:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\widehat{\\widehat{\\mathbf{A}}} = \\mathbf{A}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Show `A` and its grade involute. \n", + "# Check whether `g_invol` is self-inverse:\n", + "gprint(r'\\mathbf{A} =', A.Fmt(2))\n", + "gprint(r'\\widehat{\\mathbf{A}} =', A.g_invol().Fmt(2))\n", + "gprint(r'\\widehat{\\left< \\mathbf{A} \\right>_+} = '\n", + " + r'+\\left< \\mathbf{A} \\right>_+:~~',\n", + " A.even().g_invol() == A.even())\n", + "gprint(r'\\widehat{\\left< \\mathbf{A} \\right>_-} = '\n", + " + r'-\\left< \\mathbf{A} \\right>_-:~~',\n", + " A.odd().g_invol() == - A.odd())\n", + "gprint(r'\\widehat{\\widehat{\\mathbf{A}}} = \\mathbf{A}:~~',\n", + " A.g_invol().g_invol() == A)" + ] + }, + { + "cell_type": "markdown", + "id": "24492ec8", + "metadata": {}, + "source": [ + "### 3.3. `ccon` (Clifford conjugation)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "aa255f32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} = \\begin{aligned}[t] & A \\\\ & + A^{x} \\boldsymbol{\\mathbf{e}}_{x} + A^{y} \\boldsymbol{\\mathbf{e}}_{y} + A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\overline{\\mathbf{A}} = \\begin{aligned}[t] & A \\\\ & - A^{x} \\boldsymbol{\\mathbf{e}}_{x} - A^{y} \\boldsymbol{\\mathbf{e}}_{y} - A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & - A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} - A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} - A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\overline{\\overline{\\mathbf{A}}} = \\mathbf{A}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\overline{\\mathbf{A}} = \\widehat{\\mathbf{A}}^\\dagger:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\overline{\\mathbf{A}} = \\widehat{\\mathbf{A^\\dagger}}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Show `A` and its Clifford conjugate. \n", + "# Check whether `ccon` is self-inverse:\n", + "gprint(r'\\mathbf{A} =', A.Fmt(2))\n", + "gprint(r'\\overline{\\mathbf{A}} =', A.ccon().Fmt(2))\n", + "gprint(r'\\overline{\\overline{\\mathbf{A}}} = \\mathbf{A}:~~',\n", + " A.ccon().ccon() == A)\n", + "gprint(r'\\overline{\\mathbf{A}} = \\widehat{\\mathbf{A}}^\\dagger:~~',\n", + " A.ccon() == (A.g_invol()).rev())\n", + "gprint(r'\\overline{\\mathbf{A}} = \\widehat{\\mathbf{A^\\dagger}}:~~',\n", + " A.ccon() == (A.g_invol()).rev())" + ] + }, + { + "cell_type": "markdown", + "id": "9f2f5dc1", + "metadata": {}, + "source": [ + "### 3.4. `sp` (scalar products)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b89afded", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} = \\begin{aligned}[t] & A \\\\ & + A^{x} \\boldsymbol{\\mathbf{e}}_{x} + A^{y} \\boldsymbol{\\mathbf{e}}_{y} + A^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + A^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + A^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + A^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B} = \\begin{aligned}[t] & B \\\\ & + B^{x} \\boldsymbol{\\mathbf{e}}_{x} + B^{y} \\boldsymbol{\\mathbf{e}}_{y} + B^{z} \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + B^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + B^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + B^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + B^{xyz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} \\ast \\mathbf{B} = \\left< \\mathbf{A} \\mathbf{B} \\right>_0:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} \\ast \\mathbf{B} = A B + A^{x} B^{x} - A^{xy} B^{xy} - A^{xyz} B^{xyz} - A^{xz} B^{xz} + A^{y} B^{y} - A^{yz} B^{yz} + A^{z} B^{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\Vert \\mathbf{A} \\Vert^2 = A^\\dagger \\ast A:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} \\circledast \\mathbf{B} = A B + A^{x} B^{x} + A^{xy} B^{xy} + A^{xyz} B^{xyz} + A^{xz} B^{xz} + A^{y} B^{y} + A^{yz} B^{yz} + A^{z} B^{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\Vert\\mathbf{A}\\Vert^2 = \\mathbf{A}\\circledast\\mathbf{A}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} \\ast \\mathbf{B} =\\mathbf{A}^\\dagger \\circledast \\mathbf{B}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A} \\circledast \\mathbf{B} =\\mathbf{A}^\\dagger \\ast \\mathbf{B}:~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Show `A`, `B`, their scalar product, and their alternate \n", + "# scalar product.\n", + "gprint(r'\\mathbf{A} =', A.Fmt(2))\n", + "gprint(r'\\mathbf{B} =', B.Fmt(2))\n", + "gprint(r'\\mathbf{A} \\ast \\mathbf{B} = '\n", + " + r'\\left< \\mathbf{A} \\mathbf{B} \\right>_0:~~',\n", + " A.sp(B) == (A*B).scalar()) \n", + "gprint(r'\\mathbf{A} \\ast \\mathbf{B} =', A.sp(B))\n", + "gprint(r'\\Vert \\mathbf{A} \\Vert^2 = A^\\dagger \\ast A:~~',\n", + " A.norm2() == A.rev().sp(A))\n", + "gprint(r'\\mathbf{A} \\circledast \\mathbf{B} =', A.sp(B,'rev'))\n", + "gprint(r'\\Vert\\mathbf{A}\\Vert^2 = \\mathbf{A}\\circledast\\mathbf{A}:~~',\n", + " A.norm2() == A.sp(A,'rev'))\n", + "gprint(r'\\mathbf{A} \\ast \\mathbf{B} ='\n", + " + r'\\mathbf{A}^\\dagger \\circledast \\mathbf{B}:~~',\n", + " A.sp(B) == A.rev().sp(B, 'rev'))\n", + "gprint(r'\\mathbf{A} \\circledast \\mathbf{B} ='\n", + " + r'\\mathbf{A}^\\dagger \\ast \\mathbf{B}:~~',\n", + " A.sp(B,'rev') == A.rev().sp(B))" + ] + }, + { + "cell_type": "markdown", + "id": "090e0a7f", + "metadata": {}, + "source": [ + "The above tests include tests of the relationship of the (usual) scalar product $\\ast$ and the alternate scalar product $\\circledast$ to the normsquared operation $\\Vert \\cdot \\Vert^2$." + ] + }, + { + "cell_type": "markdown", + "id": "343b9494", + "metadata": {}, + "source": [ + "### 3.5. Conclusions from testing the new operations\n", + "\n", + "The output from each of the executable In[ ] cells of subsections 3.1, 3.2, 3.3, and 3.4 was precisely what was expected from calculations done by hand. That, together with the simplicity of the code, should give confidence that the operations were correctly coded." + ] + }, + { + "cell_type": "markdown", + "id": "a58386ba", + "metadata": {}, + "source": [ + "## 4. Testing environments `e2`, `e2_polar`, `m2`, and `m2_polar` for `norm2` and `norm`\n", + "\n", + "We shall test `norm2` and `norm` in the context of four simple models: \n", + "1. `e2` models $\\mathbb{E}^2$ (Euclidean 2-space) using Cartesian coordinates $(x,y)$. The basis $(\\mathbf{e}_x,\\mathbf{e}_y)$ for the tangent space to $\\mathbb{E}^2$ at location $(x,y)$ is orthonormal. Basis vectors are independent of location, which is to say every tangent space uses the same basis. \n", + "\n", + "2. `e2_polar` models $\\mathbb{E}^2$ using polar coordinates $(r,\\theta)$, which are related to the Cartesian coordinates through the relationship $(x,y) = (r \\cos(\\theta), r \\sin(\\theta))$. The basis $(\\mathbf{b}_r,\\mathbf{b}_\\theta)$ for the tangent space to $\\mathbb{E}^2$ at location $(r,\\theta)$ is orthogonal but not orthonormal. The lengths and directions of the basis vectors depend on location ($(r,\\theta)$) (the point of tangency). The origin $r=0$ is excluded from the coordinate system, so we require $r>0$. \n", + "\n", + "3. `m2` models $\\mathbb{M}^{1,1}$ (Minkowski 2-space) using Cartesian coordinates $(s,t)$. The basis $(\\mathbf{e}_s,\\mathbf{e}_t)$ for the tangent space to $\\mathbb{M}^{1,1}$ at $(s,t)$ is orthonormal. Basis vectors are independent of location $(s,t)$. \n", + "\n", + "4. `m2_polar` models $\\mathbb{M}^{1,1}$ using hyperbolic polar coordinates$^\\ast$ $(\\rho,\\phi)$, which are related to the Cartesian coordinates through the relationship $(s,t) = (\\rho \\cosh(\\phi), \\rho \\sinh(\\phi))$. The basis $(\\mathbf{b}_\\rho,\\mathbf{b}_\\phi)$ for the tangent space to $\\mathbb{E}^2$ at $(\\rho,\\phi)$ is orthogonal but not orthonormal. The lengths and directions of the basis vectors depend on location. Hyperbolic polar coordinates as defined here correspond to the region described in Cartesian coordinates $(s,t)$ as lying between the null lines $t=+s$ and $t=-s$, with $s>0$. In particular this excludes the origin $\\rho=0$, so we require $\\rho>0$. But even were the origin included, the polar coordinates describe only a quarter of the 2-space. More specifically they should be called a coordinates *patch*.\n", + "\n", + "For each of the four models I define a symbolic multivector $\\mathbf{S}$ and a constant (location-independent) numeric multivector $\\mathbf{N}$. The numeric multivector `N2` of model `e2_polar` has been so designed as to represent the same constant multivector $\\mathbf{N}$ as numeric multivector `N1` of model `e2`. Similarly `N4` of `m2_polar` represents the same constant numeric multivector as does `N3` of `m2`. For models `m2` and `m2_polar` of the non-Euclidean space $\\mathbb{M}^{1,1}$, I also define multivector fields $\\mathbf{A}$ and $\\mathbf{B}$, respectively, for which $\\Vert\\mathbf{A}\\Vert^2 > 0$ and $\\Vert\\mathbf{B}\\Vert^2 < 0$.\n", + "\n", + "$^\\ast$ \"Hyperbolic polar\" is a name of my own invention, meant to indicate an analog on the *hyperbolic* plane (Minkowski 2-space) of *polar* coordinates $(r,\\theta)$ on the Euclidean plane. If there's a standard name or standard symbols for these coordinates, I'm unaware of it." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "648220c5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{model }\\textsf{e2}\\textbf{ of }\\mathbb{E}^2:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{coordinates}~~ \\left[ x, \\ y\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{basis}~~ \\left( \\boldsymbol{\\mathbf{e}}_{x}, \\ \\boldsymbol{\\mathbf{e}}_{y}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{metric tensor}~~ [g_{ij}] = \\left[\\begin{array}{cc}1 & 0\\\\0 & 1\\end{array}\\right] \\text{ is Euclidean:}~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{multivectors}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{S} = S + S^{x} \\boldsymbol{\\mathbf{e}}_{x} + S^{y} \\boldsymbol{\\mathbf{e}}_{y} + S^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{N} = - 2 \\sqrt{6} - \\frac{3 \\sqrt{3}}{2} \\boldsymbol{\\mathbf{e}}_{x} + \\frac{3}{2} \\boldsymbol{\\mathbf{e}}_{y} -4 \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Model 1 \n", + "# Create Cartesian coordinates model `e2` of Euclidean 2-space.\n", + "x, y = symbols('x y', real=True)\n", + "e2 = Ga('\\mathbf{e}', g=[1,1], coords=(x,y))\n", + "ex, ey = e2.mv()\n", + "# Create symbolic mixed grade multivector `S1`.\n", + "S1 = e2.mv('S', 'mv')\n", + "# Create numeric mixed grade multivector `N1`.\n", + "N1 = -sqrt(24) - (sqrt(27)/2)*ex + Rational(3,2)*ey - 4*(ex^ey)\n", + "\n", + "# Show various attributes and functions of `e2`:\n", + "gprint(r\"\\textbf{model }\\textsf{e2}\\textbf{ of }\\mathbb{E}^2:\")\n", + "gprint(r'\\quad \\text{coordinates}~~', e2.coords)\n", + "gprint(r'\\quad \\text{basis}~~', e2.mv())\n", + "gprint(r'\\quad \\text{metric tensor}~~ [g_{ij}] =', e2.g,\n", + " r'\\text{ is Euclidean:}~~', e2.g.is_positive_definite)\n", + "# Show multivectors `S1` and `N1` of `e2`:\n", + "gprint(r'\\quad \\text{multivectors}')\n", + "gprint(r'\\quad \\quad \\mathbf{S} =', S1)\n", + "gprint(r'\\quad \\quad \\mathbf{N} =', N1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "93020af9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{model }\\textsf{e2_polar}\\textbf{ of }\\mathbb{E}^2:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{coordinates}~~ \\left[ r, \\ \\theta \\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{basis}~~ \\left( \\boldsymbol{\\mathbf{b}}_{r}, \\ \\boldsymbol{\\mathbf{b}}_{\\theta }\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{metric tensor}~~ [g_{ij}] = \\left[\\begin{array}{cc}1 & 0\\\\0 & r^{2}\\end{array}\\right] \\text{ is Euclidean:}~~ \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{multivectors}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{S} = S + S^{r} \\boldsymbol{\\mathbf{b}}_{r} + S^{\\theta } \\boldsymbol{\\mathbf{b}}_{\\theta } + S^{r\\theta } \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{N} = - 2 \\sqrt{6} - 3 \\cos{\\left (\\theta + \\frac{\\pi}{6} \\right )} \\boldsymbol{\\mathbf{b}}_{r} + \\frac{3 \\sin{\\left (\\theta + \\frac{\\pi}{6} \\right )}}{r} \\boldsymbol{\\mathbf{b}}_{\\theta } - \\frac{4}{r} \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Model 2\n", + "# Create polar coordinates model `e2_polar` of Euclidean 2-space. \n", + "r = symbols('r', positive=True) # origin r=0 NOT included \n", + "theta = symbols('theta', real=True)\n", + "p = (r*cos(theta), r*sin(theta)) \n", + "e2_polar = Ga('\\mathbf{b}', g=[1,r**2], coords=(r,theta))\n", + "br, btheta = e2_polar.mv() # basis vectors NOT normalized\n", + "# Create symbolic mixed grade multivector `S2`.\n", + "# Create numeric mixed grade multivector `N2`.\n", + "S2 = e2_polar.mv('S', 'mv')\n", + "N2 = -sqrt(24) + ((3*sin(theta) - sqrt(27)*cos(theta))/2)*br \\\n", + " + ((3*cos(theta) + sqrt(27)*sin(theta))/(2*r))*btheta \\\n", + " - (4/r)*(br^btheta)\n", + "\n", + "# Show various attributes and functions of `e2_polar`:\n", + "gprint(r\"\\textbf{model }\\textsf{e2_polar}\\textbf{ of }\\mathbb{E}^2:\")\n", + "gprint(r'\\quad \\text{coordinates}~~', e2_polar.coords)\n", + "gprint(r'\\quad \\text{basis}~~', e2_polar.mv())\n", + "gprint(r'\\quad \\text{metric tensor}~~ [g_{ij}] =', e2_polar.g,\n", + " r'\\text{ is Euclidean:}~~', e2_polar.g.is_positive_definite)\n", + "# Show multivectors `S2` and `N2` of `e2_polar`:\n", + "gprint(r'\\quad \\text{multivectors}')\n", + "gprint(r'\\quad \\quad \\mathbf{S} =', S2)\n", + "gprint(r'\\quad \\quad \\mathbf{N} =', N2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "db8d0100", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{model }\\textsf{m2}\\textbf{ of }\\mathbb{M}^{1,1}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{coordinates}~~ \\left[ s, \\ t\\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{basis}~~ \\left( \\boldsymbol{\\mathbf{e}}_{s}, \\ \\boldsymbol{\\mathbf{e}}_{t}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{metric tensor}~~ [g_{ij}] = \\left[\\begin{array}{cc}1 & 0\\\\0 & -1\\end{array}\\right] \\text{ is Euclidean:}~~ \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{multivectors}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{S} = S + S^{s} \\boldsymbol{\\mathbf{e}}_{s} + S^{t} \\boldsymbol{\\mathbf{e}}_{t} + S^{st} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{N} = - 2 \\sqrt{7} + 3 \\boldsymbol{\\mathbf{e}}_{s} + 5 \\boldsymbol{\\mathbf{e}}_{t} - \\sqrt{37} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{A} = 5 + \\left ( s^{2} + t^{2}\\right ) \\boldsymbol{\\mathbf{e}}_{s} + s^{2} \\boldsymbol{\\mathbf{e}}_{t} -5 \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Model 3 \n", + "# Create Cartesian coordinates model `m2` of Minkowski 2-space. \n", + "s, t = symbols('s t', real=True)\n", + "m2 = Ga('\\mathbf{e}', g=[1,-1], coords=(s,t))\n", + "es, et = m2.mv()\n", + "# Create symbolic mixed grade multivector `S3`.\n", + "S3 = m2.mv('S', 'mv')\n", + "# Create numeric mixed grade multivector `N3`.\n", + "N3 = -sqrt(28) + 3*es + 5*et - sqrt(37)*(es^et)\n", + "# Create position-dependent multivector `A3` with a nonnegative\n", + "# normsquared. `A3` will be used to test Case 3(a) in the execution\n", + "# of `norm`'s code.\n", + "A3 = 5 + (s**2 + t**2)*es + (s**2)*et - 5*(es^et) \n", + "\n", + "# Show various attributes and functions of `m2`:\n", + "gprint(r\"\\textbf{model }\\textsf{m2}\\textbf{ of }\\mathbb{M}^{1,1}:\")\n", + "gprint(r'\\quad \\text{coordinates}~~', m2.coords)\n", + "gprint(r'\\quad \\text{basis}~~', m2.mv())\n", + "gprint(r'\\quad \\text{metric tensor}~~ [g_{ij}] =', m2.g,\n", + " r'\\text{ is Euclidean:}~~', m2.g.is_positive_definite)\n", + "# Show multivectors `S3`,`N3`, and `A3` of `m2`:\n", + "gprint(r'\\quad \\text{multivectors}')\n", + "gprint(r'\\quad \\quad \\mathbf{S} =', S3)\n", + "gprint(r'\\quad \\quad \\mathbf{N} =', N3)\n", + "gprint(r'\\quad \\quad \\mathbf{A} =', A3)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bb01bfee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\textbf{model }\\textsf{m2_polar}\\textbf{ of }\\mathbb{M}^{1,1}:$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{coordinates}~~ \\left[ \\rho , \\ \\phi \\right] $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{basis}~~ \\left( \\boldsymbol{\\mathbf{b}}_{\\rho }, \\ \\boldsymbol{\\mathbf{b}}_{\\phi }\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{metric tensor}~~ [g_{ij}] = \\left[\\begin{array}{cc}1 & 0\\\\0 & - \\rho ^{2}\\end{array}\\right] \\text{ is Euclidean:}~~ \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\text{multivectors}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{S} = S + S^{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho } + S^{\\phi } \\boldsymbol{\\mathbf{b}}_{\\phi } + S^{\\rho \\phi } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{N} = - 2 \\sqrt{7} + \\left ( - e^{\\phi } + 4 e^{- \\phi }\\right ) \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{e^{\\phi } + 4 e^{- \\phi }}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } - \\frac{\\sqrt{37}}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\quad \\quad \\mathbf{B} = \\rho ^{2} -16 \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{16}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } - \\sqrt{\\phi ^{2} + \\rho ^{2}} \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Model 4 \n", + "# Create hyperbolic polar coordinates model `m2_polar` of\n", + "# Minkowski 2-space.\n", + "rho = symbols('rho', positive=True) # origin rho=0 NOT included\n", + "phi = symbols('phi', real=True)\n", + "m2_polar = Ga('\\mathbf{b}', g=[1,-rho**2], coords=(rho, phi))\n", + "brho, bphi = m2_polar.mv() # basis vectors NOT normalized\n", + "# Create symbolic mixed grade multivector `S4`.\n", + "S4 = m2_polar.mv('S', 'mv')\n", + "# Create numeric mixed grade multivector `N3`.\n", + "N4 = -sqrt(28) + (3*cosh(phi) - 5*sinh(phi))*brho \\\n", + " + ((5*cosh(phi) - 3*sinh(phi))/rho)*bphi \\\n", + " - (sqrt(37)/rho)*(brho^bphi)\n", + "# Create position-dependent multivector `B4` with a nonpositive\n", + "# normsquared. `B4` will be used to test Case 3(b) in the execution\n", + "# of `norm`'s code.\n", + "B4 = rho**2 - 16*brho + (16/rho)*bphi - sqrt(rho**2 \\\n", + " + phi**2)*(brho^bphi)\n", + "\n", + "# Show various attributes and functions of `m2_polar`:\n", + "gprint(r\"\\textbf{model }\\textsf{m2_polar}\\textbf{ of }\\mathbb{M}^{1,1}:\")\n", + "gprint(r'\\quad \\text{coordinates}~~', m2_polar.coords)\n", + "gprint(r'\\quad \\text{basis}~~', m2_polar.mv())\n", + "gprint(r'\\quad \\text{metric tensor}~~ [g_{ij}] =', m2_polar.g,\n", + " r'\\text{ is Euclidean:}~~', m2_polar.g.is_positive_definite)\n", + "# Show multivectors `S4`,`N4`, and `B4` of `m2_polar`:\n", + "gprint(r'\\quad \\text{multivectors}')\n", + "gprint(r'\\quad \\quad \\mathbf{S} =', S4)\n", + "gprint(r'\\quad \\quad \\mathbf{N} =', N4)\n", + "gprint(r'\\quad \\quad \\mathbf{B} =', B4)" + ] + }, + { + "cell_type": "markdown", + "id": "9f3876e9", + "metadata": {}, + "source": [ + "*Remark:* The above reports as to whether the model's metric tensor `g` is Euclidean use the same test `g.is_positive_definite` as is used in Case 2 of `norm`." + ] + }, + { + "cell_type": "markdown", + "id": "eeffef9c", + "metadata": {}, + "source": [ + "## 5. The test program for `norm2` and `norm` \n", + "The next cell defines a program that displays the multivector `M` which is its argument, indicates the geometric algebra to which `M` belongs, shows the normsquared of `M`, and then shows for each of the three possible `hint` values the norm of `M`.\n", + "\n", + "Only multivectors defined in Section 4 (i.e. `S1`, `S2`, `S3`, `S4`, `N1`, `N2`, `N3`, `N4`, `A3`, and `B4`) are allowed values of `M`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "42cf5c27", + "metadata": {}, + "outputs": [], + "source": [ + "def test_with(M):\n", + " \"\"\"\n", + " Computes and displays the multivector `M`, its normsquared, \n", + " and its norm as computed with each of the allowed hint values.\n", + " Does the same for each grade part of `M`.\n", + " \"\"\"\n", + " ga_str = \\\n", + " {e2:r'\\mathbb{G}(\\mathbb{E}^2)',\n", + " e2_polar:r'\\mathbb{G}(\\mathbb{E}^2)',\n", + " m2:r'\\mathbb{G}(\\mathbb{M}^{1,1})',\n", + " m2_polar:r'\\mathbb{G}(\\mathbb{M}^{1,1})'}\n", + " model_str = {e2:r'\\textsf{e2}', e2_polar:r'\\textsf{e2_polar}',\n", + " m2:r'\\testsf{m2}', m2_polar:r'\\textsf{m2_polar}'}\n", + " M_str = {S1:r'\\mathbf{S}', S2:r'\\mathbf{S}',\n", + " S3:r'\\mathbf{S}', S4:r'\\mathbf{S}',\n", + " N1:r'\\mathbf{N}', N2:r'\\mathbf{N}',\n", + " N3:r'\\mathbf{N}', N4:r'\\mathbf{N}',\n", + " A3:r'\\mathbf{A}', B4:r'\\mathbf{B}'}\n", + " # Display multivector `M`, its normsquared, and its norm:\n", + " gprint(M_str[M] + r'=', M, r'\\in', ga_str[M.Ga])\n", + " gprint(r'\\qquad \\implies \\Vert'+M_str[M]+r'\\Vert^2 =', \n", + " M.norm2())\n", + " gprint(r'\\qquad \\implies \\vert'+M_str[M]+r'\\vert =',\n", + " M.norm('0'), r\"\\quad \\text{ when hint is '0'}\")\n", + " gprint(r'\\qquad \\qquad\\; \\vert'+M_str[M]+r'\\vert =', \n", + " M.norm('+'), r\"\\quad \\text{ when hint is '+'}\")\n", + " gprint(r'\\qquad \\qquad\\; \\vert'+M_str[M]+r'\\vert =', \n", + " M.norm('-'), r\"\\quad \\text{ when hint is '-'}\")\n", + " # Display grade parts of multivector `M`, their normsquareds,\n", + " # and their norms:\n", + " for g in range(3):\n", + " gprint(r'\\left<' +M_str[M]+r'\\right>_'+str(g)+r' =',\n", + " M.grade(g), r'\\in ', ga_str[M.grade(g).Ga]) \n", + " gprint(r'\\qquad \\implies \\Vert\\left<'+M_str[M]+r'\\right>_'\n", + " +str(g)+r'\\Vert^2 =', M.grade(g).norm2())\n", + " gprint(r'\\qquad \\implies \\vert\\left<'+M_str[M]+r'\\right>_'\n", + " +str(g)+r'\\vert =', M.grade(g).norm('0'),\n", + " r\"\\quad \\text{ when hint is '0'}\")\n", + " gprint(r'\\qquad \\qquad\\; \\vert\\left<'+M_str[M]+r'\\right>_'\n", + " +str(g)+r'\\vert =', M.grade(g).norm('+'),\n", + " r\"\\quad \\text{ when hint is '+'}\")\n", + " gprint(r'\\qquad \\qquad\\; \\vert\\left<'+M_str[M]+r'\\right>_'\n", + " +str(g)+r'\\vert =', M.grade(g).norm('-'),\n", + " r\"\\quad \\text{ when hint is '-'}\")" + ] + }, + { + "cell_type": "markdown", + "id": "d1ddca69", + "metadata": {}, + "source": [ + "## 6. Tests of `norm2` and `norm`" + ] + }, + { + "cell_type": "markdown", + "id": "413f4854", + "metadata": {}, + "source": [ + "### 6.1 Testing within `e2` \n", + "The next two In[ ] cells test `norm2` and `norm` with the multivectors `S1` and `N1` from `e2`. \n", + "- Since `e2` has a Euclidean metric, the value of `S1.norm(hint)` should not and does not depend on the `hint` given.\n", + "- Since `N1` is a location-independent numeric multivector, the value of `N1.norm(hint)` should not and does not depend on the `hint` given. Neither does it depend on location." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "813ee65a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{S}= S + S^{x} \\boldsymbol{\\mathbf{e}}_{x} + S^{y} \\boldsymbol{\\mathbf{e}}_{y} + S^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} \\in\\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{S}\\Vert^2 = S^{2} + {\\left ( S^{x} \\right )}^{2} + {\\left ( S^{xy} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{x} \\right )}^{2} + {\\left ( S^{xy} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{x} \\right )}^{2} + {\\left ( S^{xy} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{x} \\right )}^{2} + {\\left ( S^{xy} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_0 = S \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_0\\Vert^2 = S^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_1 = S^{x} \\boldsymbol{\\mathbf{e}}_{x} + S^{y} \\boldsymbol{\\mathbf{e}}_{y} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_1\\Vert^2 = {\\left ( S^{x} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{x} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{x} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{x} \\right )}^{2} + {\\left ( S^{y} \\right )}^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_2 = S^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_2\\Vert^2 = {\\left ( S^{xy} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{xy} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{xy} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{xy} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(S1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c6748b4f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{N}= - 2 \\sqrt{6} - \\frac{3 \\sqrt{3}}{2} \\boldsymbol{\\mathbf{e}}_{x} + \\frac{3}{2} \\boldsymbol{\\mathbf{e}}_{y} -4 \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} \\in\\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{N}\\Vert^2 = 49 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_0 = - 2 \\sqrt{6} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_0\\Vert^2 = 24 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_1 = - \\frac{3 \\sqrt{3}}{2} \\boldsymbol{\\mathbf{e}}_{x} + \\frac{3}{2} \\boldsymbol{\\mathbf{e}}_{y} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_1\\Vert^2 = 9 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_2 = -4 \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_2\\Vert^2 = 16 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(N1)" + ] + }, + { + "cell_type": "markdown", + "id": "a2422ab4", + "metadata": {}, + "source": [ + "### 6.2 Testing within `e2_polar` \n", + "The next two In[ ] cells test `norm2` and `norm` with the multivectors `S2` and `N2` from `e2_polar`. \n", + "- Since `e2_polar` has a Euclidean metric, the value of `S2.norm(hint)` should not and does not depend on the `hint` given.\n", + "- Since `N2` is a location-independent numeric multivector, the value of `N2.norm(hint)` should not and does not depend on the `hint` given. Neither does it depend on location.\n", + "- Notice the results for `N2` should and do agree with those for `N1` above, which is as desired since `N1` and `N2` represent the same position-independent numeric multivector in $\\mathbb{G}(\\mathbb{E}^2)$." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "df49d984", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{S}= S + S^{r} \\boldsymbol{\\mathbf{b}}_{r} + S^{\\theta } \\boldsymbol{\\mathbf{b}}_{\\theta } + S^{r\\theta } \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } \\in\\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{S}\\Vert^2 = S^{2} + {\\left ( S^{r} \\right )}^{2} + {\\left ( S^{r\\theta } \\right )}^{2} r^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{r} \\right )}^{2} + {\\left ( S^{r\\theta } \\right )}^{2} r^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{r} \\right )}^{2} + {\\left ( S^{r\\theta } \\right )}^{2} r^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{r} \\right )}^{2} + {\\left ( S^{r\\theta } \\right )}^{2} r^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_0 = S \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_0\\Vert^2 = S^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_1 = S^{r} \\boldsymbol{\\mathbf{b}}_{r} + S^{\\theta } \\boldsymbol{\\mathbf{b}}_{\\theta } \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_1\\Vert^2 = {\\left ( S^{r} \\right )}^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{r} \\right )}^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{r} \\right )}^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{r} \\right )}^{2} + {\\left ( S^{\\theta } \\right )}^{2} r^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_2 = S^{r\\theta } \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_2\\Vert^2 = {\\left ( S^{r\\theta } \\right )}^{2} r^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{r\\theta } r \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{r\\theta } r \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{r\\theta } r \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(S2)" + ] + }, + { + "cell_type": "markdown", + "id": "a051af1b", + "metadata": {}, + "source": [ + "*Remark:* SymPy was able to take a factor of $r^2$ out from under the radical as $r$ rather than $\\vert r \\vert$ because `r` was instantiated with condition `positive=True`. SymPy does not know whether basis blade coefficients $S$ and $S^{r\\theta}$ are nonnegative, so it takes their squares out from under the radical as $\\vert S \\vert$ and $\\vert S^{r\\theta} \\vert$." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "71b635d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{N}= - 2 \\sqrt{6} - 3 \\cos{\\left (\\theta + \\frac{\\pi}{6} \\right )} \\boldsymbol{\\mathbf{b}}_{r} + \\frac{3 \\sin{\\left (\\theta + \\frac{\\pi}{6} \\right )}}{r} \\boldsymbol{\\mathbf{b}}_{\\theta } - \\frac{4}{r} \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } \\in\\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{N}\\Vert^2 = 49 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 7 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_0 = - 2 \\sqrt{6} \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_0\\Vert^2 = 24 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{6} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_1 = - 3 \\cos{\\left (\\theta + \\frac{\\pi}{6} \\right )} \\boldsymbol{\\mathbf{b}}_{r} + \\frac{3 \\sin{\\left (\\theta + \\frac{\\pi}{6} \\right )}}{r} \\boldsymbol{\\mathbf{b}}_{\\theta } \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_1\\Vert^2 = 9 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 3 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_2 = - \\frac{4}{r} \\boldsymbol{\\mathbf{b}}_{r}\\wedge \\boldsymbol{\\mathbf{b}}_{\\theta } \\in \\mathbb{G}(\\mathbb{E}^2)$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_2\\Vert^2 = 16 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = 4 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(N2)" + ] + }, + { + "cell_type": "markdown", + "id": "ee245858", + "metadata": {}, + "source": [ + "### 6.3 Testing within `m2` \n", + "The next three In[ ] cells test `norm2` and `norm` using the `m2` multivectors `S3`, `N3`, and `A3. \n", + "- Since `m2` has a non-Euclidean metric, the value of `S3.norm(hint)` should be expected to and does depend on the `hint` given.\n", + "- Since `N3` is a location-independent numeric multivector, the value of `N3.norm(hint)` should not and does not depend on the `hint` given. Neither does it depend on location.\n", + "- `A3` has a nonnegative normsquared, discernible as such by SymPy, so it should and does trigger Case 3(a) of `norm`'s code, leading to a `A3.norm(hint)` which is `hint` independent." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7006e40f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{S}= S + S^{s} \\boldsymbol{\\mathbf{e}}_{s} + S^{t} \\boldsymbol{\\mathbf{e}}_{t} + S^{st} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{S}\\Vert^2 = \\left|{S^{2} + {\\left ( S^{s} \\right )}^{2} - {\\left ( S^{st} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}}\\right| $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{S}\\vert = \\sqrt{\\left|{S^{2} + {\\left ( S^{s} \\right )}^{2} - {\\left ( S^{st} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}}\\right|} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} + {\\left ( S^{s} \\right )}^{2} - {\\left ( S^{st} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{- S^{2} - {\\left ( S^{s} \\right )}^{2} + {\\left ( S^{st} \\right )}^{2} + {\\left ( S^{t} \\right )}^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_0 = S \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_0\\Vert^2 = S^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_1 = S^{s} \\boldsymbol{\\mathbf{e}}_{s} + S^{t} \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_1\\Vert^2 = \\left|{{\\left ( S^{s} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}}\\right| $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{\\left|{{\\left ( S^{s} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}}\\right|} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{s} \\right )}^{2} - {\\left ( S^{t} \\right )}^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{- {\\left ( S^{s} \\right )}^{2} + {\\left ( S^{t} \\right )}^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_2 = S^{st} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_2\\Vert^2 = {\\left ( S^{st} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{st} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{st} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{st} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(S3)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9b32e234", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{N}= - 2 \\sqrt{7} + 3 \\boldsymbol{\\mathbf{e}}_{s} + 5 \\boldsymbol{\\mathbf{e}}_{t} - \\sqrt{37} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{N}\\Vert^2 = 25 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_0 = - 2 \\sqrt{7} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_0\\Vert^2 = 28 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_1 = 3 \\boldsymbol{\\mathbf{e}}_{s} + 5 \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_1\\Vert^2 = 16 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_2 = - \\sqrt{37} \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_2\\Vert^2 = 37 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(N3)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3862bdb9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{A}= 5 + \\left ( s^{2} + t^{2}\\right ) \\boldsymbol{\\mathbf{e}}_{s} + s^{2} \\boldsymbol{\\mathbf{e}}_{t} -5 \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{A}\\Vert^2 = t^{2} \\cdot \\left(2 s^{2} + t^{2}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{A}\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{A}\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{A}\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{A}\\right>_0 = 5 \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{A}\\right>_0\\Vert^2 = 25 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{A}\\right>_0\\vert = 5 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_0\\vert = 5 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_0\\vert = 5 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{A}\\right>_1 = \\left ( s^{2} + t^{2}\\right ) \\boldsymbol{\\mathbf{e}}_{s} + s^{2} \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{A}\\right>_1\\Vert^2 = t^{2} \\cdot \\left(2 s^{2} + t^{2}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{A}\\right>_1\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_1\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_1\\vert = \\sqrt{2 s^{2} + t^{2}} \\left|{t}\\right| \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{A}\\right>_2 = -5 \\boldsymbol{\\mathbf{e}}_{s}\\wedge \\boldsymbol{\\mathbf{e}}_{t} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{A}\\right>_2\\Vert^2 = 25 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{A}\\right>_2\\vert = 5 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_2\\vert = 5 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{A}\\right>_2\\vert = 5 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{A3.norm2() >= 0}: \\quad \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(A3.norm2() >= 0) == 0}: \\quad \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{A3.norm2() <= 0}: \\quad t^{2} \\cdot \\left(2 s^{2} + t^{2}\\right) \\leq 0 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(A3.norm2() <= 0) == 0}: \\quad \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{A3.norm2() < 0}: \\quad \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(A3.norm2() < 0) == 0}: \\quad \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(A3)\n", + "# Is `normsquared` nonnegative? Show values of relational and \n", + "# conditional in Case 3(a) of `norm`'s code:\n", + "gprint(r'\\text{A3.norm2() >= 0}: \\quad', A3.norm2() >= 0)\n", + "gprint(r'\\text{(A3.norm2() >= 0) == 0}: \\quad',\n", + " (A3.norm2() >= 0) == True)\n", + "# Is `normsquared` nonpositive? Show values of relational and \n", + "# conditional in Case 3(b):\n", + "gprint(r'\\text{A3.norm2() <= 0}: \\quad', A3.norm2() <= 0)\n", + "gprint(r'\\text{(A3.norm2() <= 0) == 0}: \\quad',\n", + " (A3.norm2() <= 0) == True)\n", + "# Is `normsquared` negative? Show values of relational and \n", + "# conditional complementary to Case 3(a):\n", + "gprint(r'\\text{A3.norm2() < 0}: \\quad', A3.norm2() < 0)\n", + "gprint(r'\\text{(A3.norm2() < 0) == 0}: \\quad',\n", + " (A3.norm2() < 0) == True)" + ] + }, + { + "cell_type": "markdown", + "id": "183a219a", + "metadata": {}, + "source": [ + "So as to provide a test of Case 3(a) in the execution of `norm`, the multivector `A3` from `m2` was designed to have a nonnegative `normsquared`. (The various cases are described in the notebook **Code for undualization, grade involution, Clifford conjugation, scalar product, normsquared, and norm**.) The relational `normsquared >= 0` within Case 3(a)'s conditional evaluates to `True`; hence the conditional itself, `(normsquared >= 0) == True`, also evaluates to `True`. The consequent of the `if` statement then executes, returning the `hint`-independent expression `\\sqrt(+normsquared)`.\n", + "\n", + "As an experiment as to how SymPy would handle other relationals, the above cell also showed how SymPy would evaluate the nonpositivity relational `normsquared <= 0` of Case 3(b)'s conditional. SymPy wasn't able to assign a `True` or `False` value to `normsquared <= 0`, possibly because some of the possible values of `normsquared` are positive.\n", + "\n", + "Not unexpectedly, the complementary relational `normsquared < 0` (negativity) to Case 3(a)'s `normsquared >= 0` relational returns `False` when the 3(a) relational (nonnegativity) returns `True`." + ] + }, + { + "cell_type": "markdown", + "id": "c475ccd2", + "metadata": {}, + "source": [ + "### 6.4 Testing within `m2_polar` \n", + "The next three In[ ] cells test `norm2` and `norm` with the multivectors `S4`, `N4`, and `B4` from `m2_polar`. \n", + "- Since `m2_polar` has a non-Euclidean metric, the value of `S4.norm(hint)` should be expected to and does depend on the `hint` given.\n", + "- Since `N4` is a location-independent numeric multivector, the value of `N43.norm(hint)` should not and does not depend on the `hint` given. Neither does it depend on location.\n", + "- Notice the results for `N4` should and do agree with those for `N3` above, which is as desired since `N3` and `N4` represent the same position-independent numeric multivector in $\\mathbb{G}(\\mathbb{M}^{1,1})$." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "cf7afd38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{S}= S + S^{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho } + S^{\\phi } \\boldsymbol{\\mathbf{b}}_{\\phi } + S^{\\rho \\phi } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{S}\\Vert^2 = \\left|{S^{2} - {\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} + {\\left ( S^{\\rho } \\right )}^{2} - {\\left ( S^{\\rho \\phi } \\right )}^{2} \\rho ^{2}}\\right| $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{S}\\vert = \\sqrt{\\left|{S^{2} - {\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} + {\\left ( S^{\\rho } \\right )}^{2} - {\\left ( S^{\\rho \\phi } \\right )}^{2} \\rho ^{2}}\\right|} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{S^{2} - {\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} + {\\left ( S^{\\rho } \\right )}^{2} - {\\left ( S^{\\rho \\phi } \\right )}^{2} \\rho ^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{S}\\vert = \\sqrt{- S^{2} + {\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} - {\\left ( S^{\\rho } \\right )}^{2} + {\\left ( S^{\\rho \\phi } \\right )}^{2} \\rho ^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_0 = S \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_0\\Vert^2 = S^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_0\\vert = S \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_1 = S^{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho } + S^{\\phi } \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_1\\Vert^2 = \\left|{{\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} - {\\left ( S^{\\rho } \\right )}^{2}}\\right| $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{\\left|{{\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} - {\\left ( S^{\\rho } \\right )}^{2}}\\right|} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{- {\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} + {\\left ( S^{\\rho } \\right )}^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_1\\vert = \\sqrt{{\\left ( S^{\\phi } \\right )}^{2} \\rho ^{2} - {\\left ( S^{\\rho } \\right )}^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{S}\\right>_2 = S^{\\rho \\phi } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{S}\\right>_2\\Vert^2 = {\\left ( S^{\\rho \\phi } \\right )}^{2} \\rho ^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{\\rho \\phi } \\rho \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{\\rho \\phi } \\rho \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{S}\\right>_2\\vert = S^{\\rho \\phi } \\rho \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(S4)" + ] + }, + { + "cell_type": "markdown", + "id": "a7b3b632", + "metadata": {}, + "source": [ + "*Remark:* SymPy was able to take a factor of $\\rho^2$ out from under the radical as $\\rho$ rather than $\\vert \\rho \\vert$ because `rho` was instantiated with condition `positive=True`. SymPy does not know whether basis blade coefficients $S$ and $S^{\\rho\\phi}$ are nonnegative, so it takes their squares out from under the radical as $\\vert S \\vert$ and $\\vert S^{\\rho\\phi} \\vert$." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9374e530", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{N}= - 2 \\sqrt{7} + \\left ( - e^{\\phi } + 4 e^{- \\phi }\\right ) \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{e^{\\phi } + 4 e^{- \\phi }}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } - \\frac{\\sqrt{37}}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{N}\\Vert^2 = 25 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{N}\\vert = 5 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_0 = - 2 \\sqrt{7} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_0\\Vert^2 = 28 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_0\\vert = 2 \\sqrt{7} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_1 = \\left ( - e^{\\phi } + 4 e^{- \\phi }\\right ) \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{e^{\\phi } + 4 e^{- \\phi }}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_1\\Vert^2 = 16 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_1\\vert = 4 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{N}\\right>_2 = - \\frac{\\sqrt{37}}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{N}\\right>_2\\Vert^2 = 37 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{N}\\right>_2\\vert = \\sqrt{37} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(N4)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "43bb53cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B}= \\rho ^{2} -16 \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{16}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } - \\sqrt{\\phi ^{2} + \\rho ^{2}} \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in\\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\mathbf{B}\\Vert^2 = \\phi ^{2} \\rho ^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\mathbf{B}\\vert = \\phi \\rho \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{B}\\vert = \\phi \\rho \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\mathbf{B}\\vert = \\phi \\rho \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{B}\\right>_0 = \\rho ^{2} \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{B}\\right>_0\\Vert^2 = \\rho ^{4} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{B}\\right>_0\\vert = \\rho ^{2} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_0\\vert = \\rho ^{2} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_0\\vert = \\rho ^{2} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{B}\\right>_1 = -16 \\boldsymbol{\\mathbf{b}}_{\\rho } + \\frac{16}{\\rho } \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{B}\\right>_1\\Vert^2 = 0 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{B}\\right>_1\\vert = 0 \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_1\\vert = 0 \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_1\\vert = 0 \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\left<\\mathbf{B}\\right>_2 = - \\sqrt{\\phi ^{2} + \\rho ^{2}} \\boldsymbol{\\mathbf{b}}_{\\rho }\\wedge \\boldsymbol{\\mathbf{b}}_{\\phi } \\in \\mathbb{G}(\\mathbb{M}^{1,1})$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\Vert\\left<\\mathbf{B}\\right>_2\\Vert^2 = - \\rho ^{2} \\left(- \\phi ^{2} - \\rho ^{2}\\right) $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\implies \\vert\\left<\\mathbf{B}\\right>_2\\vert = \\rho \\sqrt{\\phi ^{2} + \\rho ^{2}} \\quad \\text{ when hint is '0'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_2\\vert = \\rho \\sqrt{\\phi ^{2} + \\rho ^{2}} \\quad \\text{ when hint is '+'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\qquad \\qquad\\; \\vert\\left<\\mathbf{B}\\right>_2\\vert = \\rho \\sqrt{\\phi ^{2} + \\rho ^{2}} \\quad \\text{ when hint is '-'}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{B4.norm2() >= 0}: \\quad \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(B4.norm2() >= 0) == 0}: \\quad \\text{True} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{B4.norm2() <= 0}: \\quad \\phi ^{2} \\rho ^{2} \\leq 0 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(B4.norm2() <= 0) == 0}: \\quad \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{B4.norm2() > 0}: \\quad \\phi ^{2} \\rho ^{2} > 0 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{(B4.norm2() > 0) == 0}: \\quad \\text{False} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_with(B4)\n", + "# Is `normsquared` nonnegative? Show values of relational and \n", + "# conditional in Case 3(a) of `norm`'s code:\n", + "gprint(r'\\text{B4.norm2() >= 0}: \\quad', B4.norm2() >= 0)\n", + "gprint(r'\\text{(B4.norm2() >= 0) == 0}: \\quad',\n", + " (B4.norm2() >= 0) == True)\n", + "# Is `normsquared` nonpositive? Show values of relational and \n", + "# conditional in Case 3(b):\n", + "gprint(r'\\text{B4.norm2() <= 0}: \\quad', B4.norm2() <= 0)\n", + "gprint(r'\\text{(B4.norm2() <= 0) == 0}: \\quad',\n", + " (B4.norm2() <= 0) == True)\n", + "# Is `normsquared` positive? Show values of relational and \n", + "# conditional complementary to Case 3(b):\n", + "gprint(r'\\text{B4.norm2() > 0}: \\quad', B4.norm2() > 0)\n", + "gprint(r'\\text{(B4.norm2() > 0) == 0}: \\quad',\n", + " (B4.norm2() > 0) == True)" + ] + }, + { + "cell_type": "markdown", + "id": "f18c50b4", + "metadata": {}, + "source": [ + "So as to provide a test of Case 3(b) in the execution of `norm`, the multivector `B4` from `m2_polar` was designed to have a nonpositive `normsquared`. (The various cases are described in the notebook **Code for undualization, grade involution, Clifford conjugation, scalar product, normsquared, and norm**.) The relational `normsquared <= 0` within Case 3(b)'s conditional evaluates to `True`; hence the conditional itself, `(normsquared <= 0) == True`, also evaluates to `True`. The consequent of the `if` statement then executes, returning the `hint`-independent expression `\\sqrt(-normsquared)`.\n", + "\n", + "As an experiment as to how SymPy would handle other relationals, the above cell also showed how SymPy would evaluate the nonnegativity relational `normsquared >= 0` of Case 3(a)'s conditional. SymPy wasn't able to assign a `True` or `False` value to `normsquared >= 0`, possibly because some of the possible values of `normsquared` are negative.\n", + "\n", + "Not unexpectedly, the complementary relational `normsquared > 0` (positivity) to Case 3(b)'s `normsquared <= 0` relational returns `False` when the 3(b) relational (nonnegativity) returns `True`." + ] + }, + { + "cell_type": "markdown", + "id": "24afcbaa", + "metadata": {}, + "source": [ + "### 6.5. Conclusions from testing the recoded old operations\n", + "\n", + "The output from each of the executable In[ ] cells of subsections 6.1, 6.2, 6.3, and 6.4 was precisely as was desired and expected. I am confident of the implementation of `norm2`. But while the tests of `norm` gave correct results, I still suspect weaknesses in that method, weaknesses that were explicated at the end of Section 6 of the notebook **Code for undualization, grade involution, Clifford conjugation, scalar product, normsquared, and norm**. Further testing, with more complex geometric algebras and multivectors therefrom, is needed." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/primer/cm3.ipynb b/examples/primer/cm3.ipynb new file mode 100644 index 00000000..cbd79aac --- /dev/null +++ b/examples/primer/cm3.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

*Introduction*

\n", + "\n", + "This file enables a user to construct and manipulate geometric objects in $\\mathbb{R}^3$. The constructions and manipulations are performed using a conformal model of $\\mathbb{R}^3$. A user need not know much about the conformal model, as all constructions and manipulations are via the functions provided here. \n", + "\n", + "My intent is that the functions are self documenting through their code and comments. \n", + "\n", + "Vectors passed to the functions must be in conformal representation. \n", + "Exceptions: pt, which converts a 3D point to a conformal point; a 3D normal vector $\\mathbf{n}$; and a 3D parallel bivector $\\mathbf{B}$.\n", + "\n", + "Objects returned by the functions are in conformal representation. Exception: tp, which returns a 3D point.\n", + "\n", + "To start, pull down the \"Run\" menu item and choose \"Run All Cells\".\n", + "\n", + "Comments and proposed changes or additions are welcome." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Conformal Model, Amsterdam convention. Dorst et al. p. 361\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# 3D confiormakl model\n", + "\n", + "cm3coords = (o,x,y,z,infty) = symbols('o 1 2 3 infty', real=True)\n", + "cm3g = '0 0 0 0 -1, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0, -1 0 0 0 0'\n", + "cm3 = Ga('o \\mathbf{e}_1 \\mathbf{e}_2 \\mathbf{e}_3 \\infty', g = cm3g, coords = cm3coords)\n", + "(eo, e1, e2, e3, eoo) = cm3.mv()\n", + "ep = eo - eoo/2 # ep^2 = +1 Geometric Algebra for Computer Science 408\n", + "em = eo + eoo/2 # em^2 = -1\n", + "E = eo^eoo\n", + "Ga.dual_mode('Iinv+')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def pt(arg): # R^3 vector --> conformal point. \n", + " if isinstance(arg,str): # Return general 3D point\n", + " v = cm3.mv(arg, 'vector') # General conformal vector \n", + " v = v + (v < eoo)*eo + (v < eo)*eoo # 3D part \n", + " v = eo + v + (v R^3 vector\n", + " if isinstance(arg,str): # Return general 3D vector\n", + " v = cm3.mv(arg, 'vector')\n", + " else: # Return 3D vector part of arg\n", + " v = arg\n", + " v = v + (v < eoo)*eo + (v < eo)*eoo\n", + " return(v) " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def normalize(v): \n", + " if (v < eoo) == 0: # Normalize 3D vector\n", + " return(v/sqrt((v* Create direct representations of geometric objects *" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def round(*args): # args are conformal points\n", + " ans = args[0]\n", + " for i in range(1,len(args)):\n", + " ans = ans ^ args[i]\n", + " return(ans)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def flat(*args): # args are conformal points\n", + " return(round(*args) ^ eoo)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def line(p,q): # If q is 3D vector, line thru p parallel to q returned\n", + " return(flat(p,q))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def plane(p,q,r):\n", + " return(flat(p,q,r))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def circle(p,q,r):\n", + " return(round(p,q,r))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def sphere(p,q,r,s):\n", + " return(round(p,q,r,s))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

* Create dual representations of geometric objects *

" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def dualLine(p, B): # Thru point p, orthogonal to 3D bivector B\n", + " return(p < (B*eoo)) # A vector" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def dualPlane(p,n): # n: GA^3 normal vector \n", + " m = normalize(n)\n", + " if isinstance(p,(int, long, float)):\n", + " p = scalar(p) # Python scalar -> GAlgebra scalar\n", + " if (p!=0) and ((p GAlgebra scalar\n", + " if (rho!=0) and ((rho* Geometric operations *" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def translate(object,a3): # a3: 3D vector\n", + " return(1 - a3*eoo/2)*object*(1 + a3*eoo/2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def rotate(object,itheta):\n", + " return(exp(-itheta/2)*object*exp(itheta/2))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def invert(p, norm=False): # GACS 513\n", + " ans = -(eo - eoo/2)*p*(eo - eoo/2) \n", + " if norm:\n", + " ans = normalize(ans)\n", + " return(ans)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Reflect point p in hyperplane with normal 3D vector n.\n", + "def reflect(p,n):\n", + " return(-n*p*(n/norm2(n))) " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Can be considerably simplified: A Covariant Approach ..., 16 \n", + "def dilate(p, alpha, norm = False): # Dilate by alpha (> 0)\n", + " ans = exp(E*ln(alpha)/2)*p*exp(-E*ln(alpha)/2)\n", + " if norm:\n", + " ans = normalize(ans)\n", + " return(ans)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

* Play *

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/g2.ipynb b/examples/primer/g2.ipynb new file mode 100644 index 00000000..29ded884 --- /dev/null +++ b/examples/primer/g2.ipynb @@ -0,0 +1,108 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# G2: Standard 2D Model\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# g2: The geometric algebra G^2.\n", + "g2coords = (x,y) = symbols('x y', real=True)\n", + "g2 = Ga('e', g=[1,1,1], coords=g2coords)\n", + "(ex, ey) = g2.mv()\n", + "\n", + "grad = g2.grad\n", + "from galgebra.dop import *\n", + "pdx = Pdop(x)\n", + "pdy = Pdop(y)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/g3.ipynb b/examples/primer/g3.ipynb new file mode 100644 index 00000000..bc9923e2 --- /dev/null +++ b/examples/primer/g3.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# G3: Standard 3D Model\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# g3: The geometric algebra G^3.\n", + "g3coords = (x,y,z) = symbols('x y z', real=True)\n", + "g3 = Ga('e', g=[1,1,1], coords=g3coords)\n", + "(ex, ey, ez) = g3.mv()\n", + "\n", + "grad = g3.grad\n", + "from galgebra.dop import *\n", + "pdx = Pdop(x)\n", + "pdy = Pdop(y)\n", + "pdz = Pdop(z)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/g4.ipynb b/examples/primer/g4.ipynb new file mode 100644 index 00000000..0c35e51c --- /dev/null +++ b/examples/primer/g4.ipynb @@ -0,0 +1,103 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# G4: Standard 4D Model\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# g4: R^4 using cartesian coordiantes\n", + "g4coords = (x,y,z,w) = symbols('x y z w', real=True)\n", + "g4 = Ga('e', g=[1,1,1,1], coords=g4coords)\n", + "(ex, ey, ez, ew) = g4.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/gprint.ipynb b/examples/primer/gprint.ipynb new file mode 100644 index 00000000..63ff1b24 --- /dev/null +++ b/examples/primer/gprint.ipynb @@ -0,0 +1,347 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Demo of `gprint`\n", + "\n", + "Author: Alan Bromborsky\n", + "\n", + "Last updated: 2020-09-22\n", + "\n", + "Original name: `GAlgebraOutput.ipynb` in http://www.faculty.luther.edu/~macdonal/GAfiles.zip" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up standard G^3 geometric algebra\n", + "g3coords = (x,y,z) = symbols('x y z', real=True) # Without real=True, symbols are complex\n", + "g3 = Ga('\\mathbf{e}', g=[1,1,1], coords=g3coords)\n", + "(ex, ey, ez) = g3.mv() # Program names of basis vectors.\n", + "(exr, eyr, ezr) = g3.mvr() # Program names of reciprocal basis vectors." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} word word\\ word \\cdot ex" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\text{word word\\ word \\cdot ex" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'word word\\ word \\cdot ex" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B} = \\begin{aligned}[t] & B^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} \\\\ & + B^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\\\ & + B^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B} = B^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + B^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + B^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "B = g3.mv('B', 'bivector')\n", + "Fmt(1) # Set Fmt globally\n", + "gprint(r'\\mathbf{B} =', B) # B will be bold.\n", + "gprint(r'\\mathbf{B} =', B.Fmt(3)) # Fmt(3) here only.\n", + "gprint(r'\\mathbf{B} =', B) # Global Fmt remembered." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B}^2 = - {\\left ( B^{xy} \\right )}^{2} - {\\left ( B^{xz} \\right )}^{2} - {\\left ( B^{yz} \\right )}^{2} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'\\mathbf{B}^2 =', B*B)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\langle \\mathbf{M} \\rangle_2 = M^{xy} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{y} + M^{xz} \\boldsymbol{\\mathbf{e}}_{x}\\wedge \\boldsymbol{\\mathbf{e}}_{z} + M^{yz} \\boldsymbol{\\mathbf{e}}_{y}\\wedge \\boldsymbol{\\mathbf{e}}_{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "M = g3.mv('M', 'mv')\n", + "gprint(r'\\langle \\mathbf{M} \\rangle_2 =', M.grade(2)) \n", + " # grade(2) could be replaced by, e.g., odd(), or omitted altogether. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\alpha_1\\mathbf{X}/\\gamma_r^3$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'\\alpha_1\\mathbf{X}/\\gamma_r^3')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\theta , \\theta $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Program name and output are different\n", + "theta = symbols('theta', real = True) \n", + "th = symbols('theta', real = True) # This will save typing if theta is used a lot.\n", + "gprint(theta, ', ', th)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "grad = g3.grad" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{\\mathbf{e}_x} \\frac{\\partial}{\\partial x} + \\mathbf{\\mathbf{e}_y} \\frac{\\partial}{\\partial y} + \\mathbf{\\mathbf{e}_z} \\frac{\\partial}{\\partial z}$" + ], + "text/plain": [ + "\\mathbf{e}_x*D{x} + \\mathbf{e}_y*D{y} + \\mathbf{e}_z*D{z}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grad" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle {\\nabla}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'{\\nabla}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/h3.ipynb b/examples/primer/h3.ipynb new file mode 100644 index 00000000..ccf942db --- /dev/null +++ b/examples/primer/h3.ipynb @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# h3: 3D Homogeneous Coordinates\n", + "\n", + "import sympy \n", + "from sympy import * # Make SymPy available to this program\n", + "sympy.init_printing() \n", + "\n", + "from galgebra.printer import Fmt, GaPrinter # Need all these parameters\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()\n", + "\n", + "from galgebra.ga import * # Make GAlgebra available to this program.\n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "h3coords = (x,y,z,e) = symbols('x y z e', real=True)\n", + "# h3 = Ga('e_x e_y e_z e_e', g=[1,1,1,1], coords=h3coords)\n", + "h3 = Ga('\\mathbf{e}', g=[1,1,1,1], coords=h3coords)\n", + "(ex,ey,ez,ee) = h3.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/primer.ipynb b/examples/primer/primer.ipynb new file mode 100644 index 00000000..cdc466b6 --- /dev/null +++ b/examples/primer/primer.ipynb @@ -0,0 +1,534 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# G3: Standard 3D Model\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "# from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# g3: The geometric algebra G^3.\n", + "g3coords = (x,y,z) = symbols('x y z', real=True)\n", + "g3 = Ga('e', g=[1,1,1], coords=g3coords)\n", + "(ex, ey, ez) = g3.mv()\n", + "\n", + "grad = g3.grad\n", + "# from galgebra.dop import *\n", + "# pdx = Pdop(x)\n", + "# pdy = Pdop(y)\n", + "# pdz = Pdop(z)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\boldsymbol{e}_{x} \\cdot \\boldsymbol{e}_{y} = 0 $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(ex,r'\\cdot',ey,'=',ex < ey)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B}^{\\dagger}= \\begin{aligned}[t] & - B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & - B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & - B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\text{I can do three lines output from one cell}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\mathbf{B} = \\begin{aligned}[t] & B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & + B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & + B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\mathbf{B}^2 = - {B^{xy} }^{2} - {B^{xz} }^{2} - {B^{yz} }^{2} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\mathbf{B}^{\\dagger}= \\begin{aligned}[t] & - B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & - B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & - B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/latex": [ + "$\\displaystyle \\begin{equation*} \\mathbf{\\nabla B} = \\begin{aligned}[t] & \\left ( - \\partial_{y} B^{xy} - \\partial_{z} B^{xz} \\right ) \\boldsymbol{e}_{x} \\\\ & + \\left ( \\partial_{x} B^{xy} - \\partial_{z} B^{yz} \\right ) \\boldsymbol{e}_{y} \\\\ & + \\left ( \\partial_{x} B^{xz} + \\partial_{y} B^{yz} \\right ) \\boldsymbol{e}_{z} \\\\ & + \\left ( \\partial_{z} B^{xy} - \\partial_{y} B^{xz} + \\partial_{x} B^{yz} \\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} \\end{equation*}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Fmt(3)\n", + "B = g3.mv('B', 'bivector',f=True)\n", + "gprint(r'\\mathbf{B}^{\\dagger}=',B.rev())\n", + "gprint(r'\\text{I can do three lines output from one cell}')\n", + "gprint(r'\\mathbf{B} =',B,r'\\\\ \\mathbf{B}^2 =',B*B,r'\\\\ \\mathbf{B}^{\\dagger}=',B.rev(),r'\\\\ \\mathbf{\\nabla B} =',grad*B)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{\\partial^{3}}{\\partial x^{2}\\partial y} \\bs{B}= \\begin{aligned}[t] & \\frac{\\partial^{3}}{\\partial^{2} x\\partial y} B^{xy} {\\left (x,y,z \\right )} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & + \\frac{\\partial^{3}}{\\partial^{2} x\\partial y} B^{xz} {\\left (x,y,z \\right )} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & + \\frac{\\partial^{3}}{\\partial^{2} x\\partial y} B^{yz} {\\left (x,y,z \\right )} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from galgebra.dop import *\n", + "gFormat(Fmode=False, Dmode=False)\n", + "pdx2y = Pdop({x:2,y:1})\n", + "gprint(pdx2y,r'\\bs{B}=',pdx2y*B)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{\\partial^{3}}{\\partial x^{2}\\partial y} \\bs{B}= \\begin{aligned}[t] & \\partial^{2}_{x}\\partial_{y} B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & + \\partial^{2}_{x}\\partial_{y} B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & + \\partial^{2}_{x}\\partial_{y} B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pdx2y = Pdop({x:2,y:1})\n", + "gFormat(Fmode=True, Dmode=True)\n", + "gprint(pdx2y,r'\\bs{B}=',pdx2y*B)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{B} = B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} + B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} + B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Fmt(1)\n", + "gprint(r'\\mathbf{B} =',B)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\grade{B}{2} = \\begin{aligned}[t] & B^{xy} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} \\\\ & + B^{xz} \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{z} \\\\ & + B^{yz} \\boldsymbol{e}_{y}\\wedge \\boldsymbol{e}_{z} \\end{aligned} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Fmt(3)\n", + "gprint(r'\\grade{B}{2} =',B.grade(2))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle type(\\bs{B}) =$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'type(\\bs{B}) =',str(type(B)))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\grad = \\boldsymbol{e}_{x} \\frac{\\partial}{\\partial x} + \\boldsymbol{e}_{y} \\frac{\\partial}{\\partial y} + \\boldsymbol{e}_{z} \\frac{\\partial}{\\partial z} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint('\\grad = ', grad)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle * \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(r'*', ex*ey)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle V = V^{x} \\mathbf{e}_{x} + V^{y} \\mathbf{e}_{y} + V^{z} \\mathbf{e}_{z}$" + ], + "text/plain": [ + "V__x*e_x + V__y*e_y + V__z*e_z" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Fmt(1)\n", + "V = g3.mv('V', 'vector')\n", + "V" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# G2: Standard 3D Model\n", + "\n", + "g2coords = (x,y) = symbols('x y', real=True)\n", + "g2 = Ga('e', g=[1,1], coords=g2coords)\n", + "(ex, ey) = g2.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left ( {L^{x}}_{x} {L^{y}}_{y} - {L^{x}}_{y} {L^{y}}_{x}\\right ) \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "L = g2.lt('L')\n", + "gprint(L(ex^ey))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left\\{ \\begin{aligned} \\boldsymbol{e}_{x} &\\mapsto 2 \\boldsymbol{e}_{y} \\\\ \\boldsymbol{e}_{y} &\\mapsto \\boldsymbol{e}_{x} + \\boldsymbol{e}_{y} \\end{aligned} \\right\\} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "L = g2.lt([ [0,2], [1,1] ])\n", + "gprint(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle -2 \\boldsymbol{e}_{x}\\wedge \\boldsymbol{e}_{y} $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(L(ex^ey))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}0 & 1\\\\2 & 1\\end{matrix}\\right]$" + ], + "text/plain": [ + "⎑0 1⎀\n", + "⎒ βŽ₯\n", + "⎣2 1⎦" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "L.matrix()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}0 & 2\\\\1 & 1\\end{matrix}\\right]$" + ], + "text/plain": [ + "⎑0 2⎀\n", + "⎒ βŽ₯\n", + "⎣1 1⎦" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "L.adj().matrix()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/sp2.ipynb b/examples/primer/sp2.ipynb new file mode 100644 index 00000000..15ef6677 --- /dev/null +++ b/examples/primer/sp2.ipynb @@ -0,0 +1,91 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# sp2: Geometric algebra for unit sphere in R^3 using spherical coordinates.\n", + "# Mathematics coordinate order: (phi,theta)\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# sp2: Geometric algebra for unit sphere in R^3 using spherical coordinates.\n", + "# Mathematics coordinate order: (phi,theta)\n", + "\n", + "# Set up sp2\n", + "basis = 'e_phi e_theta'\n", + "coords = (phi,th) = symbols('phi theta', real=True)\n", + "g = [sin(phi)*cos(th), sin(phi)*sin(th), cos(phi)]\n", + "sp2 = Ga('\\mathbf{e}', g=None , coords=coords, \\\n", + " X=[sin(phi)*cos(th), sin(phi)*sin(th), cos(phi)], norm=True)\n", + "\n", + "(ephi, eth) = sp2.mv()\n", + "(rphi, rth) = sp2.mvr()\n", + "\n", + "# Derivatives\n", + "grad = sp2.grad\n", + "# from galgebra.dop import *\n", + "# pdphi = Pdop(phi)\n", + "# pdth = Pdop(th)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "grad" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/sp2g3.ipynb b/examples/primer/sp2g3.ipynb new file mode 100644 index 00000000..d89f2f81 --- /dev/null +++ b/examples/primer/sp2g3.ipynb @@ -0,0 +1,145 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Unit sphere R^3 as a submanifold of g3 in cartesian coordinates\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Unit sphere R^3 as a submanifold of g3 in cartesian coordinates\n", + "\n", + "# g3: Base manifold.\n", + "g3coords = (x,y,z) = symbols('x y z', real=True) \n", + "g3 = Ga('\\mathbf{e}', g=[1,1,1], coords=g3coords)\n", + "(ex, ey, ez) = g3.mv()\n", + "\n", + "# sp2: Submanifold\n", + "sp2coords = (phi,th) = symbols('phi theta', real=True)\n", + " # Parameterize unit sphere using the coordinates of g3:\n", + "sp2param = [sin(phi)*cos(th), sin(phi)*sin(th), cos(phi)] \n", + " # Map the g3 coordinates of the sphere to its sp2 coordinates:\n", + "sp2 = g3.sm(sp2param, sp2coords, norm=True) # \"sm\" is submanifold\n", + "\n", + "(ephi, eth) = sp2.mv()\n", + "(rphi, rth) = sp2.mvr()\n", + "\n", + "# Derivatives\n", + "grad = sp2.grad\n", + "from galgebra.dop import *\n", + "pdphi = Pdop(phi)\n", + "pdth = Pdop(th)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{\\phi} \\frac{\\partial}{\\partial \\phi} + \\mathbf{e}_{\\theta} \\frac{1}{\\sin{\\left(\\phi \\right)}} \\frac{\\partial}{\\partial \\theta}$" + ], + "text/plain": [ + "e_phi*D{phi} + e_theta*1/sin(phi)*D{theta}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grad = sp2.grad\n", + "grad" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/sp2sp3.ipynb b/examples/primer/sp2sp3.ipynb new file mode 100644 index 00000000..e2fece30 --- /dev/null +++ b/examples/primer/sp2sp3.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# A geometric algebra for the unit sphere in R^3 \n", + "# as a submanifold of R^3 with spherical coordintes.\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# A geometric algebra for the unit sphere in R^3 \n", + "# as a submanifold of R^3 with spherical coordintes.\n", + "\n", + "# sp3: Base manifold\n", + "sp3coords = (r, phi, theta) = symbols('r phi theta', real=True) \n", + "sp3 = Ga('e', g=None, coords=sp3coords, \\\n", + " X=[r*sin(phi)*cos(theta), r*sin(phi)*sin(theta), r*cos(phi)], norm=True)\n", + "(er, ephi, etheta) = sp3.mv()\n", + "\n", + "# sp2: Submanifold\n", + "sp2coords = (p,t) = symbols('phi theta', real=True) # they output as Greek phi and theta\n", + " # Parameterize the unit sphere using the spherical coordinates of sp3:\n", + "sp2param = [1, p, t] \n", + " # Map the sp3 coordinates of the sphere to its sp2 coordinates:\n", + "sp2 = sp3.sm(sp2param, sp2coords, norm=True)\n", + "\n", + "(ep, et) = sp2.mv()\n", + "(rp, rt) = sp2.mvr()\n", + "\n", + "# Derivatives\n", + "grad = sp2.grad\n", + "from galgebra.dop import *\n", + "pdph = Pdop(p)\n", + "pdth = Pdop(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\boldsymbol{e}_{\\phi } \\frac{\\partial}{\\partial \\phi } + \\boldsymbol{e}_{\\theta } \\frac{1}{\\sin{\\left (\\phi \\right )}} \\frac{\\partial}{\\partial \\theta } $" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gprint(grad) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/sp3.ipynb b/examples/primer/sp3.ipynb new file mode 100644 index 00000000..d5112704 --- /dev/null +++ b/examples/primer/sp3.ipynb @@ -0,0 +1,137 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# sp3: Spherical Coordinates in R^3\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# sp3: Geometric algebra for R^3 using spherical coordinates \n", + "# Mathematics convention: r, phi (colatitude), theta (longitude), in right handed order. \n", + "\n", + "sp3coords = (r, phi, theta) = symbols('r phi theta') \n", + "sp3 = Ga('e', g=None, coords=sp3coords, \\\n", + " X=[r*sin(phi)*cos(theta), r*sin(phi)*sin(theta),r*cos(phi)], norm=True)\n", + " # g = None. Instead, the spherical coordinate parameterization X is used.\n", + " # \"\\\" is Python's line continuation character\n", + "(er, ephi, etheta) = sp3.mv()\n", + "\n", + "grad = sp3.grad\n", + "from galgebra.dop import *\n", + "pdr = Pdop(r)\n", + "pdphi = Pdop(phi)\n", + "pdtheta = Pdop(theta)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\mathbf{e}_{r} \\frac{\\partial}{\\partial r} + \\mathbf{e}_{\\phi} \\frac{1}{r} \\frac{\\partial}{\\partial \\phi} + \\mathbf{e}_{\\theta} \\frac{1}{r \\sin{\\left(\\phi \\right)}} \\frac{\\partial}{\\partial \\theta}$" + ], + "text/plain": [ + "e_r*D{r} + e_phi*1/r*D{phi} + e_theta*1/(r*sin(phi))*D{theta}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp3.grad" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/primer/spacetime.ipynb b/examples/primer/spacetime.ipynb new file mode 100644 index 00000000..6cd9bcc2 --- /dev/null +++ b/examples/primer/spacetime.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\DeclareMathOperator{\\Tr}{Tr}$$\n", + "$$\\DeclareMathOperator{\\Adj}{Adj}$$\n", + "$$\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}}$$\n", + "$$\\newcommand{\\lp}{\\left (}$$\n", + "$$\\newcommand{\\rp}{\\right )}$$\n", + "$$\\newcommand{\\paren}[1]{\\lp {#1} \\rp}$$\n", + "$$\\newcommand{\\half}{\\frac{1}{2}}$$\n", + "$$\\newcommand{\\llt}{\\left <}$$\n", + "$$\\newcommand{\\rgt}{\\right >}$$\n", + "$$\\newcommand{\\abs}[1]{\\left |{#1}\\right | }$$\n", + "$$\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}}$$\n", + "$$\\newcommand{\\npdiff}[3]{\\bfrac{\\partial^{#3} {#1}}{\\partial {#2}^{#3}}}$$\n", + "$$\\newcommand{\\lbrc}{\\left \\{}$$\n", + "$$\\newcommand{\\rbrc}{\\right \\}}$$\n", + "$$\\newcommand{\\W}{\\wedge}$$\n", + "$$\\newcommand{\\prm}[1]{{#1}^{\\prime}}$$\n", + "$$\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}}$$\n", + "$$\\newcommand{\\R}{\\dagger}$$\n", + "$$\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$\n", + "$$\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}}$$\n", + "$$\\newcommand{\\f}[2]{{#1}\\lp {#2} \\rp}$$\n", + "$$\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}}$$\n", + "$$\\newcommand{\\bs}[1]{\\boldsymbol{#1}}$$\n", + "$$\\newcommand{\\grad}{\\bs{\\nabla}}$" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Spacetime algebra. [1, -1, -1, -1] signature\n", + "\n", + "# Make SymPy available to this program:\n", + "import sympy \n", + "from sympy import *\n", + "\n", + "# Make GAlgebra available to this program:\n", + "from galgebra.ga import * \n", + "from galgebra.mv import *\n", + "from galgebra.printer import Fmt, GaPrinter, Format\n", + " # Fmt: sets the way that a multivector's basis expansion is output.\n", + " # GaPrinter: makes GA output a little more readable.\n", + " # Format: turns on latex printer.\n", + "from galgebra.gprinter import gFormat, gprint\n", + "gFormat()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "txyz = (t, x, y, z) = symbols('t x y z', real=True)\n", + "stcoords = (t,x,y,z) = symbols('t x y z')\n", + "st = Ga('\\mathbf{e}', g=[1, -1, -1, -1], coords=stcoords)\n", + "(et, ex, ey, ez) = st.mv()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle X = X^{t} \\mathbf{\\mathbf{e}_t} + X^{x} \\mathbf{\\mathbf{e}_x} + X^{y} \\mathbf{\\mathbf{e}_y} + X^{z} \\mathbf{\\mathbf{e}_z}$" + ], + "text/plain": [ + "X__t*\\mathbf{e}_t + X__x*\\mathbf{e}_x + X__y*\\mathbf{e}_y + X__z*\\mathbf{e}_z" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st.mv('X', 'vector')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/galgebra/__init__.py b/galgebra/__init__.py index 833af113..405c5fae 100644 --- a/galgebra/__init__.py +++ b/galgebra/__init__.py @@ -20,6 +20,7 @@ dop atoms printer + gprinter utils .. note:: diff --git a/galgebra/_version.py b/galgebra/_version.py index 5aa7f5f3..a3aa75ae 100644 --- a/galgebra/_version.py +++ b/galgebra/_version.py @@ -5,4 +5,4 @@ # 1) we don't load dependencies by storing it in __init__.py # 2) we can import it in setup.py for the same reason # 3) we can import it into your module -__version__ = '0.5.2' +__version__ = '0.6.0-dev' diff --git a/galgebra/ga.py b/galgebra/ga.py index c88a0d35..feb8b40e 100644 --- a/galgebra/ga.py +++ b/galgebra/ga.py @@ -2049,7 +2049,7 @@ def pDiff(self, A: _mv.Mv, coord: Union[List, Symbol]) -> _mv.Mv: # Simple partial differentiation, once with respect to a single # variable, but including case of non-constant basis vectors - dA = self.mv(expand(diff(A.obj, coord))) + dA = self.mv(expand(diff(A if isinstance(A, Expr) else A.obj, coord))) if self.connect_flg and self.dslot == -1 and not A.is_scalar(): # Basis blades are function of coordinates B = self.remove_scalar_part(A) diff --git a/galgebra/gprinter.py b/galgebra/gprinter.py new file mode 100644 index 00000000..d26aff65 --- /dev/null +++ b/galgebra/gprinter.py @@ -0,0 +1,300 @@ +from .printer import GaLatexPrinter, isinteractive, Format_cnt, latex +import subprocess +import sys +import shutil +import inspect + +from sympy import init_printing + +try: + from IPython.display import display, Math +except ImportError: + pass + +SYS_CMD = {'linux2': {'rm': 'rm', 'evince': 'evince', 'null': ' > /dev/null', '&': '&'}, + 'linux': {'rm': 'rm', 'evince': 'evince', 'null': ' > /dev/null', '&': '&'}, + 'win32': {'rm': 'del', 'evince': 'start', 'null': ' > NUL', '&': ''}, + 'darwin': {'rm': 'rm', 'evince': 'open', 'null': ' > /dev/null', '&': '&'}} + + +class LaTeX: + # LaTeX data + line_sep = """ +************************************************************************ +""" + latex_flg = False + latex_str = '' + + latex_preamble = """ +\\pagestyle{empty} +\\usepackage[utf8]{inputenc} +\\usepackage{amsmath} +\\usepackage{amsfonts} +\\usepackage{amssymb} +\\usepackage{amsbsy} +\\usepackage{tensor} +\\usepackage{listings} +\\usepackage{color} +\\usepackage{xcolor} +\\usepackage{bm} +\\usepackage{breqn} +\\definecolor{gray}{rgb}{0.95,0.95,0.95} +\\setlength{\\parindent}{0pt} +\\DeclareMathOperator{\\Tr}{Tr} +\\DeclareMathOperator{\\Adj}{Adj} +\\newcommand{\\bfrac}[2]{\\displaystyle\\frac{#1}{#2}} +\\newcommand{\\lp}{\\left (} +\\newcommand{\\rp}{\\right )} +\\newcommand{\\paren}[1]{\\lp {#1} \\rp} +\\newcommand{\\half}{\\frac{1}{2}} +\\newcommand{\\llt}{\\left <} +\\newcommand{\\rgt}{\\right >} +\\newcommand{\\abs}[1]{\\left |{#1}\\right | } +\\newcommand{\\pdiff}[2]{\\bfrac{\\partial {#1}}{\\partial {#2}}} +\\newcommand{\\lbrc}{\\left \\{} +\\newcommand{\\rbrc}{\\right \\}} +\\newcommand{\\W}{\\wedge} +\\newcommand{\\prm}[1]{{#1}^{\\prime}} +\\newcommand{\\ddt}[1]{\\bfrac{d{#1}}{dt}} +\\newcommand{\\R}{\\dagger} +\\newcommand{\\deriv}[3]{\\bfrac{d^{#3}#1}{d{#2}^{#3}}} +\\newcommand{\\grade}[2]{\\left < {#1} \\right >_{#2}} +\\newcommand{\\f}[2]{{#1}\\lp{#2}\\rp} +\\newcommand{\\eval}[2]{\\left . {#1} \\right |_{#2}} +\\newcommand{\\Nabla}{\\boldsymbol{\\nabla}} +\\newcommand{\\eb}{\\boldsymbol{e}} +\\newcommand{\\bs}[1]{\\boldsymbol{#1}} +\\newcommand{\\grad}{\\bs{\\nabla}} +\\usepackage{float} +\\floatstyle{plain} % optionally change the style of the new float +\\newfloat{Code}{H}{myc} +\\lstloadlanguages{Python} +\\begin{document} + +""" + + ip_cmds = \ + [r'$$\DeclareMathOperator{\Tr}{Tr}$$', + r'$$\DeclareMathOperator{\Adj}{Adj}$$', + r'$$\newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}}$$', + r'$$\newcommand{\lp}{\left (}$$', + r'$$\newcommand{\rp}{\right )}$$', + r'$$\newcommand{\paren}[1]{\lp {#1} \rp}$$', + r'$$\newcommand{\half}{\frac{1}{2}}$$', + r'$$\newcommand{\llt}{\left <}$$', + r'$$\newcommand{\rgt}{\right >}$$', + r'$$\newcommand{\abs}[1]{\left |{#1}\right | }$$', + r'$$\newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}}$$', + r'$$\newcommand{\npdiff}[3]{\bfrac{\partial^{#3} {#1}}{\partial {#2}^{#3}}}$$', + r'$$\newcommand{\lbrc}{\left \{}$$', + r'$$\newcommand{\rbrc}{\right \}}$$', + r'$$\newcommand{\W}{\wedge}$$', + r'$$\newcommand{\prm}[1]{{#1}^{\prime}}$$', + r'$$\newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}}$$', + r'$$\newcommand{\R}{\dagger}$$', + r'$$\newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}}$$', + r'$$\newcommand{\grade}[2]{\left < {#1} \right >_{#2}}$$', + r'$$\newcommand{\f}[2]{{#1}\lp {#2} \rp}$$', + r'$$\newcommand{\eval}[2]{\left . {#1} \right |_{#2}}$$', + r'$$\newcommand{\bs}[1]{\boldsymbol{#1}}$$', + r'$$\newcommand{\grad}{\bs{\nabla}}$$'] + +# *********************************************************************** + + +def gFormat(Fmode: bool = True, Dmode: bool = True, inverse='full'): + r""" + Turns on latex printing with configurable options. + + This redirects printer output so that latex compiler can capture it. + + ``Format()`` is also required for printing from *ipython notebook* (note that ``xpdf()`` is not needed to print from *ipython notebook*). + + Parameters + ---------- + Fmode: + Value for the ``omit_function_args`` setting of + :class:`GaLatexPrinter`. + Dmode: + Value for the ``omit_partial_derivative_fraction`` setting of + :class:`GaLatexPrinter`. + """ + global Format_cnt + + GaLatexPrinter.set_global_settings( + omit_partial_derivative_fraction=Dmode, + omit_function_args=Fmode, + inv_trig_style=inverse, + ) + + if Format_cnt == 0: + Format_cnt += 1 + + LaTeX.latex_flg = True + + if isinteractive(): + init_printing(use_latex='mathjax') + from IPython.display import Math, display + cmds = '\n'.join(LaTeX.ip_cmds) + display(Math(cmds)) + + return + + +def gprint(*xargs): + """ + Print latex or text from python script or latex from Jupyter Notebook/Lab + + """ + x = [] + fstr = '' + new_eq_flg = False + i = 0 + for xi in xargs: + if isinstance(xi, str): + if r'\\' in xi and i > 0: + if isinteractive(): + xi_rep = xi.replace(r'\\', r'\end{equation*}@\begin{equation*} ') + else: + xi_rep = xi.replace(r'\\', r'\end{equation*}'+'\n'+r'\begin{equation*} ') + new_eq_flg = True + fstr += xi_rep + else: + fstr += xi + elif isinstance(xi, type): + if LaTeX.latex_flg: + fstr += r' \text{'+str(xi)+'} ' + else: + fstr += str(xi) + else: + if LaTeX.latex_flg: + x.append(latex(xi)) + if new_eq_flg: + new_eq_flg = False + fstr += r' %s ' + else: + x.append(str(xi)) + fstr += r' %s ' + + i += 1 + + if LaTeX.latex_flg: + if isinteractive(): + lstr = fstr % tuple(x) + if '@' in lstr: + lines = lstr.split('@') + lines[0] = r'\begin{equation*} '+lines[0] + lines[-1] += r'\end{equation*}' + for line in lines: + display(Math(line)) + else: + display(Math(lstr)) + else: + LaTeX.latex_str += r'\begin{equation*} ' + (fstr % tuple(x)) + r'\end{equation*} '+'\n' + else: + print(fstr % tuple(x)) + + return + + +def gxpdf(filename=None, paper=(14, 11), crop=False, png=False, prog=False, debug=False, pt='10pt', pdfprog='pdflatex', evince=True, rm=True, null=True, documentclass='book'): + + """ + Post processes LaTeX output (see comments below), adds preamble and + postscript, generates tex file, inputs file to latex, displays resulting + pdf file. + + Arg Value Result + pdfprog 'pdflatex' Use pdfprog to generate pdf output, only generate tex if pdfprog is None + crop True Use "pdfcrop" to crop output file (pdfcrop must be installed, linux only) + png True Use "convert" to produce png output (imagemagick must be installed, linux only) + + We assume that if gxpdf() is called then gFormat() has been called at the beginning of the program. + """ + + latex_str = paper_format(paper, pt, documentclass)+LaTeX.latex_preamble+LaTeX.latex_str+r'\end{document}' + # Clean up the latex string after printing + LaTeX.latex_str = '' + + if filename is None: + pyfilename = sys.argv[0] + rootfilename = pyfilename.replace('.py', '') + tex_filename = rootfilename + '.tex' + pdf_filename = rootfilename + '.pdf' + else: + tex_filename = filename + pdf_filename = tex_filename.replace('.tex', '.pdf') + rootfilename = tex_filename.replace('.tex', '') + + if debug: + print('latex file =', filename) + + with open(tex_filename, 'w') as latex_file: + latex_file.write(latex_str) + + if pdfprog is not None: + sys_cmd = SYS_CMD[sys.platform] + pdflatex = shutil.which(pdfprog) + + if debug: # Display latex excution output for debugging purposes + print('pdflatex path =', pdflatex) + # os.system(pdfprog + ' ' + filename[:-4]) + else: # Works for Linux don't know about Windows + if null: + subprocess.call([pdfprog, tex_filename, sys_cmd['null']]) + else: + subprocess.call([pdfprog, tex_filename]) + # os.system(pdfprog + ' ' + filename[:-4] + sys_cmd['null']) + + if evince: + subprocess.call([sys_cmd['evince'], pdf_filename]) + + # eval(input('!!!!Return to continue!!!!\n')) + + if rm: + if debug: + subprocess.call([sys_cmd['rm'], rootfilename+'.aux ', rootfilename+'.log']) + else: + subprocess.call([sys_cmd['rm'], rootfilename+'.aux ', rootfilename+'.log ', rootfilename+'.tex']) + if crop: + subprocess.call(['pdfcrop', pdf_filename]) + subprocess.call(['rm', pdf_filename]) + subprocess.call(['mv', rootfilename+'-crop.pdf', pdf_filename]) + if png: + subprocess.call(['Pdf2Png', rootfilename]) + return + + +def paper_format(paper, pt, documentclass='book'): # Set size of paper and font size + + if paper == 'letter': + paper_size = """ +\\documentclass[@10pt@,fleqn]{%s} +""" % documentclass + else: + paper_size = """ +\\documentclass[@10pt@,fleqn]{%s} +\\usepackage[vcentering]{geometry} +""" % documentclass + if paper == 'landscape': + paper = [11, 8.5] + paper_size += '\\geometry{papersize={' + str(paper[0]) + \ + 'in,' + str(paper[1]) + 'in},total={' + str(paper[0] - 1) + \ + 'in,' + str(paper[1] - 1) + 'in}}\n' + + paper_size = paper_size.replace('@10pt@', pt) + + return paper_size + + +def gPrint_Function(): + """ Print out the source of the current function """ + + tmp_str = inspect.getsource(inspect.currentframe().f_back) + if LaTeX.latex_flg: + LaTeX.latex_str += r'\begin{lstlisting}[language=Python,showspaces=false,showstringspaces=false,backgroundcolor=\color{gray},frame=single]%s\end{lstlisting}\text{Code Output:}' % tmp_str + else: + print('\n' + 80 * '*') + print(tmp_str) + print('Code output:\n') + return diff --git a/galgebra/lt.py b/galgebra/lt.py index 936b7933..857bf9fc 100644 --- a/galgebra/lt.py +++ b/galgebra/lt.py @@ -11,7 +11,7 @@ from typing import Mapping from sympy import ( - expand, symbols, Matrix, Transpose, zeros, Symbol, Function, S, Add, Expr + expand, symbols, Matrix, Transpose, zeros, Symbol, Function, S, Add, Expr, simplify ) from sympy.printing.latex import LatexPrinter as _LatexPrinter from sympy.printing.str import StrPrinter as _StrPrinter @@ -32,62 +32,93 @@ }) -def Symbolic_Matrix(root, coords=None, mode='g', f=False, sub=True): - if sub: - pos = '_' - else: - pos = '__' - if isinstance(coords, (list, tuple)): +# ## GSG code starts ### +def Symbolic_Matrix(kernel, coords=None, f=False, mode='g'): + """ + Returns a square real matrix the entries of which are symbolic + constants or symbolic functions of the coordinates. + - `kernel` is a one-letter string. It specifies the kernel letter of + indexed symbols or functions used to specify the matrix's entries + - `coords` is a list or tuple. Its entries are used to label the + components of a vector. + - `f`, a boolean, specifies that matrix entries are symbolic functions + of the coordinates or are symbolic constants, according to whether + `f` is True or False. + - `mode` is a one-letter string. When`mode` is 'g', 's', or 'a' the + matrix will be general, symmetric, or antisymmetric. + """ + + def general_matrix(kernel, coords=None, f=False): + """Returns a general square matrix. The row index of each entry + appears as a superscript, while the column index appears as a + subscript.""" n = len(coords) - n_range = range(n) - mat = zeros(n) - if mode == 'g': # General symbolic matrix - for row in n_range: - row_index = str(coords[row]) - for col in n_range: - col_index = str(coords[col]) - element = root + pos + row_index + col_index - if not f: - mat[row, col] = Symbol(element, real=True) - else: - mat[row, col] = Function(element)(*coords) - - elif mode == 's': # Symmetric symbolic matrix - for row in n_range: - row_index = str(coords[row]) - for col in n_range: - col_index = str(coords[col]) - if row <= col: - element = root + pos + row_index + col_index - else: - element = root + pos + col_index + row_index - if not f: - mat[row, col] = Symbol(element, real=True) - else: - mat[row, col] = Function(element)(*coords) - - elif mode == 'a': # Asymmetric symbolic matrix - for row in n_range: - row_index = str(coords[row]) - for col in n_range: - col_index = str(coords[col]) - if row <= col: - sign = S.One - element = root + pos + row_index + col_index - else: - sign = -S.One - element = root + pos + col_index + row_index - if row == col: - sign = S.Zero - if not f: - mat[row, col] = sign * Symbol(element, real=True) - else: - mat[row, col] = sign * Function(element)(*coords) - else: - raise ValueError('In Symbolic_Matrix mode = ' + str(mode)) - else: - raise ValueError('In Symbolic_Matrix coords = ' + str(coords)) - return mat + # Create matrix entries and store in appropriate locations in `G`: + G = zeros(n, n) + if f: # entries are symbolic functions + for i in range(n): + for j in range(n): + entry = '{' + kernel + '__' + str(coords[i]) + '}_' + str(coords[j]) + G[i, j] = Function(entry)(*coords) + else: # entries are symbolic constants + for i in range(n): + for j in range(n): + entry = '{' + kernel + '__' + str(coords[i]) + '}_' + str(coords[j]) + G[i, j] = Symbol(entry, real=True) + return G + + def symmetric_matrix(kernel, coords=None, f=False): + """Returns a symmetric matrix. Entries have a single index, which + appears as a subscript.""" + n = len(coords) + # Create and temporarily store matrix entries in `parameters` + parameters = [] + if f: # entries are symbolic functions + for i in range((n*(n+1)//2), 0, -1): + parameters.append(Function(kernel + '_' + str(i))(*coords)) + else: # entries are symbolic constants + for i in range((n*(n+1)//2), 0, -1): + parameters.append(Symbol(kernel + '_' + str(i), real=True)) + # Transfer entries to symmetric matrix `S`. + S = zeros(n, n) + for i in range(n): + for j in range(i, n): + S[i, j] = parameters.pop() + S[j, i] = S[i, j] + return S + + def antisymmetric_matrix(kernel, coords=None, f=False): + """Returns an antisymmetric matrix. Entries have a a single index, + which appears as a subscript.""" + n = len(coords) + # Create and temporarily store matrix entries in `parameters` + parameters = [] + if f: # entries are symbolic functions + for i in range((n*(n-1)//2), 0, -1): + parameters.append(Function(kernel + '_' + str(i))(*coords)) + else: # entries are symbolic constants + for i in range((n*(n-1)//2), 0, -1): # each parameter is a symbol + parameters.append(Symbol(kernel + '_' + str(i), real=True)) + # Transfer entries to antisymmetric matrix `A`. + A = zeros(n, n) + for i in range(n): + for j in range(i+1, n): + A[i, j] = parameters.pop() + A[j, i] = - A[i, j] + return A + + # Check legitimacy of parameter values: + if not isinstance(coords, (list, tuple)): + raise ValueError('coords = ' + str(coords) + ' in Symbolic_Matrix') + if mode not in ['g', 's', 'a']: + raise ValueError('mode = ' + str(mode) + ' in Symbolic_Matrix') + if mode == 'g': + return general_matrix(kernel, coords, f) + if mode == 's': + return symmetric_matrix(kernel, coords, f) + if mode == 'a': + return antisymmetric_matrix(kernel, coords, f) +# ## GSG code ends ### def Matrix_to_dictionary(mat_rep, basis): @@ -104,29 +135,33 @@ def Matrix_to_dictionary(mat_rep, basis): } +# ## GSG code starts ### def Dictionary_to_Matrix(dict_rep, ga): - """ Convert dictionary representation of linear transformation to matrix """ - lst_mat = [] # list representation of sympy matrix - for e_row in ga.basis: - lst_mat_row = len(ga.basis) * [S.Zero] - - element = dict_rep.get(e_row, S.Zero) - if isinstance(element, mv.Mv): - element = element.obj - for coef, base in metric.linear_expand_terms(element): - index = ga.basis.index(base) - lst_mat_row[index] = coef - - lst_mat.append(lst_mat_row) - # expand the transpose - return Transpose(Matrix(lst_mat)).doit() + """Returns the matrix representation of that linear transformation on + geometric algebra ga which has dictionary representation dict_rep.""" + # columns[j] is a list of the entries in the matrix's jth column. + # columns[j][i] is the (i,j)th entry in the matrix. + # Matrix[columns] instantiates the transpose of the desired matrix. + columns = [] + for b in ga.basis: # b is a basis symbol for ga. + column = ga.n * [S.Zero] # Initialize column for dict_rep value at b. + dict_value = dict_rep[b] # dict_rep's value at b + if isinstance(dict_value, mv.Mv): + dict_value = dict_value.obj + if dict_value is not S.Zero: + for coef, base in metric.linear_expand_terms(dict_value): + row_index = ga.basis.index(base) + column[row_index] = coef + columns.append(column) + return Transpose(Matrix(columns)).doit() +# ## GSG code ends ### class Lt(printer.GaPrintable): r""" A Linear Transformation - Except for the spinor representation the linear transformation + Except for the versor representation, the linear transformation is stored as a dictionary with basis vector keys and vector values ``self.lt_dict`` so that a is a vector :math:`a = a^{i}e_{i}` then @@ -134,11 +169,13 @@ class Lt(printer.GaPrintable): \mathtt{self(}a\mathtt{)} = a^{i} * \mathtt{self.lt\_dict[}e_{i}\mathtt{]}. - For the spinor representation the linear transformation is - stored as the even multivector ``self.R`` so that if a is a + For the versor representation, the linear transformation is + stored as a versor ``self.V`` so that if a is a vector:: - self(a) = self.R * a * self.R.rev(). + self(a) = self.V.g_invol() * a * self.V.inv() + + where ``self.V.g_invol()`` is the grade involute of ``self.V``. Attributes ---------- @@ -220,10 +257,18 @@ def __init__(self, *args, ga, f=False, mode='g'): Construct from the operation of matrix pre-multiplication. - .. class:: Lt(spinor: mv.Mv, /, *, ga) + # ## GSG code starts ### + .. class:: Lt(lt_list: list, /, *, ga) + :noindex: + + Construct from a list of lists, the j_th list of which contains + the coefficients of j_th image vector's basis expansion. + # ## GSG code ends ### + + .. class:: Lt(versor: mv.Mv, /, *, ga) :noindex: - Construct from a spinor / rotor, which need not square to one. + Construct from a not-necessarily-normalized versor. .. class:: Lt(func: Callable[[mv.Mv], mv.Mv], /, *, ga) :noindex: @@ -239,7 +284,7 @@ def __init__(self, *args, ga, f=False, mode='g'): Parameters ---------- ga : Ga - Geometric algebra which is the domain and codomain of this transform + Geometric algebra which is both domain and codomain of this transformation f : bool True if Lt if function of coordinates. Only supported in the string constructor @@ -247,22 +292,28 @@ def __init__(self, *args, ga, f=False, mode='g'): g:general, s:symmetric, a:antisymmetric transformation. Only supported in the string constructor. """ + mat_rep = args[0] self.Ga = ga - self.spinor = False - self.rho_sq = None - self.lt_dict = {} self.mat = None - - if isinstance(mat_rep, dict): # Dictionary input + self.versor = False + # self.V, self.Vrev, and self.Vqform are never actually used in the current + # implementation of orthogonal outermorphisms created by a versor input. + self.V = None + self.Vrev = None + self.Vqform = None + + if isinstance(mat_rep, dict): # Dictionary input for key in mat_rep: self.lt_dict[key] = mat_rep[key] - elif isinstance(mat_rep, list): # List of lists input + elif isinstance(mat_rep, list): # List input if not isinstance(mat_rep[0], list): + # At this point mat_rep[i] is the desired image vector for the + # i_th basis image vectors. for lt_i, base in zip(mat_rep, self.Ga.basis): - self.lt_dict[base] = lt_i + self.lt_dict[base] = sym(lt_i) else: # mat_rep = map(list, zip(*mat_rep)) # Transpose list of lists for row, base1 in zip(mat_rep, self.Ga.basis): @@ -271,29 +322,38 @@ def __init__(self, *args, ga, f=False, mode='g'): tmp += col * base2 self.lt_dict[base1] = tmp - elif isinstance(mat_rep, Matrix): # Matrix input - self.mat = mat_rep - mat_rep = self.mat * self.Ga.g_inv + # ## GSG code starts ### + elif isinstance(mat_rep, Matrix): # Matrix input self.lt_dict = Matrix_to_dictionary(mat_rep, self.Ga.basis) - - elif isinstance(mat_rep, mv.Mv): # Spinor input - self.spinor = True - self.R = mat_rep - self.Rrev = mat_rep.rev() - self.rho_sq = self.R * self.Rrev - if self.rho_sq.is_scalar(): - self.rho_sq = self.rho_sq.scalar() - if self.rho_sq == S.One: - self.rho_sq = None - else: - raise ValueError('In Spinor input for Lt, S*S.rev() not a scalar!\n') - - elif isinstance(mat_rep, str): # String input - Amat = Symbolic_Matrix(mat_rep, coords=self.Ga.coords, mode=mode, f=f) - self.__init__(Amat, ga=self.Ga) - - elif callable(mat_rep): # Linear multivector function input - # F is a multivector function to be tested for linearity + # ## GSG code ends ### + + # ## GSG code starts. ### + # This code segment uses versor `mat_rep` and a sandwich product only to + # create a linear vector-valued function of vector. That function is then + # used to create a dictionary-based outermorphism. Evaluation of the + # outermorphism on a multivector is by dictionary lookup, not by a + # sandwich product of the multivector with the versor. + elif isinstance(mat_rep, mv.Mv): # Versor input + if not mat_rep.is_versor: + raise ValueError(mat_rep, 'is not a versor in Versor input for Lt!\n') + V = mat_rep + Vg_invol = V.g_invol() + Vinv = V.inv() + outermorphism = ga.lt(lambda x: Vg_invol * x * Vinv) + self.lt_dict = simplify(outermorphism.lt_dict) + # ## GSG code ends ### + + # ## GSG code starts ### + elif isinstance(mat_rep, str): # (One-letter) string input + Amat = Symbolic_Matrix(mat_rep, coords=self.Ga.coords, f=f, mode=mode) + if mode == 'g': + self.__init__(Amat, ga=self.Ga) + elif mode in ['s', 'a']: + self.__init__(self.Ga.g_inv * Amat, ga=self.Ga) + # ## GSG code ends ### + + elif callable(mat_rep): # Linear multivector function input + # Function is tested for linearity before use. F = mat_rep a = mv.Mv('a', 'vector', ga=self.Ga) b = mv.Mv('b', 'vector', ga=self.Ga) @@ -311,10 +371,9 @@ def __init__(self, *args, ga, f=False, mode='g'): @_cached_property def mv_dict(self) -> Mapping[Expr, Expr]: # dict for linear transformation of multivector - if self.spinor: + if self.versor: # no lt_dict return None - return { blade: reduce( self.Ga.wedge, @@ -324,47 +383,58 @@ def mv_dict(self) -> Mapping[Expr, Expr]: for index, blade in self.Ga.indexes_to_blades_dict.items() } - def __call__(self, v, obj=False): + def __call__(self, M, obj=False): r""" - Returns the image of the multivector :math:`A` under the linear transformation :math:`L`. - - :math:`{{L}\lp {A} \rp }` is defined by the linearity of :math:`L`, the - vector values :math:`{{L}\lp {{{\eb}}_{i}} \rp }`, and the definition - :math:`{{L}\lp {{{\eb}}_{i_{1}}{\wedge}\dots{\wedge}{{\eb}}_{i_{r}}} \rp } = {{L}\lp {{{\eb}}_{i_{1}}} \rp }{\wedge}\dots{\wedge}{{L}\lp {{{\eb}}_{i_{r}}} \rp }`. + Returns the image of multivector :math:`M` under the linear transformation + :math:`L`. :math:`{{L}\lp{M}\rp}` is defined by + the linearity of :math:`L`, + the vector values :math:`{{L}\lp{{{\eb}}_{j}}\rp }`, and the definition + :math:`{{L}\lp{{{\eb}}_{j_{1}}{\wedge}\dots{\wedge}{{\eb}}_{j_{r}}}\rp}={{L}\lp{{{\eb}}_{j_{1}}}\rp}{\wedge}\dots{\wedge}{{L}\lp{{{\eb}}_{j_{r}}}\rp}`. """ - if isinstance(v, mv.Mv) and self.Ga != v.Ga: + if isinstance(M, mv.Mv) and self.Ga != M.Ga: raise ValueError('In Lt call Lt and argument refer to different vector spaces') - if self.spinor: - if not isinstance(v, mv.Mv): - v = mv.Mv(v, ga=self.Ga) - if self.rho_sq is None: - R_v_Rrev = self.R * v * self.Rrev + # ## GSG code starts ### + # Given the current way an outermorphism is created from a versor input, + # self.versor will always be false; hence the following code fragment will + # never execute. + if self.versor: + # Sandwich M or M's grade involute depending on whether versor self.V + # is even or odd. + if self.V == self.V.odd(): + V_M_Vrev = self.V * M.g_invol() * self.Vrev + elif self.V == self.V.even(): + V_M_Vrev = self.V * M * self.Vrev else: - R_v_Rrev = self.rho_sq * self.R * v * self.Rrev + raise ValueError('self.V is not a versor in __call__') + # Divide by normalization factor self.Vqform to convert sandwiching + # between self.V and its reverse to sandwiching between self.V and + # its inverse. + V_M_Vinv = 1/(self.Vqform) * V_M_Vrev if obj: - return R_v_Rrev.obj + return V_M_Vinv.obj else: - return R_v_Rrev + return V_M_Vinv + # ## GSG code ends ### - if isinstance(v, mv.Mv): - if v.is_vector(): - lt_v = v.obj.xreplace(self.lt_dict) + if isinstance(M, mv.Mv): + if M.is_vector(): + lt_M = M.obj.xreplace(self.lt_dict) if obj: - return lt_v + return lt_M else: - return mv.Mv(lt_v, ga=self.Ga) + return mv.Mv(lt_M, ga=self.Ga) else: - mv_obj = v.obj + mv_obj = M.obj else: - mv_obj = mv.Mv(v, ga=self.Ga).obj + mv_obj = mv.Mv(M, ga=self.Ga).obj - lt_v = mv_obj.xreplace(self.mv_dict) + lt_M = mv_obj.xreplace(self.mv_dict) if obj: - return lt_v + return lt_M else: - return mv.Mv(lt_v, ga=self.Ga) + return mv.Mv(lt_M, ga=self.Ga) def __add__(self, LT): @@ -420,15 +490,16 @@ def __rmul__(self, LT): else: raise TypeError('Cannot have LT as left argument in Lt __rmul__\n') - def det(self) -> Expr: # det(L) defined by L(I) = det(L)I + # ## GSG code starts ### + def det(self) -> Expr: # det(L) defined by L(E) = det(L)E r""" - Returns the determinant (a scalar) of the linear transformation, - :math:`L`, defined by :math:`{{\det}\lp {L} \rp }I = {{L}\lp {I} \rp }`. + - Returns the determinant of the linear transformation :math:`L`, + defined by :math:`\det(L) = L(E) E^{-1}`, where :math:`E` is the + basis blade for the pseudoscalar grade space. + - Expression returned is a real SymPy scalar, not a GAlgebra 0-vector. """ - - lt_I = self(self.Ga.i, obj=True) - det_lt_I = lt_I.subs(self.Ga.i.obj, S.One) - return det_lt_I + return (self(self.Ga.e) * self.Ga.e.inv()).scalar() + # ## GSG code ends ### def tr(self) -> Expr: # tr(L) defined by tr(L) = grad|L(x) r""" @@ -436,23 +507,21 @@ def tr(self) -> Expr: # tr(L) defined by tr(L) = grad|L(x) :math:`L`, defined by :math:`{{\operatorname{tr}}\lp {L} \rp }=\nabla_{a}\cdot{{L}\lp {a} \rp }` where :math:`a` is a vector in the tangent space. """ - connect_flg = self.Ga.connect_flg self.Ga.connect_flg = False - F_x = mv.Mv(self(self.Ga.coord_vec, obj=True), ga=self.Ga) tr_F = (self.Ga.grad | F_x).scalar() self.Ga.connect_flg = connect_flg return tr_F + r''' def adj(self) -> 'Lt': r""" - Returns the adjoint (a linear transformation) of the linear - transformation, :math:`L`, defined by :math:`a\cdot{{L}\lp {b} \rp } = b\cdot{{\bar{L}}\lp {a} \rp }` - where :math:`a` and :math:`b` are any two vectors in the tangent space - and :math:`\bar{L}` is the adjoint of :math:`L`. + Returns the adjoint :math:`{\bar{L}}`(a linear transformation) of linear + transformation :math:`L`, defined by + :math:`a\cdot{{L}\lp {b} \rp } = b\cdot{{\bar{L}}\lp {a} \rp }` + where :math:`a` and :math:`b` are any two vectors in the tangent space. """ - self_adj = [] for e_j in self.Ga.basis: s = S.Zero @@ -463,19 +532,44 @@ def adj(self) -> 'Lt': else: self_adj.append(expand(s) / self.Ga.e_sq) return Lt(self_adj, ga=self.Ga) + ''' + # ## GSG code starts ### + def adj(self) -> 'Lt': + r""" + Returns the adjoint transformation :math:`{\bar{L}}` of linear + transformation :math:`L`, defined by + :math:`a\cdot{{L}\lp {b} \rp } = b\cdot{{\bar{L}}\lp {a} \rp }`, + where :math:`a` and :math:`b` are any two vectors in the tangent space. + """ + matrix_of_adjoint = self.Ga.g_inv * self.matrix().T * self.Ga.g + return self.Ga.lt(matrix_of_adjoint) + # ## GSG code ends ### + + # ## GSG code starts ### + def is_singular(self): + """Returns `True` if and only if linear transformation `self` is singular.""" + E = self.Ga.E() + return simplify((self(E) < E.inv()).scalar()) == S.Zero + # ## GSG code ends + + # ## GSG code starts ### def inv(self): - if self.spinor: - Lt_inv = Lt(self.Rrev, ga=self.Ga) - Lt_inv.rho_sq = S.One/(self.rho_sq**2) + """Returns compositional inverse of linear transformation`self`. + Assumes transformation is nonsingular. If `self` is a versor based + transformation, its inverse will also be versor based.""" + if self.versor: + return self.Ga.lt(self.V.rev()) + if not self.is_singular(): + return self.Ga.lt(Matrix(self.matrix().inv())) else: - raise ValueError('Lt inverse currently implemented only for spinor!\n') - return Lt_inv + raise ValueError('transformation in inv() is non-invertible') + # ## GSG code ends ### def _sympystr(self, print_obj): - if self.spinor: - return 'R = ' + print_obj._print(self.R) + if self.versor: # ## GSG: changed `self.spinor` to `self.versor` ### + return 'R = ' + print_obj._print(self.V) else: pre = 'Lt(' s = '' @@ -486,59 +580,48 @@ def _sympystr(self, print_obj): s += pre + print_obj._print(base) + ') = 0\n' return s[:-1] + # ## GSG code starts ### def _latex(self, print_obj): parts = [] - for base in self.Ga.basis: - if self.spinor: - val = self.R * mv.Mv(base, ga=self.Ga) * self.Rrev + for base in self.Ga.basis: # base is a basis symbol + if self.versor: + b = mv.Mv(base, ga=self.Ga) # b is the corresponding basis vector + if self.V == self.V.odd(): + unnormalized_image = self.V * (b.g_invol()) * self.Vrev + elif self.V == self.V.even(): + unnormalized_image = self.V * b * self.Vrev + else: + raise ValueError('self.V is not a versor in _latex') + image = 1/(self.Vqform) * unnormalized_image else: - val = mv.Mv(self.lt_dict.get(base, S.Zero), ga=self.Ga) - parts.append(print_obj._print(base) + ' &\\mapsto ' + print_obj._print(val)) + image = mv.Mv(self.lt_dict.get(base, S.Zero), ga=self.Ga) + parts.append(print_obj._print(base) + ' &\\mapsto ' + print_obj._print(image)) return '\\left\\{ \\begin{aligned} ' + ' \\\\ '.join(parts) + ' \\end{aligned} \\right\\}' + # ## GSG code ends ### def Fmt(self, fmt=1, title=None) -> printer.GaPrintable: return printer._FmtResult(self, title) + # ## GSG code starts ### def matrix(self) -> Matrix: r""" - Returns the matrix representation of the linear transformation, - :math:`L`, defined by :math:`{{L}\lp {{{\eb}}_{i}} \rp } = L_{ij}{{\eb}}_{j}` - where :math:`L_{ij}` is the matrix representation. + Returns the matrix :math:`[{L__i}_j]` defined for linear transformation + :math:`L` by :math:`L({\eb}_j)=\sum_i {L__i}_j \eb}_i`. """ if self.mat is not None: return self.mat + elif self.versor: + self.lt_dict = {} + for base in self.Ga.basis: + self.lt_dict[base] = self(base).simplify() + self.versor = False # temporary change of self.versor + mat = self.matrix() + self.versor = True # reverse change to self.versor + return mat else: - if self.spinor: - self.lt_dict = {} - for base in self.Ga.basis: - self.lt_dict[base] = self(base).simplify() - self.spinor = False - mat = self.matrix() - self.spinor = True - return mat - else: - """ - mat_rep = [] - for base in self.Ga.basis: - if base in self.lt_dict: - row = [] - image = (self.lt_dict[base]) - if isinstance(image, mv.Mv): - image = image.obj - coefs, bases = metric.linear_expand(image) - for base in self.Ga.basis: - try: - i = bases.index(base) - row.append(coefs[i]) - except: - row.append(0) - mat_rep.append(row) - else: - mat_rep.append(self.Ga.n * [0]) - return Matrix(mat_rep).transpose() - """ - self.mat = Dictionary_to_Matrix(self.lt_dict, self.Ga) * self.Ga.g - return self.mat + self.mat = Dictionary_to_Matrix(self.lt_dict, self.Ga) + return self.mat.doit() + # ## GSG code ends ### class Mlt(printer.GaPrintable): @@ -913,3 +996,28 @@ def comps(self): print('') output += str(i)+':'+str(i_index)+':'+str(self(*e)) + '\n' return output + + +# ## GSG code starts ### +def det(L: Lt) -> Expr: # det(L) defined by L(E) = det(L)E + r""" + - Returns the determinant of the linear transformation :math:`L`, + defined by :math:`\det(L) = L(E) E^{-1}`, where :math:`E` is the + basis blade for the pseudoscalar grade space. + - Expression returned is a real SymPy scalar, not a GAlgebra 0-vector. + """ + return L.det() +# ## GSG code ends ### + + +# ## GSG code starts ### +def sym(v): + """ + Returns that linear combination of basis vector symbols which corresponds + to vector v, itself a linear combination of basis vectors. + """ + # Obtain the coefficients in basis vector expansion of `v`. + # Then construct and return corresponding basis vector symbol expansion. + coefs = v.blade_coefs(v.Ga.mv()) + return sum(coefs[j]*v.Ga.basis[j] for j in range(v.Ga.n)) +# ## GSG code ends ### diff --git a/galgebra/metric.py b/galgebra/metric.py index 757ebdc1..aa26f91b 100644 --- a/galgebra/metric.py +++ b/galgebra/metric.py @@ -9,7 +9,7 @@ from sympy import ( diff, trigsimp, Matrix, Rational, sqf_list, sqrt, eye, S, expand, Mul, - Add, simplify, Expr, Function, MatrixSymbol + Add, simplify, Expr, Abs, Function, MatrixSymbol ) from . import printer @@ -114,19 +114,49 @@ def collect(A, nc_list): return C -def square_root_of_expr(expr): +def abs_with_hint(expr, hint: str = '0') -> Expr: """ - If expression is product of even powers then every power is divided - by two and the product is returned. If some terms in product are - not even powers the sqrt of the absolute value of the expression is - returned. If the expression is a number the sqrt of the absolute - value of the number is returned. + Heuristics for simplifying the absolute value of an expression with hints. """ + + # Case1: expr is numeric if expr.is_number: - if expr > 0: - return sqrt(expr) - else: - return sqrt(-expr) + return Abs(expr) + # # Case2: metric is positive definite + # if self.Ga.g.is_positive_definite: + # return expr + # Case3: expr is nonnegative + if (expr >= 0) == True: # noqa: E712 + return +expr + # Case4: expr is nonpositive + if (expr <= 0) == True: # noqa: E712 + return -expr + + # Case5: expr's sign is unknown, so use `hint`. + if hint == '0': + return Abs(expr) + elif hint == '+': + return +expr + elif hint == '-': + return -expr + else: + raise ValueError("hint must be '0', '+', or '-'.") + + +def square_root_of_expr(expr, hint='0'): + """ + If expression is product of even powers then every power is divided by two + and the absolute value of product is returned. + If some terms in product are not even powers the sqrt of the absolute value of + the expression is returned. + If the expression is a number the sqrt of the absolute value of the number is returned. + + String values '+', '-', or '0' of hint respectively determine + whether expr should be regarded as nonnegative, nonpositive, + or of unknown sign. + """ + if expr.is_number: + return sqrt(abs_with_hint(expr, hint)) else: expr = trigsimp(expr) coef, pow_lst = sqf_list(expr) @@ -137,8 +167,9 @@ def square_root_of_expr(expr): coef = sqrt(abs(coef)) # Product coefficient not a number for p in pow_lst: f, n = p + # Product not all even powers if n % 2 != 0: - return sqrt(abs(expr)) # Product not all even powers + return sqrt(abs_with_hint(expr, hint)) else: coef *= f ** (n / S(2)) # Positive sqrt of the square of an expression return coef diff --git a/galgebra/mv.py b/galgebra/mv.py index ecec5dc3..e18c4ed4 100644 --- a/galgebra/mv.py +++ b/galgebra/mv.py @@ -246,15 +246,17 @@ def _make_mv(ga: 'Ga', __name: str, **kwargs) -> Expr: for grade in range(ga.n + 1) )) + # ## GSG code starts ### @staticmethod - def _make_spinor(ga: 'Ga', __name: str, **kwargs) -> Expr: - """ Make a general even (spinor) multivector """ + def _make_even(ga: 'Ga', __name: str, **kwargs) -> Expr: + """ Make a general even multivector """ if not isinstance(__name, str): raise TypeError("Must be a string") return reduce(operator.add, ( Mv._make_grade(ga, __name, grade, **kwargs) for grade in range(0, ga.n + 1, 2) )) + # ## GSG code ends ### @staticmethod def _make_odd(ga: 'Ga', __name: str, **kwargs) -> Expr: @@ -268,9 +270,10 @@ def _make_odd(ga: 'Ga', __name: str, **kwargs) -> Expr: # aliases _make_grade2 = _make_bivector - _make_even = _make_spinor + _make_spinor = _make_even # alias for compatibility with old code + ### GSSG: removed alias `_make_even = _make_spinor_` - def __init__(self, *args, ga, recp=None, coords=None, **kwargs): + def __init__(self, *args, ga: 'Ga', recp=None, coords=None, **kwargs): """ __init__(self, *args, ga, recp=None, **kwargs) @@ -341,6 +344,7 @@ def __init__(self, *args, ga, recp=None, coords=None, **kwargs): It is incorrectly described internally as the coordinates to be used with multivector functions. """ + ### GSG: removed mention of "spinor" under `category : str` in above docstring kw = _KwargParser('__init__', kwargs) self.Ga = ga self.recp = recp # not used @@ -364,6 +368,7 @@ def __init__(self, *args, ga, recp=None, coords=None, **kwargs): self.obj = x.obj self.is_blade_rep = x.is_blade_rep self.i_grade = x.i_grade + self.characterise_Mv() else: if isinstance(x, Expr): # copy constructor for obj expression self.obj = x @@ -411,7 +416,7 @@ def reflect_in_blade(self, blade: 'Mv') -> 'Mv': # Reflect mv in blade if blade.is_blade(): self.characterise_Mv() blade.characterise_Mv() - blade_inv = blade.rev() / blade.norm2() + blade_inv = blade.rev() / blade.qform() # ### GSG replaced .norm2() by .qform() grade_dict = self.Ga.grade_decomposition(self) blade_grade = blade.i_grade reflect = Mv(0, 'scalar', ga=self.Ga) @@ -428,7 +433,7 @@ def project_in_blade(self, blade: 'Mv') -> 'Mv': # See Mv class functions documentation if blade.is_blade(): blade.characterise_Mv() - blade_inv = blade.rev() / blade.norm2() + blade_inv = blade.rev() / blade.qform() # ### GSG replaced .norm2() by .qform() return (self < blade) * blade_inv # < is left contraction else: raise ValueError(str(blade) + 'is not a blade in project_in_blade(self, blade)') @@ -811,7 +816,10 @@ def __pow__(self, n): # Integer power operator if not isinstance(n, int): raise ValueError('!!!!Multivector power can only be to integer power!!!!') - result = S.One + if n < 0: + return (self**(-n)).inv() + + result = Mv(S.One, 'scalar', ga=self.Ga) for x in range(n): result *= self return result @@ -948,6 +956,20 @@ def is_versor(self) -> bool: self.versor_flg = test.is_vector() return self.versor_flg + r''' + ### GSG start code ### + def is_versor(self) -> bool: + """ + Presumes `self` is an invertible multivector. + Returns True if `self` is a versor (geometric product of invertible + vectors). + This test follows results in lecture notes by Lundholm and Svensson. + """ + x = self.Ga.mv('', 1) # generic 1-vector + return (self.g_invol() * x * self.inv()).is_vector() + ### GSG end code ### + ''' + def is_zero(self) -> bool: return self.obj == 0 @@ -1038,6 +1060,15 @@ def dual(self) -> 'Mv': else: return sign * self * I + # ## GSG code starts ### + def undual(self) -> 'Mv': + """ + Inverse method to multivector method `.dual()`, so both + `A.dual().undual()` and `A.undual().dual` return `A`. + """ + return self.Ga.I()**2 * self.dual() + # ## GSG code ends ### + def even(self) -> 'Mv': """ return even parts of multivector """ return Mv(self.Ga.even_odd(self.obj, True), ga=self.Ga) @@ -1046,12 +1077,51 @@ def odd(self) -> 'Mv': """ return odd parts of multivector """ return Mv(self.Ga.even_odd(self.obj, False), ga=self.Ga) + # ## GSG code starts ### + def g_invol(self) -> 'Mv': + """ + - Returns grade involute of multivector `self`; negates + `self`'s odd grade part but preserves its even grade part. + - Grade involution is its own inverse operation. + """ + return self.even() - self.odd() + # ## GSG code ends ### + def rev(self) -> 'Mv': self = self.blade_rep() return Mv(self.Ga.reverse(self.obj), ga=self.Ga) __invert__ = rev # allow `~x` to call x.rev() + # ## GSG code starts ### + def ccon(self) -> 'Mv': + """ + - Returns Clifford conjugate of multivector `self`, i.e. + returns the reverse of self's grade involute. + - Clifford conjugation is its own inverse operation. + """ + return self.g_invol().rev() + # ## GSG code ends ### + + # ## GSG code starts ### + def sp(self, B, switch='') -> Expr: # scalar product + """ + - Returns scalar product of multivectors self and B. + - Object returned is a real expression, not a 0-vector. + - switch can be either '' (the empty string) or 'rev'. The + latter causes left factor self to be reversed before its + product with B is taken. + """ + if not isinstance(B, Mv): + raise ValueError("Right factor of sp must be a multivector") + if switch not in ['', 'rev']: + raise ValueError("switch must be '' or 'rev'.") + if switch == '': + return (self * B).scalar() + if switch == 'rev': + return (self.rev() * B).scalar() + # ## GSG code ends ### + def diff(self, coord) -> 'Mv': if self.Ga.coords is None: obj = diff(self.obj, coord) @@ -1187,59 +1257,88 @@ def _repr_latex_(self) -> str: return printer._FmtResult(self, self.title)._repr_latex_() return super()._repr_latex_() - def norm2(self) -> Expr: - reverse = self.rev() - product = self * reverse - if product.is_scalar(): - return product.scalar() - else: - raise TypeError('"(' + str(product) + ')**2" is not a scalar in norm2.') + # ## GSG code starts ### + def qform(self) -> Expr: + """ + - Returns the quadratic form of multivector self. + - Return value is a real SymPy expression, NOT a GAlgebra 0-vector. + - Expression necessarily represents a nonnegative number + only when self's geometric algebra has a Euclidean metric. + """ + return simplify((self.rev()*self).scalar()) + # ## GSG code ends ### - def norm(self, hint: str = '+') -> Expr: + # ## GSG code starts ### + def norm2(self, hint: str = '0') -> Expr: """ - If A is a multivector and A*A.rev() is a scalar then:: - - A.norm() == sqrt(Abs(A*A.rev())) - - The problem in simplifying the norm is that if ``A`` is symbolic - you don't know if ``A*A.rev()`` is positive or negative. The use - of the hint argument is as follows: - - ======= ======================== - hint ``A.norm()`` - ======= ======================== - ``'+'`` ``sqrt(A*A.rev())`` - ``'-'`` ``sqrt(-A*A.rev())`` - ``'0'`` ``sqrt(Abs(A*A.rev()))`` - ======= ======================== - - The default ``hint='+'`` is correct for vectors in a Euclidean vector - space. For bivectors in a Euclidean vector space use ``hint='-'``. In - a mixed signature space all bets are off for the norms of symbolic - expressions. + - Returns the normsquared of multivector self, defined as the + absolute value of the quadratic form at self. + - Return value is a real SymPy expression, NOT a GAlgebra 0-vector. + Whether numeric or symbolic, A.norm2() always represents a + nonnegative number. + - String values '+', '-', or '0' of hint respectively determine + whether the quadratic form, the absolute value of which is the + norm squared, should be regarded as nonnegative, nonpositive, + or of unknown sign, except when that quantity's sign can be + determined by other considerations, such as the metric being + Euclidean. """ - reverse = self.rev() - product = self * reverse - - if product.is_scalar(): - product = product.scalar() - if product.is_number: - if product >= S.Zero: - return sqrt(product) - else: - return sqrt(-product) - else: - if hint == '+': - return metric.square_root_of_expr(product) - elif hint == '-': - return metric.square_root_of_expr(-product) - else: - return sqrt(Abs(product)) - else: - raise TypeError('"(' + str(product) + ')" is not a scalar in norm.') + quadform = self.qform() # the quadratic form at `self` + + # Case2: metric is positive definite + if self.Ga.g.is_positive_definite: + return quadform + + return metric.abs_with_hint(quadform, hint) + # ## GSG code ends ### + + # ## GSG code starts ### + def norm(self, hint='0') -> Expr: + """ + - Returns the norm of multivector self, defined as the square + root of self's norm squared. + - Whether numeric or symbolic, returned value is a real SymPy + expression that necessarily represents a nonnegative number. + Returned value is NOT a GAlgebra 0-vector. + - String values '+', '-', or '0' of hint respectively determine + whether the quadratic form from which the norm ultimately derives + should be regarded as nonnegative, nonpositive, or of unknown + sign, except when the quadratic form's sign can be determined + by other considerations, such as the metric being Euclidean. + """ + return simplify(metric.square_root_of_expr(self.norm2(hint), hint='+')) + # ## GSG code ends ### __abs__ = norm # allow `abs(x)` to call z.norm() + # ## GSG code starts ### + def mag2(self) -> Expr: + """ + - Returns the magnitude squared of multivector self, defined as + the sum of the absolute values of the norm squareds of self's + grade parts. + - Returned value is a real SymPy expression, NOT a GAlgebra 0-vector. + Expression necesssarily represents a nonnegative number. + - The magnitude squared differs from the norm squared of `self` + when the metric is non-Euclidean. + """ + total = 0 + for k in range(self.Ga.n + 1): + total += Abs(self.grade(k).norm2()) + return total + # ## GSG code ends ### + + # ## GSG code starts ### + def mag(self) -> Expr: + """ + - Returns the magnitude of multivector self, defined as the square root + of the magnitude squared. + - The magnitude necessarily agrees with the norm only when the metric is + Euclidean. Otherwise the magnitude is greater than or equal to the norm. + """ + return simplify(sqrt(self.mag2())) + # ## GSG code ends ### + def inv(self) -> 'Mv': if self.is_scalar(): # self is a scalar return self.Ga.mv(S.One/self.obj) @@ -1274,7 +1373,6 @@ def trigsimp(self) -> 'Mv': def simplify(self, modes=simplify) -> 'Mv': """ Simplify a multivector by scalar (sympy) simplifications. - `modes` is an operation or sequence of operations to apply to the the coefficients of a multivector expansion. """ @@ -1860,6 +1958,20 @@ def dual(A: Mv) -> Mv: raise ValueError('A not a multivector in dual(A)') +# ## GSG code starts ### +def undual(A: Mv) -> Mv: + """ + Equivalent to :meth: `Mv.undual`. + Inverse function to multivector function `dual`, so both + `undual(dual(A))` and `dual(undual(A))` return `A`. + """ + if isinstance(A, Mv): + return A.undual() + else: + raise ValueError('A not a multivector in undual(A).') +# ## GSG code ends ### + + def even(A: Mv) -> Mv: """ Equivalent to :meth:`Mv.even` """ if not isinstance(A, Mv): @@ -1874,10 +1986,25 @@ def odd(A: Mv) -> Mv: return A.odd() +# ## GSG code starts ### +def g_invol(A: Mv) -> Mv: + """ + Equivalent to :meth: `Mv.g_invol`. + - Returns grade involute of multivector `A`; negates `A`'s odd grade + part but preserves its even grade part. + - Grade involution is its own inverse operation. + """ + if not isinstance(A, Mv): + raise ValueError('A not a multivector in g_invol(A)') + return A.g_invol() +# ## GSG code ends ### + + def exp(A: Union[Mv, Expr], hint: str = '-') -> Union[Mv, Expr]: """ If ``A`` is a multivector then ``A.exp(hint)`` is returned. - If ``A`` is a *sympy* expression the *sympy* expression :math:`e^{A}` is returned (see :func:`sympy.exp`). + If ``A`` is a *sympy* expression the *sympy* expression :math:`e^{A}` + is returned (see :func:`sympy.exp`). """ if isinstance(A, Mv): return A.exp(hint) @@ -1900,20 +2027,92 @@ def inv(A: Mv) -> Mv: return A.inv() -def norm(A: Mv, hint: str = '+') -> Expr: - """ Equivalent to :meth:`Mv.norm` """ - if isinstance(A, Mv): - return A.norm(hint=hint) - else: - raise ValueError('A not a multivector in norm(A)') +# ## GSG code starts ### +def qform(A: Mv) -> Expr: + """ + - Equivalent to :meth:`Mv.qform`. + - qform(A) returns the quadratic form at multivector A. + - Returned value is a real SymPy expression, NOT a GAlgebra 0-vector. + - Expression necessarily represents a nonnegative number only + when A's geometric algebra has a Euclidean metric. + """ + if not isinstance(A, Mv): + raise TypeError('A not a multivector in qform(A)') + return A.qform() +# ## GSG code ends ### -def norm2(A: Mv) -> Expr: - """ Equivalent to :meth:`Mv.norm2` """ - if isinstance(A, Mv): - return A.norm2() - else: - raise ValueError('A not a multivector in norm(A)') +# ## GSG code starts ### +def norm2(A: Mv, hint: str = '0') -> Expr: + """ + - Equivalent to :meth:`Mv.norm2` + - Returns the normsquared of multivector self, defined as the + absolute value of the quadratic form at self. + - norm2(A() returns a real SymPy expression, NOT a GAlgebra 0-vector. + Whether numeric or symbolic, norm2(A) always represents a + nonnegative number. + - String values '+', '-', or '0' of hint respectively determine + whether the quadratic form, the absolute value of which is the + norm squared, should be regarded as nonnegative, nonpositive, + or of unknown sign, except when that quantity's sign can be + determined by other considerations, such as the metric being + Euclidean. + """ + if not isinstance(A, Mv): + raise TypeError('A not a multivector in norm2(A)') + return A.norm2(hint) +# ## GSG code ends ### + + +# ## GSG code starts ### +def norm(A: Mv, hint: str = '0') -> Expr: + """ + - Equivalent to :meth:`Mv.norm` + - Whether numeric nor symbolic, returned value is a real SymPy + expression that necessarily represents a nonnegative number. + Returned value is NOT a GAlgebra 0-vector. + - String values '+', '-', or '0' of hint respectively + determine whether a symbolic self.norm2() expression + should be regarded as nonnegative, nonpositive, or of + unknown sign. + """ + if not isinstance(A, Mv): + raise TypeError('A not a multivector in norm(A)') + return A.norm(hint=hint) +# ## GSG code ends ### + + +# ## GSG code starts ### +def mag2(A: Mv) -> Expr: + """ + - Equivalent to :meth:`Mv.mag2` + - Returns the magnitude squared of multivector self, defined as + the sum of the absolute values of the norm squareds of self's + grade parts. + - Returned value is a real SymPy expression, NOT a GAlgebra 0-vector. + Expression necesssarily represents a nonnegative number. + - The magnitude squared differs from the normsquared of `self` + when the metric is non-Euclidean. + """ + if not isinstance(A, Mv): + raise TypeError('A not a multivector in mag2(A)') + return A.mag2() +# ## GSG code ends ### + + +# ## GSG code starts ### +def mag(A: Mv) -> Expr: + """ + - Equivalent to :meth:`Mv.mag` + - Returns the magnitude of multivector self, defined as the square root + of the magnitude squared. + - The magnitude necessarily agrees with the norm only when the metric is + Euclidean. Otherwise the magnitude is greater than or equal to the norm. + """ + if not isinstance(A, Mv): + raise TypeError('A not a multivector in mag(A)') + return A.mag() +# ## GSG code ends ### def proj(B: Mv, A: Mv) -> Mv: @@ -1938,9 +2137,11 @@ def rot(itheta: Mv, A: Mv, hint: str = '-') -> Mv: def refl(B: Mv, A: Mv) -> Mv: r""" Reflect multivector :math:`A` in blade :math:`B`. + Returns - If :math:`s` is grade of :math:`B` returns :math:`\sum_{r}(-1)^{s(r+1)}B{\left < {A} \right >}_{r}B^{-1}`. + :math:`\sum_{r}(-1)^{s(r+1)}B{\left < {A} \right >}_{r}B^{-1}`. + if :math:`B` has grade :math:`s`. Equivalent to :meth:`Mv.reflect_in_blade` """ if isinstance(A, Mv): @@ -1957,8 +2158,38 @@ def rev(A: Mv) -> Mv: raise ValueError('A not a multivector in rev(A)') +# ## GSG code starts ### +def ccon(A: Mv) -> Mv: + """ + - Equivalent to :meth: `Mv.ccon`. + - Returns Clifford conjugate of multivector `self`, i.e. + returns the reverse of self's grade involute. + - Clifford conjugation is its own inverse operation. + """ + if not isinstance(A, Mv): + raise ValueError('A not a multivector in ccon(A)') + return A.ccon() +# ## GSG code ends ### + + def scalar(A: Mv) -> Expr: """ Equivalent to :meth:`Mv.scalar` """ if not isinstance(A, Mv): - raise ValueError('A = ' + str(A) + ' not a multivector in inv(A).') + raise ValueError('A = ' + str(A) + ' not a multivector in scalar(A).') return A.scalar() + + +# ## GSG code starts ### +def sp(A: Mv, B: Mv, switch='') -> Expr: + """ + - Equivalent to :meth: `Mv.sp`. + - Returns scalar product of multivectors A and B. + - Returns a real SymPy expression, not a GAlgebra 0-vector. + - switch can be either '' (the empty string) or 'rev'. The + latter causes left factor A to be reversed before its + product with B is taken. + """ + if not isinstance(A, Mv): + raise ValueError("Left factor of sp must be a multivector") + return A.sp(B, switch) +# ## GSG code ends ### diff --git a/galgebra/primer.py b/galgebra/primer.py new file mode 100644 index 00000000..30305457 --- /dev/null +++ b/galgebra/primer.py @@ -0,0 +1,60 @@ +# Author: Greg Grunberg +# Last revised: 2023-01-13 + +# INSTRUCTIONS: +# +# To invoke this program within a Jupyter notebok, write the command +# +# from galgebra.primer import * +# +# in the notebook's first In[ ] cell and execute that cell. + +from sys import version + +# Make SymPy available to this program +import sympy +from sympy import * + +# Make GAlgebra available to this program. +import galgebra +from galgebra.ga import * +from galgebra.mv import * +from galgebra.lt import * +from galgebra.dop import * +from galgebra.printer import Fmt, GaPrinter, Format +# Fmt: sets display mode of a multivector's basis expansion. +# GaPrinter: makes GA output a little more readable. +# Format: turns on latex printer. +from galgebra.gprinter import gFormat, gprint +gFormat() +# Default `Fmode=True` suppresses display of the arguments of +# multivector fields. +# Default `Dmode=True` causes partial differentiation +# operators to be displayed in shortened form. +Ga.dual_mode('Iinv+') +# Sets multivector dualization to be right multiplication by the +# by the inverse unit pseudoscalar (the convention used in the +# textbooks LAGA, VAGC, and GACS). +initializations_list = r"""\textsf{The following initialization commands were executed:}\\ +\quad\texttt{from sys import version}\\ +\quad\texttt{import sympy}\\ +\quad\texttt{from sympy import *}\\ +\quad\texttt{import galgebra}\\ +\quad\texttt{from galgebra.ga import *}\\ +\quad\texttt{from galgebra.mv import *}\\ +\quad\texttt{from galgebra.lt import *}\\ +\quad\texttt{from galgebra.dop import *}\\ +\quad\texttt{from galgebra.printer import Fmt, GaPrinter, Format}\\ +\quad\texttt{from galgebra.gprinter import gFormat, gprint}\\ +\quad\texttt{gFormat()}\\~~~~~~~~ +\quad\textsf{# default 'Fmode=True' suppresses arguments of multivector fields}\\~~~~~~~~ +\quad\textsf{# default 'Dmode=True' displays partial differentiation operators in short form}\\ +\quad\texttt{Ga.dual_mode('Iinv+')}\\~~~~~~~~ +\quad\textsf{# dual and undual defined by }\mathbf{M}^\star = \mathbf{M}\mathbf{I}^{-1} \textsf{ and } \mathbf{M}^{-\star} = \mathbf{M}\mathbf{I}\\""" +gprint(initializations_list) + +# Display versions of softwared being used. +gprint(r'\textsf{This notebook is now using} \\', + r'\qquad\bullet~ \textsf{Python }', version[:5], + r'\qquad\bullet~ \textsf{SymPy }', sympy.__version__[:8], + r'\qquad\bullet~ \textsf{GAlgebra }', galgebra.__version__[:], r'.') diff --git a/setup.cfg b/setup.cfg index 7220a6b2..bcac97f2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -63,3 +63,17 @@ per-file-ignores = # F401 'sympy.core.function._coeff_isneg' imported but unused # F401 'sympy.interactive.printing' imported but unused ./galgebra/printer.py: E122,E127,E128,E262,E265,E402,F401 + + # F401 '.printer.Format_cnt' imported but unused + ./galgebra/gprinter.py: F401 + + # F403 'from sympy import *' used; unable to detect undefined names + # F403 'from galgebra.ga import *' used; unable to detect undefined names + # F403 'from galgebra.mv import *' used; unable to detect undefined names + # F403 'from galgebra.lt import *' used; unable to detect undefined names + # F403 'from galgebra.dop import *' used; unable to detect undefined names + # F401 'galgebra.printer.Fmt' imported but unused + # F401 'galgebra.printer.GaPrinter' imported but unused + # F401 'galgebra.printer.Format' imported but unused + # F405 'Ga' may be undefined, or defined from star imports: galgebra.dop, galgebra.ga, galgebra.lt, galgebra.mv, sympy + ./galgebra/primer.py: F403,F401,F405 diff --git a/test/.nbval_sanitize.cfg b/test/.nbval_sanitize.cfg index 0bf1eee4..d4c3f945 100644 --- a/test/.nbval_sanitize.cfg +++ b/test/.nbval_sanitize.cfg @@ -45,3 +45,14 @@ replace: \\mathbf{\1}_{\2} # sympy master shows trailing commas on 1-tuples. This replacement is easier to do in reverse. regex: ,\\right\) replace: \\right) + +# ignore versions +# \text{Python }3.8.5 +regex: \{Python \}(\d+\.\d+(\.\d+)?) +replace: {Python } +# \text{SymPy }1.8.dev +regex: \{SymPy \}(\d+\.\d+(\.\d+)?(\.dev)?) +replace: {SymPy } +# \text{GAlgebra }0.5.0 +regex: \{GAlgebra \}(\d+\.\d+(\.\d+)?(-dev)?) +replace: {GAlgebra } diff --git a/test/fixtures/test_gprinter.pdf b/test/fixtures/test_gprinter.pdf new file mode 100644 index 0000000000000000000000000000000000000000..203f96ae1018c12178b366108a3ce855367bac81 GIT binary patch literal 10063 zcmbW7Wl){lvaWHRxJ!@(g1gL#hZ)?0ySoN=x8M?7Ccz=N1^3_(+?lw$LvZd|_nxY~ z*V*gryX*YGJk?qJS@FPmz2LV4Hpe zuC0%>s;KetUf%~{BYuX)1&LwpzztOmNb^?LWpT^PVE&NCr;S{#9~d9AIeWjsZy5g4 z8_!_MU48$~r|t5L_4%gMUvJezBrC*%&E)(YE-h*zTW$}WDYGcdq-xLhbZh?f*6+mm z%HCYucf{t56qc2I2Rz(U^hHfm<(m#thUrmB&EG%FBsqNjnu_W#?`>Ak3m+>jyN@(H zJ{pf!5WYPdkmjI;bW+F}ogO$?8=8Cmk;yYKFXKm*Y1EHt!ZrYhvW(hNF-y=$ToX^1 z78zAP_#qn>QV;WRC4nAykS zNuPWT6})>agM>33yw`Z^Qw$&>aE-&Jj5w>KBx)y}_kyPn*)e?V$q@lO46yHWd^GC! znm7u_i%iGlQ}TAlE7pbOw^9?b#v~1zin5F~y zu83Kb`@{}0GSSBQu#%4$D}g7S6&`a69(7!TNs%^8Tko0H8jmrb6Ie@H68Yb~_fyPdQu1Gn(|0+LieLXQOo%=s{rzzMq1y+>k8NR5NJY)pSY%wX(5Yd_Sy8mV*QWP zpUJ_&{hwqBClB{OXNjKTh;p+4<|V|DakBpME#R4Is~v~nNAvyZ>0^MTr}*mP{)T-xe!?(K-*^ax)_&1vKab{br#fX%MBSv6L?nD5R}^%$SB#M8WZ zf;~WTQTrPSdH*4yimS1Ur-K=r>K`ADkN<`{AkM!iN*iZqsbhvekPTg4^=|C9H28_T zk|Cg>r6Zd%JD0AEW|P}g6JD-(n~-caTF=1MykfUhuBMsRK*I-|9A!0`T8OdxY^xV6 zuQS}IL3|X3A%cpDfQa!uv6M3Ds<$`@csp|Dfcfft_a^pSa04{vwm$oe9DCEbuyrI{ zJFoJsZFztb>e=qnksvI&?-qOdJ?Dl{d*F;J#LzXpQ$)}FBAqi+UNgf6W!!P<4!VBP zwtefN?LG4q)y{(+KbZ_UbGu#ttb?$5cI#sJu_uyOkT`s>;{$g=2)t6Ar^=}ca#-?y z$npY7q=Y2@?Quk(@#zPTnF{NVdh#qzwjk03ET;TO-b#cWeIDFo1N0CA&*`OhEw7pL zK~2?3(`-`JA1Ku1Yw|wZC`xjpdcE>(1*xj)*sZXaUwMG|826d#G+ z`H|vRZ-r&g>7DC5&X-$DSX*G79Aj4+cd{cREer5b1_+1C?gh-&eDQ*ctObciA%(>l zO!?O=fi)(KEY7AfFUTB;;pwJ_=jRcKWeaC|E#IOtN@W<_(Ku5QrgjF<+63oD;IWr{ zDtMQkggH-Rz5jM~K{Go-@7q|AGp6v}c{@p)Z2HGF`ixkx@D(~U%QKp%b1IIum~l1N zCUGxyrF4U`)%3o;)gpL&D$DJ-mur!!r6b-^e_S^}hiZj4NqbNxs(MRJ{Y*!7uL?LN{#b67BN_GetRVNr${S-Y@W*T<`cuY0G) zZ#u4e!JmwJ{Z4Rwj)MeL*2tfaV|@H8iD>5L=DJE3>-@P*1R5%zgfa!trz@q|UDrrO z{O+zrxoWvW$Hw)pe7uwlI{5wT6q|g=9MB6Ed4*^eH?AyWZrDx|V5-=0k$~@yRB}zj2 z#MhW5i5(Im3rJ9gR#y8m$A85a9H!kHa)Figp=YNLny$r3!g^!!4`^@$c3W+vA+~4G z76YO%=Q0TlPX(BSL?T^?-o`oWbpV#ptrenn$$OA)sj$LBCPybI-|2(2l324#U2lC? zAA4*{397V$6|CnpK0@-{@7r3AFJE8TWiO9M?UfIs1_m%F;aP#YUQfD`$FdX9bWuJr zhfe`(<$thD;s3EL?!Q=;IpYHQ8~ynHq2GVZG9J)hSSB8;C#7OU-oNH^ zv@1S=jHvfK?$d6GSC~mDh$SdOArmbDW~ldk;P>|Rb=5a;Pt;`AhL>BB**(j=?hz9K z-;f56IX}RfU{G({n|)n75%;U0zqEw?a;4TQRbuAB%@WD-S;_WR0$I{HH!z2}39cTj z;_a=|KEWJ$^7Eh?A06=tr+Y6oSb2es=qF1q9Vv?RW%xQjPSQ^IR!mG}UeogiwL3Sj zLv4e;BG^fBKjllof?bILh%9FCr?|f+uA6YH`+m$9%vG;$>5kJR)10Mm^!XL$tM=>ezs4r#f7H-( zg4q9(+e$+A!R**8_XNPAQpV_r1Wc5OfOuldvIKg)7+=K#V`g~x*N&GQ68;50cfa30 zzsYyil!lA~&p&=@>qcx5MT@!mVI4bREHX%yM}^dJ{1tjXsEWPIqhfC>hEi6=*}C@a zs-^PnrBiFlBr1a2H>VYRxRtF^%LdQxnuHYuX;$lKidBH}Q>(yzWW&~)9NBIkyR=V) zaxi+FNw7&6Di7(0_WW{B=4fmx=}4MO4ds? z8?J9xOC%N+Q+XQ>8P3TMkTUZ)UR-% zm!{B;LXkZ>OBrmrl41Lb$eJvg zG&oPnpp;`Kd@!{t=UdKY$(tD_RU9*g+$=(>W-*;jj(-NJS1YSeM@5MY^rmf)stxa6u4#Q+uC9?THWOcpcKYRL`b=NpnS8RFM_XLjOI-gJM^TqkIi=xTP=TzKsVAdn7W2<)=>XJz$2dJc)jn; zxBEjQif@jQB7M00_zQz*-0Q{^xtm`C4`F z0gXG@vHr{?g9N&vmaT1)=L5y9(2W=L3ndoKokVwkN)Xom7Bnn8I#79jqrW12VaS(6 zI`AF^9v-zktx4GLW_Tj$JJu*pM2Q2N6_w0;lWurv!8bibi9gP7EK2SqvxkohPr0Bl zTE~We%=2O0=*p0=X@{jw;wBZJ6VI2j)vB|fMEj?wIy8C;6jGzI$?X8-_KA~I$1owP z%iC&Oro;CTTQu*Ue8`#I;7`s2+t-)GOh3p+PGYBkU&9Jfrw*Pc`g7>i=dgQc_ireM zd;6yRuL&XA*}ny)O*kpC0=D6@3Mh9_uWHYUiS7{;1p&ToZt}cZTaF^Vx!Fr%%zbde$<{Pe>V_zBObJaEsy) zO;0fpD*3{dMGQM5a7b_d!DdlS0)H+KZB}}6TEa5={Zow}u^2o?u6b5&<-=W-T;in_ zaq9`XOG-?#J~FpI!3Zu6a&kox`T zRyM1O(FlzS%eR;vu*HOmdqy`^b@XD*-Jv9Q-idW%T1TZqqHbmlz-%v9U`|iNP$RKN zvA4BpgH2v=n6OLpL&ZBjGt(@SuaSaq`eSQ6=l6GrUuC|Nm6EV896`))mWpseUoJl% z`Z0B)yjuwlW(m`dE5({qv$l@yu>x(>=^h8sLr$VY-YM;i4=rJ~)(m@H51K9}`B3b> z3Wujg-0?J|D+1j6!Cc&94|T`SHhXv`(&q~8K;GLviy8w~R=BV2puY0f(OmERNo}l~ ziHED*&(6zJ8iEjk*? z@(>{VI_lKxO)!*{?d28{id6}(b6YoE)*~umeLYb z;pl4}LA~NcAIAJUoHyczAGBqSs2_ME>n)A26UZR5#>C*b{CFDaKy>qu+xEOl@_Dtn z4~YsWO24O9PARL*re_wR`DF?2>!4$?M(Ysn-kW+oizpQqWW+zFgS^K%hX(V|>CiF? z1IVozh?H6qBs4t7bdq<2N0&rstc>5GS6kJKKcJ=Z<;yURG{peowwfAt(vtzJ>NWgh z;g@Z#mamR&La`W!-63v^p24*v3g6(H_m*MydW{ftq8HV#-R{R*g+hCKlq!CdUG8Ct z40^8ojd(o&5br;p4fsHR@mKZYb>wth$p^-*1b(Ly#G8pF)J$I$=+Kla;EILy$Nxfi z1G46ubhRi;1nRqad6`U*{YZLQni`R@LdKW13M8ZhoWrRADI|&}zYm#4aIi*=?Hl_{ zI;RL*w)PSk2oIg5`dmHw`GNYkj6ktOyx**Sj;>qTW+KGwHTH<=E6W=pL_W6AzSDsP zCx}p&5i08=b6nFa<{72%9?TabIq7fy_qr!m|si;ZPDy^lN>vYvczqt_5-cfNmoW(8LebsoTa^SZ&AL-|pqs<)e(+RtbICz=$G7x0Z*SpxU+;Srl>BN` z2^2Drd+6D8`S>`Z8x)n zoYc;JjN>3#>B(miCiKD z{?l1zT>isZ7VAq+|HS)NEUwnhzR%myjzaoray`-L0DrR+%d3PK)Rf5>A> z0vp~z)Hk$9cRcoov%KpKWSWrS>8fPOn6NT8@pBa0p?dF0v7IoBHxEbG1JW)+qR}GX zi&s-qP>k@me{{`1y2q-6(iEbON;j~?pA?rt}KBO~a4L0w*6-hZxO;&CfB%0}b^*^=YOKhoRd z3&g#wl@f=W38MSx!OP;+L36A~N?8ZedL7YqbrC<8y9E_|cPIJw2%W9$l~Xsw@n=R~ z0;q^r#HyoCTLs1!9cL$TT0J_j#()3z7CsLQpn?gRU_T`#Yu#$wCntGx=KLcgcOu(c zpmXO2(-tu;=q?&5dv+5q#O#sqLZgZg1Ljz0Y1lbT$MZ5gW4(kIQ8(Vcy5ZkYCNKvGT6-qX0H4I6w6j|cO1{Ct z@TuSZ!c5{@NK7>e2=gQ?#|99rD#eQ=dOnNvh?jh$rW}yhJ35IGd+WvzvcsxdJ!+6u z?H#}W-ujEXXN;4=8brSN9qJOFd#iimoytWH$=D!HAw~5j<}Dz_ff0le9xT;%ZGxF* zhp+ok42zB3g=DWfasP_2+q`nBX!6(z1jQya*r9&DRk zvT>%?6wzr(8{HWFi3uzmxJjRdzni4%JWbPEN0RjRUOCT}A#Z2-(%Fh)UVh4_PCr9W z)YFtTRmO~II2TeaLs~73VnmPhAqW0t61sQhc21m%pmuFkxkr6VgZyVh~#O3V*>6-vQPbL8XyJf!M znA-(z?tl`R^0BBDNdvPtAF3q12>Ng8_Xu8~_N%jLE)j!O{m=779*ChmZyfaA{PY`v znlz5V7S90)OCw<>WFbK0&Y!0_wsD_IZVw2&>?9UeJW`ofHkYv!EaBLd=RI{DJEgQk z>+o>f+218Z){vGKm7tQ|R5fxu7zL+@hoqRfME8L>Uc4e8V#3_ReUDAT{%_G`ftJB> z7JNszOi;F;p`XA0t6W?h{~I`P{sj&uriMmFhNh<5j@P#iv6pjhw-}tr7xL(Szn>p& z>mqK#xO=cj`YCJWM7GoX!|Mh)+1cB$5x!#Gi*D<|Vwa%Nr0IqbYZ8<2$uKTq0HSXI zfN01SI%5>)G?xrMcLEOqfQ4n$6+apPU?w1UR*B+F#Jj@x!IR}wcE*zpfRKl-KW+b- zNsvLr$c#=%fMfD~zPxm5?_D--f68+akbe_;`6~esnlrOGlUF-~kJ$LshKtzQyR3>B zpLp{j#M$q&sFk$!*C2a88EYj9_zB7{asU7r@DuPBz$^!d1~3CU0IekOelF+FAZYu` zK*9}lkIOIHCG7rjD;q9vgx~ver_C48lF-68wMgWieIon=vNcX~TYk##+C1aZ&@8le z|HxbZz&cYCFKOn>*y{B=n&*-#n8L^Z>ZZ@DU&Wvk*lF}K`M4s>omi3ogCnQ1rg^rq zwIOq>5eu41bd*B5=6bUbnz&L0>bPRme`dMV=~@;OG1h_3^fB$0XG3dQbwAG*UZK0Y zI=8La+t9ArZ62j$y|muACyJScJQjasBBu0t`1Tre z|2TCPCuUE9sdmS*4k4t^UbYitxmc)NwX$g;awuojPfE--NG^C>JQFx`zn^DY9dTW| z?zqpinoNx$t8&d=Z!&W@242~l*C`(T3MF9D7&Z8zTj?!+9|T!-g|f*(Cq`?wR7)a! z+>PyQjTF?a{VYr+l`JgWb%-P_oGm_{B%ShI`s`f!gT^1e0bPfE8rCAF7v`N;HuZ(m z!}jKEDfIbR39s%2AtGX8Fn7`~mH!&W9RK7!{`qjq_Q}{<#l?^kF~Kq#qEzJfej?0Jap95 z5CJ!l=a|GFH1RUa9}88MmSP9EwkWy$Wfjv;L7G+uZymr?wctVAMkG^FxPU{{DpV&oHn$?y2tX`4fGv(VC=kQ~UJ7vjJtH>Il@=jC=-v zFBVBv{YJq5fOh`z&ipa0HPrj#1$T4ktrQ_)Z{hcY@r}0zW(t*&V_4J7l$CO5((7?W z8Nq@ZfkU<%_CAx8BFoPp2;h`~0StjMOZ8w}XHQpyfusz_zjHl#iFkD@oeBg)AGOxS zMDO7Q$be@`n$fvEKXWMA-bJBw44piTNx!2IH%|}z$-y`>2v3JBRH7KiS5cUgsGZyb#UFZ6gKsqCLfr?GYTm2h*{LJ3 zje6NR5T@JiEbQh+5N=GXC>04jVfa@OSwDBs_3U6YZK70qgq~i{AN1V}yv+~}Vp_wm zl!UHN?Y$4P5B%6rJH#twtkF3-w66-ECHz6d#!>PDaXB^H-d+TQdS)~=rB?MdfZTIK zLO%>CVHz&x{`(%2Bu0p$&0@|jPf0}&F+b@`Jt{n2x<{aVn~$9QdFE);>KdCYZ1|{& zsdY3NkqAkxLD;XM-1rCY;oA2F&m&PAJ%!WhTbncXh50S=lDVvRGiQ?)(-8!5bDME;^YMVVjCf4U zOxXEMIQUH1jkrur%y@yuKrZ3`{|!AhWqW%Uv_H$OGMn^gb9<^knWfC8V&!E<#l^>_ zp~LaVA5Oi011XOGw(&94jS-}XFE&YXM~{NSnD)oY0CmcGLRP3IlAdOqw~d1x7U8*X zVk2LACM>o|5SnN~P#%80Wv>Fc*eC7)LQsbft(<)a=a;@%L61t!WtNeuy^I^%Mfq=h zk6}9p2U_P(HEnG|Kytqh#u|c(g(wAb&zLUCG+n^dze?xqV&vrF;bdlx#s}mCqS4Zd If097^KRnRf(EtDd literal 0 HcmV?d00001 diff --git a/test/fixtures/test_lt_pdf.pdf b/test/fixtures/test_lt_pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0b4d011d033e5b2804c62c402250ddc17b2a8baf GIT binary patch literal 152575 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�%Ggmn zk|=d^>g}1L_wMNuds5Q^+5k<0;{JsG7Nc=0K}>KOBQNSg$9?FZuo+k(mn#alYBC~? zy^ZZbb-~S1`#rX>sp}(u`8u9pIG5nSbLVy8B_FUsM>ZUi8;#GOnN)kQd#ADLjC>e$ zOH&u|N5?%-YrxKnez#^`Si5yXI{i@+?D!-RnOh5W01UpQ9#tuy@-C(;~@*jCzH$ZjQ!-2_%g z=D78G0+lmFA{XMqZ`^h!Dhr=DB|Kr$gw;n*6-P{jZy|9v z#kdm$a`qJ`Vz|PbTo;;pB@t80-M7OA#Py7Kg#i3{{~KyR{X#CHTCD1&ym$X3M)zPM zu}!Hej{2qKU_6CJCwFLBf;*Qs&!Ru5JMXOm*yy28rfOD-M}jlEzoFN6Ll8ZIrm2bL z=Z~!xt~9vKhyWvo7Q!wBO^-gFXR_MwVkg$&D9%R=6l#s&1I_7pzasz(q>eHAyPAWF zly5@rpJ64B6zXP;L7<*E}#W4-+PXy+LQgY6Y{HnbBui5rbwgC(j_(syWSg( zC;UH1m7;o3h#|UgJeGeCi{6O2PyLD}TmGrobb#(pLXg4Tnd#IX3Vl;wwj|N_e};J; z_yY z!0s%PTm%N~7efQ*EWGqerU$tsGFY2DlY2blV3=lcRHlvK(08l*^ezgOKo;E_&gV^) zJkni*b3ui z04;2PRqYK5Npyb?D~}e1+#R>Ut5Dcd3Ql~iGs^4QeJ&m62|DB!aozz+H0;0sCB33NWHrVb%iS4TR&0De!G%2R1>YNvQ}s3vL_$H^$EINx zu;ecj;l7VAu>YRtg{ektwH^G)K3=VDi(r89!0{LGE{Muy9zcTDQOk*2W)=sDy$oT% z{4^Tss*kKU_fd`QuFs36!M&$ob4C99)&yAYr+yA{hcv-YAisL_{Kp(#u~=THWwcAC z{b>YnH*Tg(dwVXwWAG#Sw;%P+hv778m6H9%_WuYQQ2Yktum6V;sDgbVJZ$I(RNk5k&oPJy|0kF z&dv&{F`_XPXU|>L$zJAigtN$oZAJps2-TNCezDg?EgZQ3B#+KybnLT_@pYv(cB8(? zqC{y5D=n}7zC?WT`HJ2ha`j+f((EY;wl5>jK3VPpc}AE@q_%@3v<(W*M{?SMmGC3@ ze4JYX67SH1 zUNZS15ou~Lvh+o^w1eV|4k}xn;yScSR<0POTQCS5^rE8jT2}!c5vL^p4d1WzXa*9=Z@zH=g!w54IV!Sf{Sx6y}KwXJiPE z?H+HD87d^j9~?JNu}7QG$nx7x!R0A(qJD*)d1oBEL7@HQgm+6wN#wfrM|Q1n_4D0BNuGfn&fsy%_Evp-bbfC+Et=H#_Jec8}UrlLkE?>B#` z`y)|!ix*G=@yy=gS3&1tt$I#P|7_mI4ehS_Sd2$aOgHJHV4aj;l|AUsmWbzQv&BEI zZYQy$4jFLUmK-6*T1Vp^EbRwA!$i$gIZBt5hP02ky=htZy$n z5cf3Vf~^Ac;WL71&TEhcZ4PU0%{xp!5^j4(ujCuO)DDgqTr{l-U!Bgk^n~LHry?}S zXg~BIuzuC#SF(^BV=0(8KbTPHvL1u=Las8*Sc@7SdKi=L)A9g5*}&Q-=Wd(H)beIQ zk5Y;_R8#Kx%d)O#iB(uxxU+v%uyJb}scvzHdx45-F=k2|dIs9Hq*>GtoIR%rHIp zoWtX9e=SP}jj6BPgU%MizXKJmLW(VWnnR;#KRwbmuY!c<#v3((&sRq2oS|(gQn@!g z$=qvm1dr=_z^vi8tQQadI3zBB@)E-F`A(uJ=g!ovT5(NU9+Dl$9o6sJG?QFrMsWTGa zqoN52w%yG)ZuXiN8;%iN<`Qh5BYZ(4T_MtHym1l<$r5x~GRq|<8}DcRavK-$8ZZXA zf|8;gu^;1NOE*}n3$9&0)kdWr{Ib^zl+Lxz;!rVks(G)->TXr!le*;72FrU9?msxzGg?zP-0M8EaiDU(JeOwn?`b&73AC)9#4GjGT+y#k2Ni z>J;+-bx%tHXTW4#350Srkt=O7o*K=+*!-8Pf>WxJR$;NjQcEe=VppQ=@%F;mPheCs|zw-%@)I1<521p+eKfbYq(&Kb>9D% z&og$pxNqU(smv66c+wT%T?2f$dW0-Fjren&9pyK_R5xE-*~VY(NTQRr?)27oqBdsH z7*)j*ap?BX1IVhvQF1WSp%GoOR{5XBRUb>;?cIc*FA=%}4%?oc!MhDH9CygE*UP)E zSG9172xMcW9o&DjS2jhjB$Tcd{GniHNg?=k1I@%jP$4dH#W#mx6m!9iBFpVu)ip_9 z+^LM9h6V$`WR!ckFojlSL+^W6kE&-$yEWjD5-{bj;BQHW_1c5Dh*3{?Z1%2m5A(%b z=6hIErau=|8>?h--E47H7V0vMxQZ&{Yg40Ly#@Oj-cUou3?i+g13uC6KoV1~9w(!Z z@@QfT<^dYaClM2-jKwYr3^n941R>)+`{an~BF1|R26v1R&!%1trl)u$Bj)EQ!LZ&B z4bqS3DkTjA2&t#Yg2H0tEwuD$?1_N=6LpN+!>I9wa_VQ&<5+($75{dO5vVi9B%8XS%W_M z0uhvkOxhc;J`S)>7VDC?EVg7T$0y2PWcF;1&WV{wXV>z1-721&hImocD-#2la%y{G6`s+|9 zvb-?lR8sTV)H@0MIQH3pRyG-fe^77;i{z=)WunoIb+ILTMGN10`mxOCom)14f_qQj zJcCL?*Y49xEcAlQ6kDcWGuD~zXWasdx-=$4?;ue6(zq=s`u;uo{RO1oW-6pF*&5pr{56PE-ChT)HC zV1`h{Rjg7Zz#k{dUmTwVcYdR&53!Gb=yl4s+ikhsX;Pi;`s%auedU^l=>*$$e5KE- zZ;XL5Gd&870#0sbUJeQ9#}9}{5QiU|zK#Io3ihjT$bcQV%|k$6_V()_ZwDT@C!S3N z5%aVdAOLugGXua22#{OHo*TxF0I>%SH2mWd)E)_pBA|=F<%b6UuNDC6xyL}&r|rE> z2p3~#l-?T)z^df}keikUv07{Amj%6sYXBVp)WmNmRtMcsKr@D^56~Fwx8L(C*-v^7 z5!xB?_~7B``RJ$3?WTVNw{WEmU<#!`mj)OTgAlvx z0i4FOg?$7EMu0klphdp~jJXfl4BQDEHw*}7kpY0KM*q~>cw!4q+n3u3cz1vIO}3qT zmK#nmr`J!QrIi**1#toG&k1lvIHT_u(?ANp1wI1`AaL!&8IZ-JKjs#P4sig}Ai()` zfde9+vIy)K2k_hXSmzwtHo)V?O)$ep`0yhg*kw#omJKvD3^2%5m12u;0g@j zbB*)giMD5#P(Q{;pXH)N5Kpeb?Lb%Y1bzMpp7amkv%A1YpkRI5JpKMZzngcqkg>7w z`r!4!z*c>52;@6_>+u$K-?o?>Uan#AeK=u9c=!NskB_;DBni4M^kt2=d^f!(la;3W zMfw&a@7VXgRu2#K_H2Epez9+TP2PPK zetWSMUz}Wij7>g`fBB{e(8C&U@xh6cdG^Pe=K=^*fj@R@NcVOtt3X=<-8#NnRbb%+ zYeI3B043~gcm?qC_H22EgfI_)TNZ=+tZ{vj&u=vdEZK$f^mWp}k4_^4qkw>ZCquS4 zwaAVt5B#&%Y>~%++XL?O2EQo+9pTY6_xn1NNAPNkFuJ@L zO7BJ8TO#GwFUG~J-PwjJhtF+)E}Ng6djd|ko+dWoo>(Q6Tu;l8%YV?Bqm+hZ$lXcL zADj+IZnnugn(B#j?ToK*I$+bnfz>TJO%=N}@RBGa%R*Z%eBYFHJ_Hl9M5o+*Rq%JL z7ERj-pRyBJT$f20oM>ipK4k_fh!1U)NGBX@tCssGi(&kDQ; zm~OkgKAz;iqVETWh*X`_)dda1VkT%ZCjrcfTvV;g`Twf)uPZI2!L&k5rQM6){miJ6 z#C&SM4`n>ohc9J}C)$)J0reXqOulz-yJZsmB%F%ygwZh^XJl`TOhwJnpb~tg*B~D}Bta3(CYm8^4`at{M~;5ZE?@%8DCk&wLn;K(IM~ z>SauHBPunr3&Tswy~hi`V<2ard$qlvv)J^TbHhXXxSO)LMl?2(oF2f%&hUa@ti?w#;Ko&U%#-M4liG)Q$_N&UIpsG zaM&CYmPA}3q|~ia=TH%P4M_&$GqouZd!pmOIR>sx zz3~wFravfa)qw`*V_>DUR;aPrt=q?1r`{kpRv=hm6^$~aa2C~kFCQ-)%Pr!DQZnKF z@|i5e5eWM{gN9I(F0EA3 zS}Yb13x6DP%Hk2**lfSr;4t|0R96^GEg^9U4KjUhGfZ0uWBnqGsls?>1#4Y==2`&S zuGr(g{D`d1R<5K60%cjU99V9T$&c@&k&K(e_JE`rm&pQ<%_9dfyYjb}R}kQ#epP{aEV-us+=&L$ zw}S49h>Ojv{6l2w5BnRCl6P(Z^f(h4NS)5+sQCH-ZNGaM&;-qxG_FIBOAJK*m@&7@ z@SKSgK`>{}Zrv+q7p9rMOYb4G((NA7mLj|BxSOY=Mc%Fy3i`y{Ukp<~_PO}pM35yM z!s$1nIzu_N8N8u0cej|zW|}wxB%QB}cqf;V>sH+5qBa0PtJNq0p!0-HkYb3WqSFnYV+Li8SRcePLWRZuKWC2(K00E*3H7)4ik z9lfIcxpotZ;Ad-;_3pq;kXT3t!%2A<-S~oE@o8RE2`oF1i#Z*jvN4tVCC~ZZLL5q? zQb?=;PxmwTtqg2=OF5pBt8re%*km(2iq?*#Q@W=4kvRm+O2{O!UPyWh1;j`%j{P|o z3y1tBL3)^yFM}iGc&^d*IQ;&hMl}H>IbiN3 z$r=~J!OJ19`g2g-OSJO+CKP;hT6P^fZvO*MLBVOuusHSvCbyR}zOZVWg1_M-F`J)2 zp~-uSZb4wb8m)^FPFad%Ti3FSc12l;`yU$B2H>H&pU8g`Le1K__UUB%BvgbmoFo*o zlt4=qWq&JGE=fvLz^S-kF|d5(^8TC|+px6yVP`yBps^%Caaji1=t8+t*8kxJd!e?< zs#mdHJD906>0nermJY^`ZC5L}ST^GQYajclvfo|zW}Jv?%j9eGwL&{($zCaFF0R4O z95_s;U5R@OC&`w&@VwcpIf2KFgtf1nQJ1mOB40*+_PUP{1A5z&f?Z%{NuSI|)ffP8e(Y z5s~0b($AVL!aNKihrIN8q6O!u;ZY-Qn-lvOr!W$dusQ~c(7N4NGUGyUHj)Oz z1m=wLo0r%82-#j=Do7gTNvZi5jH%x%K@7jyj7>^kM24KXG6^z1T)t4oxpJ9Kx4BvR zEv>Ty^0pXi{-^7a))+l*&pX@=(sYUo6!L5@g_=Uk`+^4Uo8TdDg;7z)K*i6WY}mh| ziW{4Lc;!{^9(*p{-&}Q7&~r?ZH2!)mi$4H^?SPL{e10M_S&f^fHhv71qArWol0Qup z7C{Kk$;Td5x||<By@g-QL2#3n)FUoGiLvK&psX^HV8zr- z)sbT0@=8)J-kFe2N$Si?wr6=|fFf`BGV{FEku1|Lh!AMU9nPA94fxe|9_zDis#gn? z;i!oWyy)u9)a-1TM2PGoJXsi++thI06tZE|nKyfv`lq6c2DTm%e?|Q_O&5Rsx|ce# z67*;s{*U9%#@8jM~w zN0%O+it7>0SlH9s9h1{@Sv4KUrXrKKB7`sVRG2Bny4ri~HjoBB?Ruf>t4HyZm`R@Eh?mzcMhO6aWSy|o-*|3Of%vLuaGU$FrDzKP<eb3`oXPPz(WEM(x?5usa4Iy^Tz`&sIW@nz~|i=q#Z8d)}Pnm1<97eK;?4-xfjTL5Q%t@VA#7;`V!Z~pr z7;EO=H7&PfHn`$ux%WDg+1PF3a0>p_-C^~@r1@eE59+z{Kv#_NjInspI}tjbwjBaB;|ROpbLnj3ecvz8f|0l zk1FK#J1}h-sC3WIH+{u10(WJno|V(P+cX#Qb+Nb(6g_Zi@1yR-5n`G(*^3MW!Q6-L zw1dAo_9GXfyt;)z*5p^W%FUrpd-4+vT}g32;bZuGC5lu_WfTlw`+=yN{gh7O+l}<|1;<>*=b5Uotj0S64n5@i1aJ zxp#~5pHN0QwPfe6o72P@4|zVn+-O`3(AktJ(*?mT-U%=HOxDOpbUTRVz`dCc*m7E$ zmvrV-Urf)V!pS7;RW`e$*myIFtOz1iX}OwQpFsbq=%l9c+uI=Rq z7w7p%8uokqW~f`N%dOeRGzmzVHg~nE7rgzLyPce2dQ?lZZT9_6>Wx=^j#d-q0;8U2 z;|qR17cOKDHaa<@Cf*AJ?1ia*D2-FiK$f#_M7jAIB=o&=%}RX8<+{JZRJ5(EQIOv7 z`WVvFMQn=feT5r2mi%t&cqTbxn|@*aB+1kXk4%}>2M5r%UYFb$(RngO#E!gS+4uX^|>#FUQDpB}S=&cCI?2|WxqGRyn%x1K|GSLZM!yk5;! zEa3WwG#R~7P4HK4c>Lc)zb~}6f6P%qnjp)RaznmzgTT4NYns1iBQZiAi!GH+#@3(# z7Ga9U5W<*bzu9n$pzbDNC&zR$NkE}xB5;=a0h8?`oCS5)Mg6TyOu4UEgCC6DOvu zmHfmfoU&j0j=s;oz0vQFW=J97JNJX^^zj)d##qE^(y#hZw1}bD6F@vg^|N@oPM{DD z?|lY;oE&EPHWp1gt^Hy}Wo0#9zx6NJIJUcC>uz;SJ9PMwaO-{dYUw0BJ<54`j#Q|z zPJ>YQ#Z5?8Xe4K=YbIOjM#uYE1A$W+eA%gr+sY66I#L+wjc4TtN&dVQ>L$(75q3xX z-3#fXOg~Qc2+UuBrw|khM<-JRl zeuIQoj7jQWiGmXLw#W8_%fZcF>nNZe{S_R?p za;=i%X?jlw96d)REZ!*3lx>|`pX&Yu;(5Q!|M!=QQu-OEiEZ)kR33%hNlvu`pH$zR zj+&F(M{tTvb|Bv3kA`m`lEBj0AS|U4scOguv9dO-Crej_9BDRZmw!#T7k==!BP_&n zFY^SjD){*@iTqFOrlX&B9AsJKq^_Oq9??54dbfKwd8aG63>1g1Nn99;aeOAF) zp0Y|dK!k%+<#c)hGxT2k26UPEG<{95KL|;<$NgDR9pdF_GCli}rK9zu6aXD<|M8;# z@d=Cn*I3_ln5k3e>WUu2u&Vs#+MkFHqUU$kO9XWLFt~3M95KM{Ob;1b*nsN%lZv%4 zTTxVaZ1q9SM%lf3Iv|l{?PHYbG%vX(M8{r{YyxnwLLb`cldN9i7{1GPVi^}&GbD4m z;AHKdOIYZu&2t2)@gz}B0aCTl$QVYsWTUt7!Ld(IsT4Y7Zb(inQd3tCk_kU9Ha~|z;Fs14F>d50eh?wWTsnE@IXvBF% z5%t*+5fw?83HER?off_Y0c{&EIS7in(F4*1^)1^KSwxAUr9#oi=-M+K6{29QYW~x* zIG%GVN1|mX5#P({mHx0KXRAF8>2DJy(7$Ak>4sh3S?EIc_q zdv_B}AShw<(0MA!CYv>pDr;q%X^b3ElC&!j0lI70hKm|WpKeM%nL-_Fid44tj%@~_ z_@$$~T$y2xrC|6Z5=E{wON~B%nUc5RN7w65dNl^t$OmWqdExWdB6tRqf6Cfs-SW8c zY=@-*@^h+r9e#Yyqm&t8eo+)det3Q&sxB5~ullNwI-WTQn$INbSG(D8L<9W%_7j~= zPDT~DwNOz3(68*yMgw!b5^34^Rp0w8_-l>^vYJezU5$shwWzK}K(r4HyIp!Nns-Vw z-aozT&6!f-l&}RC>)#UchUSa==kAy8}>ORor=6P zQdV;BiY(p9`BOSA2E%Tu8@^!w>f*k$CiFU)7<rC@V%WqU6Z^2nzN=5CeEi=b4pMm28yk*Px^Z zYHBl{90mU!L5)Fqb!u6l0On5YCQk(DS0us zYz@uNETOThuN|T$4nlME+^*!JM)v)799vi&QDDSz}`o+o}nD}mF=Aj0jTh+exS8uK+ET4nYD%7ci;njpA4+;+E@yrAg2zI_^z=v~ZuWMQ zkR=IufoMt4FTeHh>*#+79$EfV@W{&g|D#4G0(MSj=Kqc%|EGwRgOiQz|8AuHZ-U1b zP?cqEbT&E4!T^`)1zh2D772GM)&T%vSVk5Jh<|FPG_?kIrazC61}w%v0HC1nn*Qm)Bv%7+ z2+Rq*0+=ApK%0Z=EWqnPEQMwW3^RxNv>2i_1`ObYaB%GG>~0CU%-qY9N-2@3dtiZ@ zfGh)Z2IT4uoO|g80ZKfB@@(zqYUH&-G#mpSz<3%*++Jz!N*bM)r^m0c$~k zRZUV?4DJ}z04DZ7(GX3pVMCXKbp#Q#6DV?Tz0L>%YC^aGLC{~)dCi%~BY-C}H!zLg zq=|>>*l(26YuVC**H;5C4CXQVpUGhyfwOz#H-q=5X0}&_b}xGVfY1@Woul-KCvIUI!^z(l?P{_KY2jkumcF69=rm0 z0EiCg3b+wq_}9>bGgxO3AR`%iZTvDn(w`WH0Kou`F&I#0Fb%;wroVf5*dUr8!|z=V z!F|A5uH!WTU{2rv_nRqXa~j9W{_>vv`}N!D%!2Z~YP#u5@oP7ygk%|aZxjrq!SUV+ zC_uoEAOQbo|M8aYcjXuVy1&?pU_#&f@T-YUfJ^eTP`PW^ziLR}!|4&T+<8MC81f0?3 zJvyMBDLRG^O-kY2e#5VR72VrB1$FQ&A)VWAc4~Ow-XWo(J!Crvc0zb=@~J$|0S&Yx zcy_g*fti|r%u{}MK)oS!BY3r7E@8hOjt46F>F?2=vbhE~)$8%k zkilERw>Li1ib5e&Ojc9y|4gcy#RCszP1yC*IhqwhlWjI!#gAZoo4s} zpo@_E%dB?~KpdogA%6t?0O5yz2#8lQ@VEYiY~+D`1JHMF*pOyJe_=q5CZJ(~UxGVe z4xJyseVEmLLiC>ePksU)#&~}LI)Ly~`#1VtGdelBJK%R)auu|Iybush5~VKuDXXYISh zFha?yOBJZ1TJ;PETU2?qPq0t)2QJDkA)nM8U^Y05eZl(^5U_o4xQlq|_lYIGGy zEh9`c*3k|cMl)F3*Ck1`XE6piJb=2bJw~|?tKV{h5)SV0if-b1eWh4obqc}gci+E2 zh@^1~AL@~`8ct^68P}#gm=u;)KY32>5@Z0n=pn=5SYYrR6E4M5r0c_&R}Q_7>3}f+ zkq)o0o)wnD2KJqlj)GO%U#9hzVCV1xM&LU$^k*Iy@PAhtEfys?FU@3N-#IEE*do8D zO{%OWZ@j;(R2qo#`@?*Pa$S%EDS4HA&MK-uOl!j(deD*7V>{h=_7{B*mVPX_b6mmb zk~t~_?itRsf7-%>$qO6bOs3Zp?@fUCYZriRY6;?jL72YJDe6Hf(KDIK7T+O5 zdhhzvgGQ4dGEg6THfAl#H&J9;)Fk7j?1Dr5u(fFI*84hjTS749pHEB~f|CwFN`}C% zcz~ zTHOmi=%P;IB<@xFOQ}BE<@gN zzm?sT2QQ9)aE*#Xq)s*eS7~k)tafBCs1C-rbfbvME>-J{}%6g%|U=5v=i>)1_YzKZijpI%?c z#Yp{d9r^2aTV-vHcgw()c~^=FtqxVLJR0^D1U`VCwf%Evjvox?gjJim1`3a8*F>ht z2vr5e5$iD|(uvhWAuky@(ap%9KpK$)2?@i8RS?6oMEO5oiY+66Dd+lNfjQqTA=3qy z#nnVmz5i4hAn0ecjB3fv#TT8DAhN@V@9oUb6yGz3X8mokD@B|}Y37m8`9*k2zHIo! zh&T_Go#M!B^%nyk+bf8wsJ+{g9B8LW*S-p$+hsHXCxq1fwqjdF?J?l@caFB{kD3Bvvz3yg5^(MB8Q8(TxTK_u1OR;V!8^-|A$J!w?kx)L&CJ@kaU}Q<>CS zyCfuOZE!$!iiAJfZn-y+=urA=#%igh8}W^YD3t81#6_fP3u2TOWoV-n8pky|Y6dS^ z^UtM(r1`Ixl8s?b3kRagN_guC?L4@sDaW|yWyHyA7W$BHXj>=K`U_8{rcHfQfY!o1 z-mN4UFLxoPOjQI_El0AOlz-ic@n+_0L@0@u16e3vR9tEKAHiC2j!NLF5xwiJS9cJRB( z;^1j|G;X9N@HRr6=ZcWtrmLS3Jn8grp zbg5pN(Ww4Lh>&Vo7%BhCQsi<11PVUje15HWzsJJx7|d$-4gYzN9wdyNsyD*)R<4Vq zlfUaFy)eh(&HhkfE2X~whr!0&LEF!TA7cY2==n)(W`X+?id|OedRix`FeWoe<*Y+{ zLO>%-6?0f?-W>_U9okB-#ZU-g)8SR4bBZ<%&SWhP-0&l9{NnV(DmC~i;&~frH?!o+Di7D=R^>?0bOP7rSCjCY-;JYNBFimJ<>+6=k$ZpU+3L{a zyPa~=N~0n!M=`_`hVf-QW<@uxhKI^tLmto0=kk_<3a-zd_D)!%aY-wpch>Us>dScm zc=g#brpmAykJD77*-!*Kj|4lb&J?;;^TjxBXfVcWi$8Z8x5kq7MHn@-oKo_nv&NI- zm0H(AQWs)uAbBnJ+fo+e^u;M0KNR4d797f-3C#a$EjR*-<5KxMxNDauhalC?m_l5{ z^#Qps5GkZ>*L`ezs%y?T)=Y|Vqv{uu8d#ro?2KXM<`&_k78B>ed%B}Hl5)&+^>6ia zi_i_m&4@gs8VhVgwc9-Akhav)#lZLRd<=dV2HTW`l@apSDjp=K*l1cM^=*F=6q9=& zAYOUAH_!c%WehJeK~o7kYG#Jwz$fdI;`R1aKNs3+VJ?-!VBIG~-PWnQ__GCi0Z|aoL7S_TX|=&5*Am9-RYI+$Um}@cAgt>&-o$g5!++p z!%?>DR3$P<7+7~o3^a!~ZenMJYv=}D28Tsw%LIyN{ zgcX)8gKwIoeC3rIpPM8(JmG3E@d|v9J&ijp32P16ES2Vz2mmW%QaI1>eY3!+CLl(vN{=D2CC2`EiqI_H8E+t%UMBN$-N@!DkP=+ zX>JRHOS-GDblN)#PucICZ=g_LR%*RByf6~I@_C3^V6R6t&CHBN<213>A+qojv9(S{ z?vCvhqeU%&>cL4Jc8kZ6*F&b9uJBrO<%(^zsHkUS>(sk5Zz8Icb_d%$DE%*_r zdGm<%<)l}q*~iE`ByHsTuTK~f=xzy2Go@vje&`9S*1j&TD)!{GcFqWm7{3{vvTE8GN!g$ z0nPohrU0Z0ve!h!)8yMtFHUn1T*S7Bk>4^$6@2((>CY3=ehd#WzU`{Cr)GdsR;O0* zvr}$d?NJ|&xbeqkOZ~k?T$XwKN5bqFQ`F(1q$wG020+1zMfBY`s99@Zt&xiwiIOHj zO#YaIFMB!0sxGObkhs?DzlmNwaz)J8VpehnNG>QzY{6lgG?KJTJD3dyHfsM8#Alk^ zX;sknRkauGE;dr(;jZx4lK_~ZapxXRyC&@@Dqqbr@MJk*aPt_3nFW!qlV*DCJm{s2 zTAzr)PJQYAlB-&h9w96CyDGblR5NFVZz3et9Tb$7qhzi!iJygfx%zJw_ul^eJI3)p zW0Z#RTO;xA+lK~9@|vY6@LeIzwGgGl)YDF>?=$nBBJ3~m5s(TG+9;9pmVPa1I=Qmg z?U4JS2E8m*MqVvtk-^jpyF7PMWff{eQI!|r5SE>TEQ%bHWrN}$9q%Nvt7VVgTuh@T z&-jMcFafjieX14iB|JfiEwsvsAWjxb`W(-^H5nM-Z6Wdc(B!CPENXGPatAh^4O2BZ z`n59WTTe01)Nf%%u=-CqMSAtsO|(q{XSVpmdBO&ZEzK*$uYzYLBkLi_HH3WG<10ke ztM%fmmb?@nO()SBLzx(dc%9r%R6jbeyXSq{IQf==siA%WrQ_pA?8^Ly0iaG4pX2GW zhj3lKdB2{afImWm^G0z(b<*!-r{$EyyB7KpYdM+s5w3HrVf#YSb15s(Z8-pA+J}6_ z2M|(($n}PeU*MB$*VxOLDj!#5Bjec7=BLT8XU;)R+i@E@u6S13 z7u;;%c31YI;+Ad+dR*82*e~ni@%A)TxpdDa~fFp3R*^-DaA;TYIJa4yM}Rd2YuJ z+HPl_r_YZTCaWe-&GV;ED0nwqQtNRSbarEsC~D1rJeWK$5|J8f;^_s%52A0aX1&2p zCVZEOSAzC?i}1!1`ekWp z#BYm>7ohyietvWo*J|ti?FKg-LPlp(>)LOu5f5oIS-wyp^Z&c?=vK9~)Ds*JfeC%a zA%AyqvKQK0vM?O-dbSOK1TJW6}GZZi=t&>L-@LE5UiwQIf( zL(sF__MW<3kl6zP5nS$M-nGWJkt!PxSl-N3#~#|N{kFAN5|goJnj4_*!u6=6pq_ze z=4!_0=QKn{$q?YGS@>8&A@ZzM-1fxM#8=;$!i;Y&a~6UV{U!oY{R})n;(pr5S_Jp{ zdL{qiHqJuF5^E?$7X5Ei7!+x=$lQPsCdv>p8$1;dujpG|lxjFcd_n%1li|iK3MfzgTKHIKC5(_bA6EH6<=Ht{vo;nEG=p&E8|bKn`d5fM+5` zm!sYIs(|nclJhKzxMwJ^&VPEf?QVD&h^rZzwecZg1yvvF^23%-lY&owzMaQa(K?zL zHYX^*L<<*OO8b)+^iiYLBU#U4P9ud^0`%`9L=0}WDCxaOe#e;`9H%$Xnxv6z0jnMr zAcf2+$sX~)?RWXjkj48X7;BN$GL=9XBFVr(m4ok@pn%IQ&c7xwHf%fAh|5s*0`lcA zBecc`0%9M2)FS-thI_<`s?w38!F^5i&_MaIu5X9Zkl+I|{1$U@^viKLQ!?vE2eHIo z+wx%6+PC+hKtgdEmP@d5dTH>pK%R_2>}dK64TiR<;4X}gv%Ob-Eq?+m4d7G!KJSe* zMmz?SSw?DhJZZT&7_ajpxtw|Wr8F`O4sqyrvOoJYXcM+K>fIiJ&RiX+fAIqTJp%-U z@#1aCpcJ(gL>JYih8UeHz|v3C_;!+9@+(kZ4URDd3k=Qd)c%|b(d$ji(B8gcbG~Xc z=d2*na(0*W`sk*GRHNUL!fpj3;zUxWb?*RHf%V=vn`M#J^qZFK+#-M|`|lS%CT%Q9IkL z4CfD4@X5GyW8oSt);1cPLv3($7}2g?OuL85#cQ)FUNGzxBW)y_i@9q$>_%4ZJzf-ix+$; zZY_j$Au`(eYs=DgDiJLew7qN~`p`vAMH1 zhqp8#8E`HF>EI8yuCQ==D0^3Iyi0!DF$YO5ZPY??H^q0t8V{qx>zfy9bW2&55>iF? zadTeXPI#R)#cgd{5IjvCi1&bJm8~L8SvqMEQ{T+K99n#jUz8ueaq!3FYeEo}Bqsey zxy^3z(f;*&kXMmSf8D>&nqGM6$hxTYQs=Gf26^Ys=Pw4QR;$$Lg9_7{SFEm=H^OQu zz$0XOmDe6b1j*&hh79v)PFceX)W?QHe%GPJDtX;pKlMxEg53h)BOjq(E;#v#UG}`- z)XmS~Cy}MFnuqD*YpMw`W}&YsH?OSU10M*8?T3?74{U#s%MouMSM~F>Ty#5Qp*n5J zfg3L?-QH@du12ANzFRNUbS%PsF}(I>DBFb-GL;9{toOyLEh0fJpfcbH>~RzhzPqNz#A5^jch;qC*5B2Gpg)yh(rItyU(l0Kgsb62e?%;cOeAjg40m9HN{p4@ z%&RZRibr_O6_;?yJIBoGtB8^|$dW;OUFdAMI%L-7z^!mT47$E|p9F7CGbQ2LT&Ig$ ztYG9XVwq_xC>g}a{O}}M`S9q8OQ56b{T#Ku`K6H3Rxu-YFguc1>hJa{G!@t>ak=(1 za4{>FZg$RQaVwQlV~(!X_vZB8qFILlN-~OTjHNRv-vo(dy$!9zwVo~ z-?XnQS|@HbThzLm)$*U1)i#eYB5F@GgZn}(s*m)g=YO+Bm+UxPq~7y&zMed!`zSmg z&rqHz#)(%-vCzZOY9tAbUl9h9;8~EhD;3gfE4<3V>@0g>IsJm#6UA)BAHVO{Uqh+{ zd1YFHhvD3hB0}3kXmD>Xfc8wNPP2lv!)1IIbq=z-$n$8gmOoSz4PxiQmrX9CUreLn z2i1PVqXR?etz6HjzH#_6`8tsN6k4D&NW2z~MSZ-W@p`scF7c3=PHadhmlQqCY!i;5 z;==6k&6Bw$_EyFeh1?(8y zU<{h1%4lAgLw{;agYzaKEf*ed>oz~WNy^)YV1uZ|M6Bn_>WXv-1%VTd=+k1W<#01* z)dCkC|1*BvuOg}NCx}UmHPOTofFA}Ljn!BqBwnYx$k$+58HwFf_=+K|10J;V{d|;wsb(#c`Y;q!P2Zpvu41mOXmUJ<_b(=#)>v!wrc5J6X%@;>N1SLU0t*w0>yTa|aj zH%8?4)p58KP5~j5I(yBK&nfP#A;%2iI=&@xG*vvA;J%L8=ib-AR~A|<)97y->=HH@ zWpGYoshh*4ozjZv9xCD;kV{^X_Gq;34BTq`XQg}$0f>U*kV;S)-! z_SMe5o>o8IW|dIh3eJ?n|z?nq*$f7zgXu|%4lg$B&+!3s%7EBuVyfccx13y z;`|;-YdGTxnY1EcxF6wu2=^cbv++04xLmohWs!)kiAJxj$s`!9^;lo)K+(>^Gh+W3 z;f(Oa-qu$Z`&kj{ngUphxTLsn*QA`Lc2QNK}Fr%?1?hdwGcQpY{ByOiJ6A@0jQ9BxJrY0WVW|=7F=-Y!8D4q3Y?8V10Y^^vKU*J zh@5$Cq!R74sTPa~tTnf>4Kvswx_psApE~f8J>)!@DrY%K*M*c;ZO&fiSG0!>bnZ-5 zc@Rp7f3x?jYWj%!+!`Tzav)pwgoEsj*-bpaK^PVD2Nfiy@T~-jj37<_gVveiv?IHn zGrpi;bjQ7--O0LGN2-$7aa9M6UqH%iQ5!evgU+Hu%~UGqGuEL7?Ue}|9ceeOPN?tn zPs138uZ_yk;<+PFpVR>?>a}t97;|qFmFu6lTuCXqqBQTQcWx}XW_{g-drx9_3~u)U zWf#=xmD4nLNnO)|Cn#fMWCBJlrt0f;onx*dzZ!n-`<-01L(91nrRkW$t$cNaVBBX1 zx7+#eAimAy>+~X%6zW_{J-496rK-E&$!Qo7>wgpaS<6^;FUt!Ym=e@y^6YJ1h6zNb&JLZkRgs&L{atO})(?l;^GA=2t!kSk@vjW~ zn^o_Y+JoX*j;~hs5mj>$c4kuYgz|OrGM1Y#q^Den#>8#0o#wTeVW{A$5&MHM{+X_9F z8J#Eh``IT!?G{|u@hyaHR?Y%1E72CGBA#S%}GT?-kO=6gpLQ`$z| z?B%8Er z)=sxX#q2XHCp5yEw0G`#?FlL&EW1JX%<$f-G>$Rl>aytO_34N6u!1la_j!RkCxyL)57rmVCDdvGnca zkMBNJSj-*;^hlfFyHb#h;-VKhGAb++tUhlM{~#Pswzl9}9!W=h7X`kWK*D%icoDc3 zZx&uIC>6EAgBKiI5f`W{u}qYn$OyZ`sNLA_gXh$>8?n`%zpA_A5R>P;M)t+&o$r1A z?~Pz0+3OM$1qaL`EFlzYI)vxZfM5sj96By|hA#f}`blUW5x)3`Z6!9&7%tI;T>$?5 z5HcSMpoXqV1{q;ZL8#WHM z|0gK?-@rHSt|}_Ft9+CZP!f{P779jTVCN|332@<%7#L;-|M&?6gpv{w6odo?EI>-g z^OUp%I|RYfzQyvL)9>%UAAPLWxt!j&*0;X;uRE*w;n}*o5(k#57mO$D|;R zZpcFh*T?Um0Q4o@zy=WR!N$D%414I70_X=YztPzUnCu2u0WP1!Mj?V7-hvGd0H*?k zg$^y)bmPFV!N!0(-UAZK*bB~q#lHa7zkmn;KRvhrG$23STlwq#P=t&9$%G0NW9y(n zFM>tafFMYq;7`k~p5I@Ib zjd!oEgB<`6IEWqmNPy$tiSJ#4Jo^FMe}QjqKl20qwM`5d0EC6M0l7PPkz`-wU30MG z-iF6&0npB2HG&+lA;1Ls{rvki57S`61dDxs0)O+G8YX$2eUH7{e-6IfRWvaVVc(#F zMgav89T5P~0HpzvI?#Xp(LX++eu{oKtKkKIJbQjCDk8-U04n)4_Udlw$@2W^z<2YP z_Q8L)1<`{yEjb2W<3VZ!4hSf20Dt(Q_uZ#{?SK7M-*-vxcEy!m1q%Iu-+n~C`2URq zBOO1IgS0Q>-Eah+88|Qr{<1Hl{Djw}GE%JhkF#tOa%55zUOQIPL7*W6MSky#cU2Pi z?lbt7aQ|cUO+SX=9fvKazF#x^)*W)JesmRJVMho2CZ$DmfC3B}5%8I|EF9A~_Mpek z5x`!5dV2yI5U>v8qyZhoU%?SDXx8f^10APHV1AE@Kh+Sz*Gx zhYL-T^BER43*(LpVRv^a7(F5BUZW#)FF7LkNLY21jPG<-K=4| zd*D#T-|QheZs_Ap>#QdpmecUkIj)lK)a)U3NzdYaMTF={Nxf1DS`;ap8&%$GmnP1< zW$D_1M}MwG(4L?1Ew6cr4x(|DMS?(qRan~h$2=K=jf2PTl|E|IM zD=Ht);nWUa0P9ayG!GETKHee&Qv31tZq}EY2FluOMVI86uThvJab zyZSPF=WCZyOS*VHyCzd*$PUN5WBCXnlvsk4`4|3k+|GIzDG2$zj5_WKSKeesEZ$y6 zy@#2;OJ2OQsI7*0+~rMPNY-=}=j2>MP$rYAc3rk*PCmEi!LI6ld&(=~qTVK1D)d^a zBIyU`8V`FTF5Lw+#M8-A8q&V{q>h0t8abY2Zx^(vOEV^Syh;Y4>L<4iRQ2;0v=&T2 zGULB4#;Q*4K4^4Nn0vg0{gc3iu;K9&EBE~x!M8K(EVXv1ka-gw*2sGGUYEX^-Zmf} zR;@`yF-y6wpV14#JFTw|G20HYX!~kXEzv&?K}*#=*Yw*F(Z+BJxG?f&I^oS=`~2&d z68HP3Uxm3Dw+As7v)$)RY$MaPXX?#;BDv*HV5v0)wW&MflZnE1jd>-_`;*o| zYD?^D=FOXKK#rzW@TyQr@{UbH)WN?7GWVqu0Xtunz+?p4Vzp^4WOXRU@Nuo#o=Z(# z<@^xoC3AgM5SQ}all5?JC~}!@o8KiUignz}kXeaa$}6Sb;+rjUiF`0^jDLl?-6s)a zO>WF&c77XO_nz}C`XYtw>iP=%XlpcigNqL`HG}%D)3;tin=Lhm&M^FR8J}AvxHdS}sT=QsCl?N21>f&Ubf3y;Q@yDk>znkhhbqM44g09}L zSKewicmJjq%@HNY!i%Le_wGRqr#X02`&9j}K1ef^ek@*`C-BF}ym@;R^v3%uj=PLL99a)9zRbU8t@UhDe`q9OMXOIJkB3~qm#cDSC0pL}^(sdoF~z1f zGaWeTnGvG-q*;!%@{X|D28L>aCx9c)^+7X6$I!s%=gS}YrLr)r1M!ZqlGX92LBrc| zQc&gsHvLdoS^HDqrQO7i^JMO-ee?ceTCDt;u}X~?F&`y~E3a>>BYH#3{x0WUgqUJs z?^^(B48&taP9mYa>KS(PRsVpk<~i94T}6WXDdK~j3x-^XYjor~GBcrgHT${|nzG1f z9G)-=Ix>+i1LgS20i4o>!;JB?xpwskFG>2eT|4~r0;nyR^?4d%CLFDQ>-8Kys5HiZ zxaB*sbnGaVc~nCd`3#P00}^Y@pFFv9MKwl3_0`BJieF}?Sz;w#sp;Lp>vS?Gs_9k{ z31TZ^O3TvWjN_h;;-M!cOUoy(md3sX(@76zA+&UzFKm|vzv%7M0^fYTV!`@Hbb~ki z3#AKnI@RUPq^vzx9 ze_Y|f@Z-7esgOf0*De>Q?FhQNma;%bdF*l7(3F3483Pu1uv<)FF)}_TJhUEQW~);s zAr#`8s%0@_&>#>mUn)= zZZOKoPgD#2f`S^q2{si)(=_9BIIEaDex$)JISm7Ommc4Y&p2K}QD@blhX)~j=i8ib zh+d5HPpUr7dSoqj2tTVL?asOGx)hk=&YJJ<>Q7BUMIaKCL}MJ6$r^spc)!wV?zi>? zIa;;jWvHEKYa)1;<6An@LH)~Qs6m$Uxxp{GNmrveyI_FwJS{eRG6+0Ddrk|}=TR^F zPj=z)63GmLlU34_E-}rn9!Ovx^=zWEWQwhB14@S&aTg-hs+94< zPf$Y!#lTy+UVbb&Ce<|XCp-3-A!s$JP-dPI`V>U{Q-A<-efSeFruNY35x59R_Mc1V$($S zuG>SGyhAO9L!%snD0ymMhWQeBtaahkTxB%TA0yvp1#Y{m{jh{q`r=f5=Yi^lB0Gwd zMUV1rgKw@f=eOmF`6qpwB-X(bUEFh}UH((?xd{L=FlrKfKZhQPcCN{{BmoViYHyvc z43*LKuGKWS(p_~3=3`3+$(=@Ku85;T0pwV&NB6yCCMIsHgdAeaJG54nh?|$7uA#6;`Oem+j;jl3yPpl1DlA;!Z*uoZ-h{$S3 zYip0+A@E;&`|T=Y<`JuBi~~I-pMek%7H>;GqQ~s{T=#b4{8`kti_@c=2wHw>nf;s_JC-?;G4Rs4T zuBK+(wM)CAvEqx!i1)fQNp^;H@0F^iEqCauC(r9Yc98ASu3Z(T24#-EkPZ`!4)ZF! z(~BcMZywuO10Y-#`aF>r;{o(?M~qThQKT?hM9?;{ZnUFl^(HH&x{0%jazGSd!%(RbSbZ$*>%Q}sqDBy5K|Z2IH1d@;MeUq27V+=r)?D)R@Te=fu)G%47hS>l0CtA8eOsY%ut(aT# zse(Lq_?jcQ+4F*hNS|i4Dhp;%V+9Ef^==h{+B~{y!x<0T&Rc!`9SlGDw9Hr@^vFz< zmT1BG1jK6#F;GO7LY*B42aCtyW*NMY(e9{5){W z;t9?1j!u;Po(ea#SK(JK0m1TK-iD1bmAEv9xg_twK`?=>;)HsU5NiD-1;^w&DU$4} znFmufSj_$Q*|Uo`1m&310}1{m0{+PR2O8+e27-L{8Gfh$@6_nz-Yd6+u2yY@2LmSq zuL67TEgwf-wo1~;!dBMt;!?a*lrCA*kF&2YabBTw-IBFo)SxMAR6Ks+mm;y9w`WHfVCwof0JS}LrH)DqwQn0y<>pFlT{E-7m(mFaP zPSHBKdZ2cZcJlXW~$40yY7UPh7`%ctZ}!&t($f;xTuhLzgFL$eh5uJvMkC%@ewOm z3X2@--P1RXtz0LhF+NkESLl?pCQQRp120m07_{7y3Tw7S?Wezxi1y=Xb=m8B7iGDP z^9XHW(*m~py$0{=z_coo>+VUEjxp^zQRW1tjX4270a6WWylXU>13LD>@wRO!H1=dW z^U>YJ$Zg6!PES2i!2D<5_wP;%$X-4!vIHy6Mh;o_x1uHe3;*H|sJ#@cD;9T+kL?rE zHeV}(>^2R)WqHsU{j0%*E!L>(<5t1oRm^5|`$bkj>xft$^b&s)O>-8y2O`<%PtI1H zC^8*UBSIE-kg}p;98Yvf!<8&5(tRsTtXlknCcG-;$5WI;S%NNxhm9x|FRiX|^+)%= zM$mw2t-{aarj&}t^1!i|SGb)99}o(4+{kuv}TNPMG-kLp`b5eDR z`#fX*u0EZgYIFah&t^Szz@)9S@K#_ z$#X~H+WrLt?I1R)m8mpgn(k9z#twETbo?hGNQ8};BRwKgPECj?ip3oxfee#mPciV& zgGO%{*=*hyDxwmXdsBjNy;i#6z7mQ@5Txa3e@PZi_p*o7sD@r$LhXmeau6qvOCTYx z&}F~O*ZfxB2d7|?l1-!KR}8fd%3-Kv8ccMnXF*ef-3(wY^xjX|!vMC{+#7v!hI20x z?}`5N%x&}GC?&MmyydMrn8PhrwVK*u^`?>s^^hlu$}9DzyLfCVu_~jF@;iRfGITav zJR6^4`=AqW0w{4Q*3$qNsJa`@nSCsD9<9~s)Fk*Nyl<{LFh~|zU-`(#Cs?3b#fzJY zHdXWhdiPN4zMG+gEgzCbU{Uf1fenTjwA%!{LACjt>%CaqZE7Ypc)M4bZb+k+rY_`= zz1?}Ea&_!VrA@%T7TZNH*XkCsByEIxXBNg;i%!Nn@56*|=sfRw@YQVR=M~Y(Fv&Db z@?R=Z{EDuYRz%A{?KsmJPg-lr+q<7?)8zCNl0F=KS*~3*pQwp%)%d8pkc4i5qnoYee^JY!M)XRl#@S&-Pol~c~^LP`LbF<hQM9y0uBXm>@+urrUD2Z~Nx8vjj&!G|3% z@~X(_ciacFiokUP{plQ)1-PqHSqQbQ^PC|?dKr( zk%ZPxrNd=dmYt6Cve)fwZJ880a&wgQ0gAAICyenyb^qr|P*uL^W+!$`_eTFs%FFr< zFOMdQ`UCszxi$a9=Gpk4v_AWyWTIoyr((+c=M=H5vsmz^HL7|{GT(i8;B2pp4dZg? zzi|Gc8^{G_)lvwv4pvug0xELUvX`M2Pv0vKdF#+J?i$hT>zf`;<=d=~hJlwb3N>1C zMB*nP6tUik+0R=EH81<-2{jvYmFm3aQtxT5p=UZb$Rhn?V-#(09-=1t{aWxn+r7y6 zrLXgu#V0@H6EhoWM8(jJ&Zo8GbRh9`5c`=;)To(vb8nDbc-huZpn@0Xc#&#^d(tXk z_BD6j$WvT5!cD0q`aX)wo9L6$FxiE|jI+qfrB~IP;AEynvew?D6U1jcoL!yzE1xlC z3E>&%Gfs7!$(w1c9DKqz5z(^tVfK=vRF{%c>Y8vaOJ(C48fp_1d$3eh_sHk>(5I{? znd=Om-5;KVEz|nNRu;xEgMP2bIZf#+g^ghYm%{QQcigP3Qg_Qdg9RQon-~|nkmSV^ z^tkxXL%TyO%j0aO_rjXWXrg4E&CdvUBdq+C=&%Pf{^N}f@rqXEI*9X}+@`99L z<3mm4n8u;Wj6dE)^s2_N&=%ltSd3SQ2hXN&F+!18NxW7^-4Vnu(t*MYaJ*!e@MT)G zUsh-B9_o=P{2(#^4sS@aN5kx6%n}ktEV%J{6ue(t7`%SNS=3yDs>ecTlTH)6@ndRM z7|jZdQM$Q^Ve^n0#oB3gZ3|fjC9lmn4qZP+a~}?$NAV`W8d=AIC!&gv3U88uFKW=sT(Y@D3`E7JbI5RH+8nT7qoN7$k0#Vl?9m^u;Ai`f|d zF%>a2wl^__;^TvI{^Mk7Xba`O5%mhHfOED28X@EWE$2@V-T9x3o8{jM>IMPVPuTXK zTR!T|H084ZN|8UU0p_%ES z{^>CY12dDOkJ$WdVs?S0vE>OA0&)1b7T|Qw{>1RLbuSJrO%1Nz()U?$fMQ5g|M1Aj zpci{L|G4V(!sKv72m}VO8 zE1TK6oZeV+zy&HjeG+XMdy|Jauo#4q@E1}t^WC?mDmD>_|lerZ~gfdw>7Z_eR^x{|D@{V=*|6`wf*Vn|5IBYvfeAFIWx61 zG5qptRh$*QGb;>X0{CT*U7a;ly)`X^TAd|J^V=-^n?B&>o`*UnGe0waQ9BAI@XA;B zTj<5lft>jYK78(@=2tnjb9?Tm91$RMCG*S0W5(v{A75A)5B~Lewu^|}7kU0IBs;zJ zt7i)U%sV#oz72XOHw$iHcM9>lDzd%~03+lV{_}Tj*XB89hgu&TyzS7O z_U5jIws_?pho1e33Iu(f^fcg~r!cLYiHa5ex(vruu>qK?9)mc}xS zt1RmSx8mFeCy0A0uDlLW*n_G=>UYU$Uld9jD4Fh7e?;K~EvI-^Z19Tj&^<2<(QwJYXN zTrEWlM-)a!!#hT@{W~I%dS?-RTaH&2S@<}tcmHh-V*n3lbIFGL`;*4mxFN*}wX~#u z$knqj-jtgO15xtE6V{Wfp}Y}nxF=ENueoi8@b^Y%(8xH%Z_ARdYu>kX$Jj1AqIH5* z`xPure4&Bo+5YDKL-)3hk%>#f4L@V!gJFTCWA(65k%oc5-+X^Wgx0JaxxHs3J3JRk z^@Qg>Uwcpn3iz+cw zo(rToSXufr+A!Up={D-;g93zqcB-j6YYJ1n5)FBg9W$E0Nb=R1gWd|5gTt<*Xx$d& z;Q2NKbej*y2$qPINg})bO3M;Oc6p)C#Oi?G^v_bwEgUUCqy^uN6dmD*A^wK@d2zlq z+>3|XoexfiK2!Lv7qRHccKZXwjNBDC{T_(f6F;2Wa!}_;LW=l3+qbk&{g{bgDyXic z4Ym=YD+noVW!r=7h7YD2b({LZ$a1Hhyh z2kJ@D7!9?d)(9kExWuv-skLnbxvDDo50X5s{U0f2dG~Ro~M9crEnj z2z~BO1;xC-QJ1uQ6ZG-5C-KvnR(3+qmG1vuVvw1(`QTyP00{#wO%%pgqIrV8-u$3H+ZrSlHcObEv323@9DvqAVjqjHpwga}qZ_ z=ML(J1}54){YOrDUWveJBI5hH(pHvFj)^vgZ-e*jd@>*~)8qhE`g0vkZst?x(*W7J zw+m|_fs)Q+hnw2X4bQQPz6+_ML`w(y<&59&u9^=_=es!)s8mPj-Y+S+4@Elh$a*85 zmE}kuXl_fz*L?W9e#TKllAtuu&|5qrN@*80=@4ICuuqfViqMzDp|Yq{#kR1PIuTcJ z9>AVatm9D$%!oNYGtd#v=OrpvN>L@Hy<2>F)agIrxh*ao_423FWMTz)Ar6L)CL^h1 z>EkpBQI))dH^rll3zoW9-p5pFpY^=#x=0JogD30d%o}CBgs@LU$+KOKF0v^$kWc7i zB!=kbHjXAoSyJ&e6d!hmpPB81o9P(=~sT@z_H(({Pb(54Ob;W~tSFZuvm6-tEjztLu zHkt^T6Uo>fl-uW9uNO9uv!O^e$TmHO5y3ta_o=Ss=F;z_AELEBpe%i(EMyRx>WQG* zG8B~|_S;8;Lr&)8E#HB%SkU>&Yk!klE=NqFs4W$i%nz_P%@<+Fq#Gjslk%bGfI_GNTvB)_Q9Wz&JlN$@o~wI}CJ3 zK>Zkt06q5yb}}iq=|?ajGW?9p`;)hnSe&x&hZHmWSl)7&0~pJ6XG8>aTli6;)o`iB znN4hN@h1+O71`j>70QPKU8-tk8nagU5cysaA*-bV^a#B+BU-W(8@=NR&Z_8HhKNGt zQ|-0mG`v40#l8etXW!hkyh}X=VB(N06qgg5t$4ICy9JlLbz0&Y7)m-HA1sC{hMvwp z+vxMMtXBoQ%i7($Ama9l>>rtT$63gbpXQl+z|l$?_R8YC5aro6k;Uo3o(rZB2^%PS zX~tCbnwX{J0)rw|q*gAHc@!G7DoQodK^8T#`5=gHXUt*Z0J{zh{!!n4&FZO+K1}n&mxw-RxMwdY zNi^D{I{!hhIsNmaj@BzX4ra)9l@wFL4QSc<%R00&8fNTH()l!iENN)J@yvZA?St@` zRXYM0gi>V0x0}?*Ifu1Nw2t<}Jj-jTzDxVMa8=nVd~&0L{bP)()*=a(ty`V1yHXMa zArQ9w*)Jm|ozp-0y{`H1&8{r#glP}>Ir_xSP!a6vjf=c>H zZup+9e>hyA4eqV5@wfMCZX7r3BDfMotHck^BeS(^ZatTSlK$dj<@&brC5c%Q0!)BR# zm5x0%7reg8-vvu0ozh;sNbL06dyIPlpY@-aBFJs;wz*@I7{!YW!3Zz;9ckOSMLi`N zQjy9MBFN^fvEp%>BuCAL z<(}S#BV|Q|63PT8^j#iZU4tMrH**oD2K6MuNtj`_&MI8(unmUEp>)9PMa4m&_MQ~P z&z?IgL=#`!GQkyNK_e{JM&S?@@uS}}d9@8Q{-S;`ZbVJKrz`76^b z_fP&z+=7)N#_4k}Gg?pa=%I1x3h-T;5|l3QHO+))^v~?rpq6&92>VsU(Uzg{v;KUU z`cHqEcLQoNPLI+I`?a?r6__}tM7=p<0{UrBso&`$RmSl#&YkN_OD?Dx#`=#@P@Jqr zd19-6(owSDexI~1Us^U#23OrQw9Z4_?RpToROfO&Y+W8Q~UH$(em${bGX z&4tsi$P2Gu0P(J|778`<+@%24o;t9sZac46Kd%gWuMAmN8}c5cgl0-ko+V5CrJ$Jahy;-7HO4W05?d> zaJFK;E^7|k3~=?`RpShveD%6j+R!IsPYhHfiv#*^%N?b);ToD9wFtvq9Xt;BfrC~c z9+hWLDj_HS0yTbs>p&zw71BP0a)VAd27YWN(QqOVB6~}YZ*qh!=6Nu920ukddpPH5cD(kraL;& zRKc|47)lB-cJsVve?5&Nxxc5p=7b&;T$&^bQYsYyN&RFgJ%VEypkhKn_G~K#H1bV^ z{jcY_q)Y>bndnz$-_g96!OQp4cVCjDeRQOsZwgxv-o2a^H*+IZqag*Fs~0C1dLK*;fguqYE!JFq412w!jfziD75J76g=x)j&Qkxlb>{e zGXk23B_h+l0Gl9oR9(VfO1*tPFkLDk(nnK0mOBaxa#?5evP4<(94CQ`>Ou9G^fmC{Wa@~Z;B zio3FqEFoA1Ar>^E)bCdySMe5jI#8~9mw6_1;Nl@yYef=O9q&hQ#D{#gYnBIg4v@POzhEID{4=Tqdg3{_
ukvxO)my9VN9Mi8)g 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 XjU&d&$%4XRP*W>qJv~QvC*?l@QxzE7 literal 0 HcmV?d00001 diff --git a/test/test_gprinter.py b/test/test_gprinter.py new file mode 100644 index 00000000..73c9b69f --- /dev/null +++ b/test/test_gprinter.py @@ -0,0 +1,188 @@ +from __future__ import annotations + +import os +import unittest +import pytest +import subprocess +from pathlib import Path + +# Make SymPy available to this program: +import sympy +from sympy import symbols, simplify, sin, cos + +# Make GAlgebra available to this program: +from galgebra.ga import Ga +# from galgebra.mv import * +from galgebra.printer import Fmt, GaPrinter, Format +# Fmt: sets the way that a multivector's basis expansion is output. +# GaPrinter: makes GA output a little more readable. +# Format: turns on latex gprinter. +from galgebra.gprinter import gFormat, gprint, gxpdf, gPrint_Function + +ROOT = Path(__file__).parent.parent +DIR_TEST = ROOT / 'test' +DIR_GENERATED = DIR_TEST / 'generated' +DIR_FIXTURES = DIR_TEST / 'fixtures' +DIR_DIFF = DIR_TEST / 'diff' + + +def lin_tran(): + gFormat() + gPrint_Function() + (x, y, z) = xyz = symbols('x,y,z',real=True) + (o3d, ex, ey, ez) = Ga.build('e_x e_y e_z', g=[1, 1, 1], coords=xyz) + grad = o3d.grad + (u, v) = uv = symbols('u,v',real=True) + (g2d, eu, ev) = Ga.build('e_u e_v', coords=uv) + grad_uv = g2d.grad + v_xyz = o3d.mv('v','vector') + A_xyz = o3d.mv('A','vector',f=True) + A_uv = g2d.mv('A','vector',f=True) + # gprint(r'\text{3d orthogonal ($A$ is vector function)}') + gprint('A =', A_xyz) + gprint('A^{2} =', A_xyz * A_xyz) + gprint(r'\nabla \cdot A =', grad | A_xyz) + gprint(r'\nabla A =', grad * A_xyz) + gprint('v|(grad*A) =',v_xyz|(grad*A_xyz)) + gprint(r'\text{2d general ($A$ is vector function)}') + gprint('A =', A_uv) + gprint('A^{2} =', A_uv * A_uv) + gprint(r'\nabla \cdot A =', grad_uv | A_uv) + gprint(r'\nabla A =', grad_uv * A_uv) + A = o3d.lt('A') + gprint(r'\text{3d orthogonal ($A$, $B$ are linear transformations)}') + gprint('A =', A) + gprint(r'\f{mat}{A} =', A.matrix()) + gprint('\\f{\\det}{A} =', A.det()) + gprint('\\overline{A} =', A.adj()) + gprint('\\f{\\Tr}{A} =', A.tr()) + gprint('\\f{A}{e_x \\wedge e_y} =', A(ex^ey)) + gprint('\\f{A}{e_x} \\wedge \\f{A}{e_y} =', A(ex)^A(ey)) + B = o3d.lt('B') + gprint('g =', o3d.g) + gprint('g^{-1} =', o3d.g_inv) + + gprint('A + B =', A + B) + gprint('AB =', A * B) + gprint('A - B =', A - B) + gprint('General Symmetric Linear Transformation') + Asym = o3d.lt('A',mode='s') + gprint('A =', Asym) + gprint('General Antisymmetric Linear Transformation') + Aasym = o3d.lt('A',mode='a') + gprint('A =', Aasym) + gprint(r'\text{2d general ($A,\\;B$ are linear transformations)}') + A2d = g2d.lt('A') + gprint('g =', g2d.g) + gprint('g^{-1} =', g2d.g_inv) + gprint('gg^{-1} =', simplify(g2d.g * g2d.g_inv)) + gprint('A =', A2d) + gprint(r'\f{mat}{A} =', A2d.matrix()) + gprint('\\f{\\det}{A} =', A2d.det()) + A2d_adj = A2d.adj() + gprint('\\overline{A} =', A2d_adj) + gprint('\\f{mat}{\\overline{A}} =', simplify(A2d_adj.matrix())) + gprint('\\f{\\Tr}{A} =', A2d.tr()) + gprint('\\f{A}{e_u \\wedge e_v} =', A2d(eu^ev)) + gprint('\\f{A}{e_u} \\wedge \\f{A}{e_v} =', A2d(eu)^A2d(ev)) + B2d = g2d.lt('B') + + gprint('B =', B2d) + gprint('A + B =', A2d + B2d) + gprint('A - B =', A2d - B2d) + gprint('AB =', A2d * B2d) + a = g2d.mv('a','vector') + b = g2d.mv('b','vector') + gprint(r'a|\f{\overline{A}}{b}-b|\f{\underline{A}}{a} =',((a|A2d.adj()(b))-(b|A2d(a))).simplify()) + m4d = Ga('e_t e_x e_y e_z', g=[1, -1, -1, -1],coords=symbols('t,x,y,z',real=True)) + T = m4d.lt('T') + gprint('g =', m4d.g) + gprint(r'\underline{T} =',T) + gprint(r'\overline{T} =',T.adj()) + gprint(r'\f{\det}{\underline{T}} =',T.det()) + gprint(r'\f{\mbox{tr}}{\underline{T}} =',T.tr()) + a = m4d.mv('a','vector') + b = m4d.mv('b','vector') + gprint(r'a|\f{\overline{T}}{b}-b|\f{\underline{T}}{a} =',((a|T.adj()(b))-(b|T(a))).simplify()) + coords = (r, th, phi) = symbols('r,theta,phi', real=True) + (sp3d, er, eth, ephi) = Ga.build('e_r e_th e_ph', g=[1, r**2, r**2*sin(th)**2], coords=coords) + grad = sp3d.grad + sm_coords = (u, v) = symbols('u,v', real=True) + smap = [1, u, v] # Coordinate map for sphere of r = 1 + sph2d = sp3d.sm(smap,sm_coords,norm=True) + (eu, ev) = sph2d.mv() + grad_uv = sph2d.grad + F = sph2d.mv('F','vector',f=True) + f = sph2d.mv('f','scalar',f=True) + gprint('f =',f) + gprint(r'\nabla f =',grad_uv * f) + gprint('F =',F) + gprint(r'\nabla F =',grad_uv * F) + tp = (th,phi) = symbols('theta,phi',real=True) + smap = [sin(th)*cos(phi),sin(th)*sin(phi),cos(th)] + sph2dr = o3d.sm(smap,tp,norm=True) + (eth, ephi) = sph2dr.mv() + grad_tp = sph2dr.grad + F = sph2dr.mv('F','vector',f=True) + f = sph2dr.mv('f','scalar',f=True) + gprint('f =',f) + gprint(r'\nabla f =',grad_tp * f) + gprint('F =',F) + gprint(r'\nabla F =',grad_tp * F) + return + + +class TestGprinter(unittest.TestCase): + def setUp(self): + os.makedirs(DIR_GENERATED, exist_ok=True) + os.makedirs(DIR_DIFF, exist_ok=True) + os.chdir(DIR_GENERATED) + + def gen_pdf(self, name, documentclass): + gxpdf('%s.tex' % name, pdfprog='tectonic', rm=False, null=False, evince=False, documentclass=documentclass) + + def check_pdf(self, name, expected_retcode=0): + retcode = subprocess.call([ + 'diff-pdf', + '--output-diff=%s' % (DIR_DIFF / ('%s-diff.pdf' % name)), + DIR_FIXTURES / ('%s.pdf' % name), + DIR_GENERATED / ('%s.pdf' % name) + ]) + assert retcode == expected_retcode + + @pytest.mark.skipif("TEST_GXPDF" not in os.environ, reason="Only run if TEST_GXPDF is set") + def test_gxpdf(self): + gFormat() + # Set up standard G^3 geometric algebra + g3coords = (x, y, z) = symbols('x y z', real=True) # Without real=True, symbols are complex + g3 = Ga(r'\mathbf{e}', g=[1, 1, 1], coords=g3coords) + (ex, ey, ez) = g3.mv() # Program names of basis vectors. + (exr, eyr, ezr) = g3.mvr() # Program names of reciprocal basis vectors. + + B = g3.mv('B', 'bivector') + Fmt(1) # Set Fmt globally + gprint(r'\mathbf{B} =', B) # B will be bold. + gprint(r'\mathbf{B} =', B.Fmt(3)) # Fmt(3) here only. + gprint(r'\mathbf{B} =', B) # Global Fmt remembered. + + gprint(r'\mathbf{B}^2 =', B*B) + + M = g3.mv('M', 'mv') + gprint(r'\langle \mathbf{M} \rangle_2 =', M.grade(2)) + # grade(2) could be replaced by, e.g., odd(), or omitted altogether. + + gprint(r'\alpha_1\mathbf{X}/\gamma_r^3') + + grad = g3.grad + + gprint(r'{\nabla} = ', grad) + + self.gen_pdf('test_gprinter', documentclass='book') + self.check_pdf('test_gprinter') + + # This test is a POC, and should skip for now + @pytest.mark.skip + def test_lt_pdf(self): + lin_tran() + self.gen_pdf('test_lt_pdf', documentclass='report') + self.check_pdf('test_lt_pdf', expected_retcode=1) \ No newline at end of file diff --git a/test/test_mv.py b/test/test_mv.py index 002dad49..4dbd3cee 100644 --- a/test/test_mv.py +++ b/test/test_mv.py @@ -2,7 +2,10 @@ import pytest import sympy +from sympy import symbols from galgebra.ga import Ga +from galgebra.mv import proj, undual, g_invol, exp, norm, norm2, mag, mag2, ccon, rev, scalar, qform, sp + class TestMv: @@ -52,14 +55,13 @@ def test_get_coefs(self): with pytest.raises(ValueError): (e_1 ^ e_2).get_coefs(3) - def test_blade_coefs(self): """ Various tests on several multivectors. """ _g3d, e_1, e_2, e_3 = Ga.build('e*1|2|3') - m0 = 2 * e_1 + e_2 - e_3 + 3 * (e_1 ^ e_3) + (e_1 ^ e_3) + (e_2 ^ (3 * e_3)) + m0 = 2 * e_1 + e_2 - e_3 + 3 * (e_1 ^ e_3) + (e_1 ^ e_3) + (e_2 ^ (3 * e_3)) assert m0.blade_coefs([e_1]) == [2] assert m0.blade_coefs([e_2]) == [1] assert m0.blade_coefs([e_1, e_2]) == [2, 1] @@ -93,7 +95,7 @@ def test_rep_switching(self): # this ga has a non-diagonal metric _g3d, e_1, e_2, e_3 = Ga.build('e*1|2|3') - m0 = 2 * e_1 + e_2 - e_3 + 3 * (e_1 ^ e_3) + (e_1 ^ e_3) + (e_2 ^ (3 * e_3)) + m0 = 2 * e_1 + e_2 - e_3 + 3 * (e_1 ^ e_3) + (e_1 ^ e_3) + (e_2 ^ (3 * e_3)) m1 = (-4*(e_1 | e_3)-3*(e_2 | e_3))+2*e_1+e_2-e_3+4*e_1*e_3+3*e_2*e_3 # m1 was chosen to make this true assert m0 == m1 @@ -148,6 +150,8 @@ def check(x, expected_grades): ga.mv('A', 'grade', not_an_argument=True) # invalid kwarg with pytest.raises(TypeError): ga.mv([1, 2, 3], 'vector', f=True) # can't pass f with coefficients + with pytest.raises(TypeError): + ga.mv(e_1, 'even') # Must be a string def test_abs(self): ga, e_1, e_2, e_3 = Ga.build('e*1|2|3', g=[1, 1, 1]) @@ -214,3 +218,109 @@ def test_contraction(self, make_one): assert (e12 > one) == e12 assert (e12 < one) == 0 assert (one > e12) == 0 + + def test_proj(self): + g3coords = symbols('x y z', real=True) + V = Ga('e', g=[1, 1, 1], coords=g3coords) + + u = V.mv("u", "vector") + v = V.mv("v", "vector") + w = V.mv("w", "vector") + B = V.mv("B", "mv") + + assert proj(u, v) == v.project_in_blade(u) + assert proj(w, v) + proj(w, u) == proj(w, u + v) + assert proj(u, v) == (v | u) / u + + Vr = u ^ v + assert proj(Vr, B) == ((B < Vr) * Vr.inv()) + assert proj(Vr, B) == ((B < Vr) < Vr.inv()) + + def test_norm2(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + A = g3.mv('A', 'mv') + + assert A.norm2() == A.rev().sp(A) + assert A.norm2('+') == A.rev().sp(A) + assert A.norm2('-') == A.rev().sp(A) + + assert norm2(A) == norm(A) * norm(A) + assert norm2(A, '+') == norm(A) * norm(A) + assert norm2(A, '-') == norm(A) * norm(A) + + def test_mag2(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + A = g3.mv('A', 'mv') + + assert mag2(A) == mag(A) * mag(A) + + def test_undual(self): + # A not a multivector in undual(A). + with pytest.raises(ValueError): + undual(1) + + def test_g_invol(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + A = g3.mv('A', 'mv') + + assert g_invol(A.even()) == A.even() + assert g_invol(A.odd()) == -A.odd() + + with pytest.raises(ValueError): + g_invol(1) + + def test_exp(self): + g3coords = (x, y, z) = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + + u = g3.mv("u", "vector") + v = g3.mv("v", "vector") + + assert exp(u ^ v) == exp(-v ^ u) + assert exp(x + y + z) == exp(z + y + x) + + def test_ccon(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + + A = g3.mv('A', 'mv') + + assert ccon(ccon(A)) == A + assert ccon(A) == g_invol(rev(A)) + assert ccon(A) == rev(g_invol(A)) + + # not a multivector in ccon(A) + with pytest.raises(ValueError): + ccon(1) + + def test_scalar(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + + A = g3.mv('A', 'mv') + u = g3.mv("u", "vector") + + assert scalar(A) == A.scalar() + assert scalar(u) == 0 + assert scalar(u * u) == qform(u) + + # not a multivector in scalar(A) + with pytest.raises(ValueError): + scalar(1) + + def test_sp(self): + g3coords = symbols('x y z', real=True) + g3 = Ga('e', g=[1, 1, 1], coords=g3coords) + + A = g3.mv('A', 'mv') + B = g3.mv('B', 'mv') + + assert sp(A, B) == A.sp(B) + assert sp(A, B) == (A*B).scalar() + + # not a multivector in sp(A, B) + with pytest.raises(ValueError): + sp(1, 1)