魚の漁獲量を、魚の個体の大きさと、魚の群れの規模から考えたい。
個体の大きさについて
ベルタランフィモデルによると、ある定数、を用いて
となる微分方程式ができる。これは、ベルヌーイの微分方程式
の特別な場合らしい。変数変換、つまりとすることで
という線型1階微分方程式に帰着できる。これは、積分因子を用いて
となる。
ここで、のときとすれば、である。
また、とするとであるから、結局
となる。
群れの規模について
稚魚である初期状態の群れが、時間経過でどうなるかは、
と考えていいだろう。
ここで、漁獲努力は行うけれども、ある時刻才以下の魚は小さいので獲らない、とすれば、
のとき、(での新しい初期値)
のとき、(魚の減少はとより早くなる)
となる。漁獲高を求めるには、をすべて足し合わせればいいから、才で獲られてしまった魚の数をとすれば
という、とを変数とする関数になる。
ただし、魚の供給は考えていない。
R <- 0.003 #魚の群れの減衰定数 n0 <- 10 #魚の群れの初期値 beta <- 0.25 #魚の大きさの定数 winf <- 10000 #魚の最大の大きさ Mmin <- 20 #漁獲していい最小の年齢 Gyokaku <- function(M, Fg){ time <- seq(M, 100000, length=1) result <- winf*(1 - exp((-beta/3)*time))*Fg*n0*exp(-R*M)*exp(-(R + Fg)*(time - M)) return(sum(result)) } len <- 300 M <- seq(1, 300, length=len) Fg <- seq(0, 10, length=len) GyokakuRes <- matrix(0, nr=length(M), nc=length(Fg)) for(i in 1:nrow(GyokakuRes)){ for(j in 1:ncol(GyokakuRes)){ GyokakuRes[i, j] <- Gyokaku(M[i], Fg[j]) } } GyokakuRes[1:Mmin, ] <- 0 image(M, Fg, GyokakuRes, xlab="Fish age", ylab="Fish catch effort") library(rgl) col.slice <- 15 #濃度段階の設定。 colpalet <- rainbow(col.slice)[GyokakuRes/(max(GyokakuRes)) * col.slice + 1] persp3d(GyokakuRes, col=colpalet, xlab="Fish age", ylab="Fish catch effort" , zlab="Fish catch")