Sage - bardzo interesujący program wspomagający obliczenia matematyczne,
które entuzjastycznie opisywałem jakiś czas temu - jest już dostępny w
formie pakietów Ubuntu. Zamiast dość kłopotliwej instalacji, wystarczy
$ sudo apt-get install sagemath
Instaluje się wersja sprzed około roku - 3.0.5, (aktualną jest wydana miesiąc temu 4.1.1,
seria 3 doszła do 3.4.2), do nauki i podstawowego wykorzystywania
jest ona zupełnie wystarczająca.
O zmianach, które spowodowały zmianę dużego numeru
wersji, można poczytać tutaj. Rewolucja jest bardziej wewnętrzna, niż użytkowa.
Oczywiście każde wydanie niesie ze sobą
rozmaite poprawki i uzupełnienia, dotyczą one jednak głównie konkretnych modułów.
Począwszy od wersji 3.2.3 omówienia zmian są dostępne tutaj:
Informacje o starszych wersjach można znaleźć
na liście sage-announce.
Uwaga: instalacja z pakietów ciągle wymaga trochę czasu, miejsca i pasma - ściąga się 100-200 megabajtów. Mimo wszystko, jest to zauważalna oszczędność w stosunku do niezależnej instalacji - wykorzystywana jest systemowa wersja Pythona, wiele systemowych bibliotek i narzędzi.
$ sudo apt-get install sagemath
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
gap gap-character-tables gap-core gap-dev gap-doc gap-guava gap-libs
gap-online-help gap-prim-groups gap-small-groups gap-trans-groups
genus2reduction gfan gmp-ecm lcalc libboost-python1.34.1 libcdd-test libcdd0
libdsdp-5.8gf libecm0 libflint-1.011 libfplll0 libgivaro0 libiml0 liblinbox0
libm4ri-0.0.20080521 libmpfi0 libntl-5.4.2 libpari2-gmp libpolybori-0.5.0-0
libpolybori-dev libqd2c2a libsingular-3-0-4-3 libsingular-dev
libsymmetrica-2.0 libzn-poly-0.8 maxima maxima-share palp pari-extra pari-gp
python-cvxopt python-gd python-gnuplot python-gnutls python-networkx
python-polybori python-processing python-sympy python-zodb scons singular
sympow tachyon
Suggested packages:
gap-small-groups-extra gap-table-of-marks maxima-doc texmacs pari-doc
pari-gp2c python-gd-dbg valgrind
The following NEW packages will be installed
gap gap-character-tables gap-core gap-dev gap-doc gap-guava gap-libs
gap-online-help gap-prim-groups gap-small-groups gap-trans-groups
genus2reduction gfan gmp-ecm lcalc libboost-python1.34.1 libcdd-test libcdd0
libdsdp-5.8gf libecm0 libflint-1.011 libfplll0 libgivaro0 libiml0 liblinbox0
libm4ri-0.0.20080521 libmpfi0 libntl-5.4.2 libpari2-gmp libpolybori-0.5.0-0
libpolybori-dev libqd2c2a libsingular-3-0-4-3 libsingular-dev
libsymmetrica-2.0 libzn-poly-0.8 maxima maxima-share palp pari-extra pari-gp
python-cvxopt python-gd python-gnuplot python-gnutls python-networkx
python-polybori python-processing python-sympy python-zodb sagemath scons
singular sympow tachyon
Need to get 141MB of archives.
After this operation, 520MB of additional disk space will be used.
Do you want to continue [Y/n]?
Zauważyłem jeden, dość dziwny, problem - nie działa wywoływanie pomocy
znakiem zapytania:
sage: simplify?
---------------------------------------------------------
NameError Traceback (most recent call last)
...
NameError: global name '_os' is not defined
Niedogodność jest drobna, bo help(obiekt-lub-funkcja) działa:
sage: help(simplify)
Help on function simplify in module sage.calculus.functional:
simplify(f)
Simplify the expression $f$.
...
By ten artykuł nie pozostał stricte newsowym, drobny przykład
użycia Sage.
Poniższe dość niesympatyczne rachunki pomogły mi rozwiązać jedno
z zadanek z projecteuler.
Sam rachunek nie jest szczególnie frapujący, cytując go chcę pokazać,
jak można definiować symbole dla funkcji i jak rozwiązywać
równania w celu wyprowadzenia wzoru na funkcję (poniżej q(a,b) występuje z obu stron równania,
dzięki solve zostaje ono przekształcone tak, by wyprowadzić wzór na q(a,b)).
sage: var("a,b")
(a, b)
sage: T = function('T', b)
sage: p = function('p', a, b)
sage: q = function('q', a, b)
sage: print solve(
...: q(a,b) == 1/2^T(b) * p(a, b - 2^(T(b)-1) ) \
...: + (2^T(b) - 1)/2^T(b) * (1/2 * q(a-1, b) + 1/2 * q(a,b)) ,
...: q(a,b) )
[
T(b) T(b) - 1
q(a - 1, b) 2 + 2 p(a, b - 2 ) - q(a - 1, b)
q(a, b) == -------------------------------------------------------
T(b)
2 + 1
]
Dzięki za wiadomość.
Używam Sage 4.1 pod Ubuntu od kilku miesięcy i uwielbiam to środowisko. Natomiast instalacja do najprostszych nie należała i cieszę się, że takie pakiety powoli powstają.
Powstaje też powoli instalator pod Windowsa, ale z tym szczęścia nie miałam.
Sage jest też nareszcie w Mandrivie 2010