« 2019年1月 | トップページ | 2019年3月 »

2019年2月28日 (木)

[R]小数を整数に変換する関数の機能の違い

Rで小数を整数に変換する関数は4つあり、それぞれ機能が異なる。

trunc
→指定の数値から小数点以下を切り捨てる
floor
→指定の数値以下で最大の値を返す
ceiling
→指定の数値以上で最小の値を返す
round
→JIS Z 8401「数値の丸め方」に基づく丸め

> d <- c(2.4, 2.5, 2.6, -2.4, -2.5, -2.6)
> trunc(d)
[1]  2  2  2 -2 -2 -2
> floor(d)
[1]  2  2  2 -3 -3 -3
> ceiling(d)
[1]  3  3  3 -2 -2 -2
> round(d)
[1]  2  2  3 -2 -2 -3

「切り捨て」はtrunc関数、「切り上げ」はceiling関数になる。round関数は四捨五入ではなく、いわゆる五捨五入であることに注意。

2019年2月21日 (木)

[C#]コマンドラインでコンパイルする

C#やVisual Basicなどの.NET Frameworkのプログラミング言語は、統合開発環境(IDE)だけではなく、コマンドラインでも使用することができる。

2019年2月時点の最新版はバージョン4台であり、コマンドラインで使用できるコンパイラーの実行ファイルは以下のフォルダーに置かれている。

<32ビット版>
C:\Windows\Microsoft.NET\Framework\v4.0.30319
<64ビット版>
C:\Windows\Microsoft.NET\Framework64\v4.0.30319

コマンドラインで使用するには、PATH環境変数に上記のいずれかのフォルダーを追加する。

C#のコンパイラーの実行ファイルは「csc.exe」である。

2019年2月19日 (火)

[R]対角行列を作る

diag関数を使う。引数にスカラーを与えると、与えた数(自然数)を行数とした対角成分が1、対角成分以外は0の行列を作成する。引数にベクトルを与えると、ベクトルの値の順番に対角成分を持つ対角行列を作成する。

> diag(3)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
> diag(c(1, 2, 3))
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    2    0
[3,]    0    0    3

引数に既存の行列を与え、スカラー、ベクトルをそれぞれ代入することで、対角成分だけの値を置き換えることも可能である。

> mx <- matrix(c(1, 2, 3, 4), nrow = 2)
> mx
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> diag(mx) <- 9
> mx
     [,1] [,2]
[1,]    9    3
[2,]    2    9
> diag(mx) <- c(7, 8)
> mx
     [,1] [,2]
[1,]    7    3
[2,]    2    8

2019年2月16日 (土)

[R]転置行列を作成する

t関数を使う。

> v <- c(1, 2, 3, 4, 5, 6)
> mx <- matrix(v, nrow = 2, byrow = TRUE)
> mx
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> t(mx)
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

2019年2月15日 (金)

[R]行列式の値の計算

det関数を使用する。

> v <- c(1, 2, 3, 4, 5, 6, 7, 8, 8)
> mx1 <- matrix(v, nrow = 3, byrow = TRUE)
> mx1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    8
> det(mx1)
[1] 3

行列式の定義より、正方行列でなければ行列式の値は計算できない。

> v <- c(1, 2, 3, 4, 5, 6)
> mx2 <- matrix(v, nrow = 2, byrow= TRUE)
> mx2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> det(mx2)
determinant.matrix(x, logarithm = TRUE, ...) でエラー:
   'x' は正方行列でなければなりません

2019年2月13日 (水)

[R]行列を作成する

matrix関数を使用して数値ベクトルから行列を作成する。

> v <- c(1, 2, 3, 4, 5, 6)
> mx1 <- matrix(v, nrow = 2, byrow = TRUE)
> mx1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> mx2 <- matrix(v, nrow = 3, byrow = TRUE)
> mx2
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

作成する行列の行数をnrowオプションに与える。列数で与えるncolオプションもある。ベクトルの個数、nrow、ncolに矛盾が生じた場合は、ベクトルは作成されずにエラーとなる。byrowオプションをTRUEにすることで、ベクトルの値が行列の成分に代入させる順番が、1行目、2行目、・・・、という順になる。これをFALSEもしくはオプションそのものをしてしないと、1桁目、2桁目、・・・、の順に代入することになる。

それが行列か否かの判定は、is.matrix関数で行うことができる。

> is.matrix(v)
[1] FALSE
> is.matrix(mx1)
[1] TRUE

2019年2月 6日 (水)

[Fortran]小数を整数に変換するint関数の挙動

int関数は小数を整数に変換する。gfortranにおけるその機能の挙動確認。
以下のプログラムを動作してみる。

program test
    write(*,*) int(2.4d0)
    write(*,*) int(2.5d0)
    write(*,*) int(2.6d0)
    write(*,*) int(-2.4d0)
    write(*,*) int(-2.5d0)
    write(*,*) int(-2.6d0)
end program

(出力結果)

2
2
2
-2
-2
-2

上記のとおり、単純に小数点以下を切り捨てているだけである。0に近い値へ寄せるようなことなどはしていない。

« 2019年1月 | トップページ | 2019年3月 »

無料ブログはココログ

■■

■■■