2015年8月26日水曜日

対角優位行列とゲルシュゴリンの定理

「対角優位行列は半正定値行列である」

という命題が成り立つ方法を考えていたが、ゲルシュゴリンの定理を使ったら、あっというまに示せることがわかった。

やっぱり、いろんな定理を知っている、ということも大事なものである。

2015年8月11日火曜日

Julia で多倍長計算

Julia でも多倍長計算できる、ということでチェックしてみた。

基本的には BigFloat を使えば簡単に行うことができて、with_bigfloat_precision を使えば特定の範囲だけ精度を変更できる。

with_bigfloat_precision(30) do
    x = BigFloat(0.1)
    i = 0
    while true
        i += 1
        x = x/2
        y = e^(-x^2)
        print(i)
        print(",")
        print(x)
        print(",")
        println(y)
        if y==1
            break
        end
    end

end

このようにすると、30ビット分の精度で計算できるし、30を1000にすれば、もちろんもっと精度が出せる。

ちなみに、

X = [BigFloat(rand()) for i=1:5, j=1:5]

とすれば、5x5 の行列なども作れる。
足し算や inv など基本的な操作はすでに行えるが、eig や chol のあたりはまだ実行できない様子である。

行列周りが完全ではないけど、いろいろとできる範囲はそれなりに広くて、なかなかに面白そうな機能だ。