LoginSignup
4

More than 5 years have passed since last update.

PARI/GPの紹介

Last updated at Posted at 2013-12-27

誰得な投稿を1つ。数学計算用ライブラリ "PARI" とその言語 "GP" 、および、インタラクティブシェル "gp" のご紹介。

本家サイト : http://pari.math.u-bordeaux.fr/

インストール

homebrewならこれだけ。

$ brew install pari

使いかた

gpコマンドでシェルが起動します。

$ gp
                                                          GP/PARI CALCULATOR Version 2.5.4 (released)
                                                       i386 running darwin (x86-64 kernel) 64-bit version
                                             compiled: Oct 29 2013, gcc-5.0 (clang-500.2.79) (based on LLVM 3.3svn)
                                                         (readline v6.2 enabled, extended help enabled)

                                                             Copyright (C) 2000-2013 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?12 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500509

スタックの大きさや初期素数リストの大きさは .gprc で指定したり、コマンドラインでも指定できます。詳しくは gp --help をチェックしてください。

四則演算、演算子系

普通に計算してみます。
エンターを押すと自動的に計算してくれます。計算結果は %n として変数化されるので以降の計算で参照できます。

? 1 + 2
%1 = 3
? 1 - 2
%2 = -1
? 5 * 10
%3 = 50
? 3 / 10
%4 = 3/10
? %4 * 10
%5 = 3

さて、早速ですが除算(割り算)が分数になっていて、丸め誤差が発生していませんね。数学計算らしい機能です。

? 2^10
%6 = 1024

累乗です。

? 5!
%7 = 120

階乗です。

? 10 % 3
%9 = 1

剰余の計算です。

? exp(1)
%12 = 2.7182818284590452353602874713526624978
? Pi
%15 = 3.1415926535897932384626433832795028842
? 1 + I
%18 = 1 + I
? %18^2
%19 = 2*I

定数(exp(1), Pi)や虚数(I)なども標準で付いています。ということは…。

? exp(1)^(I * Pi)
%20 = -1.0000000000000000000000000000000000000 + 0.E-37*I

若干の丸め誤差が出てしまいますが、計算できますね。

その他

このソフトは割と代数系の機能が多いです。

? x^2 + x + 1
%1 = x^2 + x + 1

多項式を定義してみたり。

? factor(x^2 - 1)
%2 =
[x - 1 1]

[x + 1 1]

多項式を因数分解してみたり。

? galoisinit(x^2 + 1)
%3 = [x^2 + 1, [5, 30, 931322574615478515625], [349392779948853795807, 581929794666624719818]~, [1, 1; 581929794666624719818, 349392779948853795807], 2, [Vecsmall([1, 2]), Vecsmall([2, 1])], [Vecsmall([2, 1])], Vecsmall([2])]

Galois群を計算したり。

まぁそんな感じです。もしオモシロイと思った人は使ってみてはいかがでしょう。
もちろん、普通の計算機にちょっとしたメモ機能がついてるものと思ってもいいと思います。

おまけ

グラフも書けます。

? plot(X=-2,2,X^2+X-1)

        5 |''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"
          |                                                             "|
          |                                                            " |
          |                                                           x  |
          |                                                          x   |
          |                                                         "    |
          |                                                        "     |
          |                                                       "      |
          |                                                     _"       |
          |                                                    _         |
          |                                                   x          |
          |                                                  x           |
          |                                                _"            |
          |                                               x              |
          "_                                            _"               |
          | "_                                         x                 |
          |   x_                                     x"                  |
          ,,,,,,x_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x",,,,,,,,,,,,,,,,,,,,,
          |       x_                            _x"                      |
          |         "x_                       _x                         |
          |            "x_                _x""                           |
-1.249433 |...............""xxx_______xx""...............................|
          -2                                                             2
? plot(X=-Pi, Pi, sin(X))

0.9996892 |'''''''''''''''''''''''''''''''''''''''''''_x""""x_'''''''''''|
          |                                         x"        x_         |
          |                                       _"            x        |
          |                                      x               "       |
          |                                     x                 "_     |
          |                                    x                    _    |
          |                                   "                      _   |
          |                                  "                        _  |
          |                                 "                          _ |
          |                                x                            _|
          _                               x                              _
          ```````````````````````````````x````````````````````````````````
          |"                            x                                |
          | "                          _                                 |
          |  "                        _                                  |
          |   "                      _                                   |
          |    "                    x                                    |
          |     "_                 x                                     |
          |       _               x                                      |
          |        x            _"                                       |
          |         "x        _x                                         |
-0.999689 |..........."x____x"...........................................|
          -3.141593                                               3.141593

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4