裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

R で ペル方程式,Pell's equation

2021年06月16日 | ブログラミング

Mac OS Catalina,  バージョン 10.15.7 で gmp 0.6−2 が動かない。爆弾(エラー)が出る。

いろいろ探して,

M1チップ搭載のMacだとRのgmpパッケージが動かない?
https://rion778.hatenablog.com/entry/2021/03/02/214104

に,

install.packages("gmp", type = "source")

とすればよいと書いてあった。
私のマシンはポンコツなので,M1 なんかでないけど,とにかくやってみたら,動くようになった。

やってみたかったのは,R での Pell's equation プログラムを確かめることだ。

Pell's equation
https://rosettacode.org/wiki/Pell%27s_equation

ここには,いろいろな言語で書かれた,ペル方程式の解を求めるプログラムがのっているが,R によるプログラムがないので,以下のように翻訳してみた。
a, b = b, c みたいな構文がないのでちょっとダサいプログラムになる。

library(gmp)
pell = function(n) {
    x = as.bigz(floor(sqrt(n)))
    y = x
    z = 1
    r = 2 * x
    e1 = 1
    e2 = 0
    f1 = 0
    f2 = 1
    while(TRUE) {
        y = r * z - y
        z = (n - y * y) %/% z
        r = (x + y) %/% z
        temp = e1
        e1 = e2
        e2 = e2 * r + temp
        temp = f1
        f1 = f2
        f2 = f2 * r + temp
        a = f2
        b = e2
        temp = b
        b = a
        a = a * x + temp
        if (a * a - n * b * b == 1) {
            return(c(a, b))
        }
    }
}

pell(61)
# Big Integer ('bigz') object of length 2:
# [1] 1766319049 226153980

as.bigz("1766319049")^2 - 61 * as.bigz("226153980")^2
# 1

pell(109)
# Big Integer ('bigz') object of length 2:
# [1] 158070671986249 15140424455100

pell(181)
# Big Integer ('bigz') object of length 2:
# [1] 2469645423824185801 183567298683461940

pell(277)
# Big Integer ('bigz') object of length 2:
# [1] 159150073798980475849 9562401173878027020

無事に動いているようだ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

図形問題の解(その 2)

2021年06月16日 | ブログラミング

図形問題の解
https://blog.goo.ne.jp/r-de-r/e/6bd08cdd43e3a42155ce0ac444b414f0

鶏を割くに牛刀を以てす ではあるが,

件の図で,
f を原点(0, 0) として,
fb を f = 5/2 *x
fd を g = x / 4
bd を h = -2x + 9
とし,f - g, h - g の定積分を求め,2倍する

Julia の SymPy でやってみよう

using SymPy

@syms f g h x

f = 5/2 * x
g = x / 4
h = -2x + 9
2(integrate(f - g, (x, 0, 2)) + integrate(h - g, (x, 2, 4))) # 18

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村