R(数学)

2024年4月 2日 (火)

[R]二つの集合MとNの共通部分M∩Nと和集合M∪Nを得る

共通部分(どちらにも属している要素の集合)M∩Nを得るにはintersect関数を、和集合(少なくとも一方に属する要素の集合)M∪Nを得るにはunion関数を得る。以下、例。

> m <- seq(2, 18, by = 2)
> n <- seq(3, 18, by = 3)
> print(m)
[1] 2 4 6 8 10 12 14 16 18
> print(n)
[1] 3 6 9 12 15 18
> union(m, n)
[1] 2 4 6 8 10 12 14 16 18 3 9 15
> intersect(m, n)
[1] 6 12 18

ベクトルの要素に対して行う処理のため、当然、要素が数値以外でもかまわない。

> s1 <- c("スーパークリーク", "メイショウドトウ", "サクラチヨノオー")
> s2 <- c("メイショウドトウ", "サクラチヨノオー", "メジロアルダン")
> union(s1, s2)
[1] "スーパークリーク" "メイショウドトウ" "サクラチヨノオー" "メジロアルダン"
> intersect(s1, s2)
[1] "メイショウドトウ" "サクラチヨノオー"

2023年2月 3日 (金)

[R]等差数列を作成する

seqコマンドを使う。引数は1~3つ与えることができ、それぞれ以下のようになる。最後の例のとおり、最後に公差を加えて末項に一致しない場合は、その1つ前の項までが作成される。

  • seq(初項)
  • seq(初項, 末項) ※公差は1
  • seq(初項, 末項, 公差) ※末項に届かないときはその1つ前の項まで
> seq(3)
[1] 1 2 3
> seq(2, 5)
[1] 2 3 4 5
> seq(3, 12, 4)
[1] 3 7 11

負数や実数の指定も可能。

> seq(-1, -11, -2)
[1] -1 -3 -5 -7 -9 -11
> seq(1.2, 2.8, 0.4)
[1] 1.2 1.6 2.0 2.4 2.8

2022年8月16日 (火)

[R]三角関数の値を求める

cos関数(余弦関数)、sin関数(正弦関数)、tan関数(正接関数)を使う。角θの値が、次の各値の時、cosθ、sinθ、tanθを求めてみる。


θ=0, π/2, π, 2π


> theta <- c(0, pi / 2, pi, 2 * pi)
> cos(theta)
[1] 1.000000e+00 6.123032e-17 -1.000000e+00 1.000000e+00
> sin(theta)
[1] 0.000000e+00 1.000000e+00 1.224606e-16 -2.449213e-16
> tan(theta)
[1] 0.000000e+00 1.633124e+16 -1.224647e-16 -2.449294e-16

~-17や~-16は計算上限りなく小さい値が求まった(≒0.0)ということであり、実際にそのような値が精度良く求まったということではない。~+16(≒∞)も同様である。

2022年8月14日 (日)

[R]組合せを求める

choose関数を使う。n個からr個とった組合せの総数を求める。

5C2(=10)、7C3(=35)、10C2(=45)を求めてみる。

> choose(5, 2)
[1] 10
> choose(7, 3)
[1] 35
> choose(10, 2)
[1] 45

2022年8月 8日 (月)

[R]対数の値を求める

log関数を使う。aを底とするNの対数の求め方は以下のとおり。

log(N, a)

log33(=1)、log51(=0)、log3243(=5)の値をそれぞれ求める。

> log(3, 3)
[1] 1
> log(1, 5)
[1] 0
> log(243, 3)
[1] 5

底は省略することができる。その場合はeを底とする自然対数が求まる。

> log(2)
[1] 0.6931472
> log(2, exp(1))
[1] 0.6931472

常用対数(10を底とする対数)を求めるlog10関数、2を底とする対数を求めるlog2関数もある。

> log10(100)
[1] 2
> log(100, 10)
[1] 2
> log2(20)
[1] 4.321928
> log(20, 2)
[1] 4.321928

2022年7月31日 (日)

[R]順列を求める

Rには標準では順列の総数を求める関数は搭載されていない。階乗を使った式で表すことができるため、階乗を求めるfactorial関数を使用して、順列の総数を求める関数permuを自作する。

> permu <- function(n, r) {factorial(n) / factorial(n - r)}

5P2(=20)、5P3(=60)を求めてみる。

> permu(5, 2)
[1] 20
> permu(5, 3)
[1] 60

なおn > r、0!=1である。n=rの場合は、階乗そのものの計算になる。

2022年7月14日 (木)

[R]累乗を計算する

^演算子か**演算子を使う。

> 2 ^ 2
[1] 4
> 2 ^ 3
[1] 8
> 2 ^ -2
[1] 0.25
> 2 ** 2
[1] 4
> 2 ** 3
[1] 8
> 2 ** -2
[1] 0.25

2022年7月13日 (水)

[R]平方根を計算する

sqrt関数を使う。

> sqrt(2)
[1] 1.414214
> sqrt(3)
[1] 1.732051
> sqrt(4)
[1] 2
> sqrt(0)
[1] 0
> sqrt(1 / 2)
[1] 0.7071068
> sqrt(-2)
[1] NaN
警告メッセージ:
sqrt(-2) で: 計算結果が NaN になりました

2022年7月12日 (火)

[R]絶対値を取得する

abs関数を使う。引数には数値型ベクトルを与える。

> abs(10)
[1] 10
> abs(-20)
[1] 20
> abs(3.3) - abs(-3.3)
[1] 0
> abs(c(100, -200))
[1] 100 200

2018年10月19日 (金)

[R]任意の式の導関数の値を求める

expression関数、eval関数、D関数を組み合わせて使う。以下の例では、「x ^ 4」(xの4乗)を式と見なしてxの関数とし、関数f(x)とその導関数f'(x)のx = 3におけるそれぞれの値を求めている。関数f(x)=x4であり、その導関数を求める(微分をする)とf'(x) = 4x3となる。x = 3における関数f(x)と導関数f'(x)の値を求めている。

> shiki <- expression(x ^ 4)
> f <- function(x) eval(shiki)
> fp <- function(x) eval(D(shiki, "x"))
> f(3)
[1] 81
> fp(3)
[1] 108

手計算では、f(x) = 3×4 = 81、f'(x) = 4 × 33 = 4 × 27 = 108となる。結果は一致している。

より以前の記事一覧

無料ブログはココログ

■■

■■■