目的 多角形の面積を計算する 使用法 Area(xy) 引数 xy 座標データ行列(1列目がx座標,2列目がy座標) 座標点は時計回りに順番に用意する ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/area.R", encoding="euc-jp") # 多角形の面積を計算する Area <- function(xy) # 座標データ行列(1列目がx座標,2列目がy座標) { # 時計回りの順番で用意する n <- nrow(xy) x <- xy[,1] # 0.5 * Σ ((x[2], x[3], ..., x[n], x[1]) - (x[n], x[1], x[2], ..., x[n-1])) * xy[,2] # sum(sapply(1:n, function(i) x[i%%n+1]-x[(i+n-2)%%n+1])*xy[,2])/2 sum((c(x[-1], x[1])-c(x[n], x[-n]))*xy[,2])/2 } 使用例 # 下図の色を付けた部分の面積を求める > xy <- matrix(c(9, 4, 7, 5, 6, 4, 7, 2, 5, 1, 2, 3, 3, 4, 1, 5, 1, 7, 3, 7, 4, 6, 7, 8), byrow=TRUE, nc=2) > Area(xy) [1] 28.5 # 下図の色を付けた部分の面積(標準正規分布のΦ(1.96))の近似値を求める > x <- seq(0, 1.96, length=100) > y <- c(0, dnorm(x), 0) > x <- c(0, x, 1.96) > Area(cbind(x, y)) [1] 0.4749984 # 上の指示で,length を大きくすると精度が上がる > pnorm(1.96)-0.5 # 正確な値はこうすれば求まる [1] 0.4750021