任意精度実数計算用にPARI/GPを導入してみる。
最近、35段14次の高次ルンゲクッタ法をExcel VBAで計算するシリーズをやってみたけれど、VBAが倍精度実数しか使えないので精度ではいまいちだった。そこで多倍長実数(任意精度実数)か、そこまで言わなくても4倍精度実数が計算できるプログラミング言語がないかな、と少し探す。CのライブラリならすぐGMPとか
出るんですが、言語のほうがおもしろそう(うちのブログでやっているのは単に私の暇つぶしなので、覚えることが多いほうがいいということで。。。)
昔から知っているのはUBASIC
http://www.rkmath.rikkyo.ac.jp/~kida/ubasic.htm
なんですが、Windows版がないしちょっと古くなった感はどうしても否めない。同じくBASIC系で、(仮称)十進BASIC
http://hp.vector.co.jp/authors/VA008683/
も249桁できるということ。でも日本語の文献があり過ぎる!(いや、暇つぶしだから、文献はないほうが。。。)
で、見つけたのがPARI/GP。
http://pari.math.u-bordeaux.fr/
ダウンロードしてインストールはすぐにできた。
\p 100
とかすると、100桁の精度になります。
(表示が長すぎるんで、表示のみ短くするのは、default(format, "g0.28");とか。)
でPiと打つと、
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
と表示。簡単。
繰り返しがCと似てる分混乱するんだが、
for (i=1, 5, print(i))
見たいな感じ。最初for(i=1, i<=5,...)とか書いて全然動かなかった。ネストも()で行うんで、
for (i=1,5,
for (j=1,5,
...
)
)
みたいな。関数の定義も特にreturnで返すんじゃなくて
f(x) = {
x;
}
なんて感じ。この関数内だけで使う変数はlocal(a,b);とか。
ベクトルと行列は
v=vector(5,i,0.); m=matrix(5,5,i.j,0.);
で定義して、v[1]やm[1,2]とか。これも微妙にCと違うので混乱。また添え字は1から始まるのも微妙に違う。
でもこれだけあればもうルンゲクッタくらい書けそうだ。やってみよう(続く)。
« 「Yの悲劇」を読んだ。 | トップページ | 35段14次のルンゲクッタ法をPARI/GPで計算(Lorenz方程式) »
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年7月13日 Pythonの高周波ライブラリscikit-rfがv1.8.0に、SamsungがGalaxy Z Fold7など発表→QualcommがSnapdragon 8 Eliteが使われていると発表、NGMNが基地局アンテナの推奨事項をまとめる、STMicroとMetalenzがメタサーフェス光学のライセンス締結(2025.07.14)
- Interface2025年8月号Pythonで体験!はじめての暗号を買った。上杉暗号からRSA、AES、DHなど、特に楕円曲線暗号についてはコードも実際に動かすところまで詳しくかかれていた。耐量子暗号や聞いたことなかったY-00暗号や関数型暗号も記載。(2025.07.10)
- 高周波・RFニュース 2025年7月8日 NordicとSercommのセルラーIoTモジュール、iFixitがFairphone 6を分解、スコアは10/10、RCR wireless newsのウェビナー2件(6GとIndustry4.0)、SEMCOが高耐圧C0G MLCCを車載急速充電に提案(2025.07.09)
- 高周波・RFニュース 2025年7月2日 5G Americasが6Gに向けセンシングと通信ホワイトペーパー発行、KYOCERA AVXが3dBハイブリッドカプラ発表、TDKが車載薄膜インダクタ発表、Nordicが1次電池向けPMIC発表、ローデ・シュワルツの6GとAI/ML解説記事(2025.07.02)
- 高周波・RFニュース 2025年6月30日 QualcommがAIを用いた6Rxアンテナ解説、Next G Allianceと日本のXGMFが5G,6Gで協力、5G Americasが25Q1で5G加入者増加と発表、TechInsigtsがHuawei Pura 80 Pro+分解、Qorvoが5-7GHzのWi-Fi 7 FEM発表(2025.06.30)
« 「Yの悲劇」を読んだ。 | トップページ | 35段14次のルンゲクッタ法をPARI/GPで計算(Lorenz方程式) »
コメント