3. できるだけ単純で、かつ実際を反映したモデルを設定する ② 時間?空間スケールの決定 ???見たいプロセスにあったスケール ③ モデルカレンシーの決定??? 精確さと簡便さを兼ねそろえたカレンシー STEP1 モデルのフローチャートを書く ① モデルの成分の決定 ???以下の項目を設定する a) state variables :状態変数 モデルの変数 b) forcing function :強制関数 あらかじめモデルに与えられるデータセット c) output variables :出力変数 モデルの解として出力されるデータ
13. 2.5 生態学的相互作用の式の構築 例:湖の生態系においての植物プランクトンのフロー ②二次反応? Fig2.7 : Uptake of ammonium by phytoplankton represented as a ”first-order reaction” (A) and as a ”second-order reaction”(B) ( A ) f 1 = a ?[ NH 4 + ] この式ではアンモニアが存在すると植物プランクトンが自然発生することに??? ( B ) f 1 = a ?[ NH 4 + ]? PHYTO ... アンモニアと植物プランクトンをあわせて考えてみる
36. 2.9.2 Aquaphy 、藻類のアンバランスな成長に関する生理モデル( P58 ) # load package with the integration routine: require(deSolve) まず deSolve よみこまないと! #----------------------# # the model equations: # #----------------------# model<-function(t,state,parameters) 関数の定義(ステップ 3 ) { with(as.list(c(state,parameters)),{ # unpack the state variables, parameters # PAR, on-off function depending on the hour within a day hourofday <- t%%24 PAR <- ifelse (hourofday < dayLength, parMean , 0) ## the output variables PhytoC <- PROTEIN + RESERVE + LMW # all components contain carbon PhytoN <- PROTEIN * rNCProtein # only proteins contain nitrogen NCratio <- PhytoN / PhytoC Chlorophyll <- PhytoN * rChlN TotalN <- PhytoN + DIN ChlCratio <- Chlorophyll / PhytoC
37. ## the rates, in mmol/hr PartLMW <- LMW / PhytoC Limfac <- max(0,min(1,(maxpLMW -PartLMW)/(maxpLMW-minpLMW))) PhotoSynthesis <- maxPhotoSynt*Limfac*(1-exp(alpha*PAR/maxPhotoSynt)) * PROTEIN Exudation <- pExudation * PhotoSynthesis MonodQuotum <- max(0,LMW / PROTEIN - minQuotum) ProteinSynthesis <- maxProteinSynt*MonodQuotum * DIN / (DIN+ksDIN) * PROTEIN Storage <- maxStorage *MonodQuotum * PROTEIN Respiration <- respirationRate * LMW + pResp*ProteinSynthesis Catabolism <- catabolismRate * RESERVE ## the rates of change of state variables; includes dilution effects (last term) ここは概念的式!(ステップ 2 ) dLMW <- ( PhotoSynthesis + Catabolism - Exudation - Storage - Respiration - ProteinSynthesis - dilutionRate * LMW) dRESERVE <- Storage - Catabolism - dilutionRate * RESERVE dPROTEIN <- ProteinSynthesis - dilutionRate * PROTEIN dDIN <- -ProteinSynthesis * rNCProtein - dilutionRate * (DIN - inputDIN) ## the output, as a list list(c(dDIN,dPROTEIN,dRESERVE,dLMW), ## the rate of change of state variables c(PAR = PAR, ## the ordinary variables TotalN = TotalN, PhotoSynthesis = PhotoSynthesis, NCratio = NCratio, ChlCratio = ChlCratio, Chlorophyll = Chlorophyll)) }) } # end of model
38. #-----------------------# # the model parameters: # パラメーターを指定してやる #-----------------------# parameters<-c(maxPhotoSynt =0.125, #molC/molC/hr Maximal protein C-specific rate of photsynthesis at 20 dg rMortPHY =0.001, #/hr Mortality rate of Phytoplankton (lysis and zooplankton grazing) alpha =-0.125/150, # ? Einst/m2/s/hr Light dependency factor pExudation =0.0, #- Part of photosynthesis that is exudated maxProteinSynt =0.136, #molC/molC/hr Maximal Biosynthetic C-specific N-uptake rate ksDIN =1.0, #mmolN/m3 Half-saturation ct of N uptake Phytoplankton minpLMW =0.05, #molC/molC Minimum metabolite/totalC ratio in algae maxpLMW =0.15, #molC/molC Maximum metabolite/totalC ratio in algae minQuotum =0.075, #molC/molC Minimum metabolite/Protein ratio for synthesis maxStorage =0.23, #/h Maximum storage rate for Phytoplankton respirationRate=0.0001, #/h Respiration rate of LMW pResp =0.4, #- Part of protein synthesis that is respired (cost of biosynthesis) catabolismRate =0.06, #/h Catabolism rate of Phytoplankton reserves dilutionRate =0.01, #/h dilution rate in chemostat rNCProtein =0.2, #molN/molC Nitrogen/carbon ratio of proteins inputDIN =10.0, #mmolN/m3 DIN in inflowing water rChlN =1, #gChl/molN Chl to nitrogen ratio parMean =250., # ? molPhot/m2/s PAR during the light phase dayLength =15. #hours Length of illuminated period )
39. #-------------------------# # the initial conditions: # state variable たちの初期値を設定 #-------------------------# # assume the amount of reserves = 50% amount of proteins # 10% LMW state <-c(DIN =6., #mmolN/m3 PROTEIN =20.0, #mmolC/m3 RESERVE =5.0, #mmolC/m3 LMW =1.0) #mmolC/m3 #----------------------# # RUNNING the model: # 実際のモデルをどう走らせるか(時間)指定 #----------------------# times <-seq(0,24*10,1) out <-as.data.frame(ode(state,times,model,parameters)) #------------------------# # PLOTTING model output: # 表示の仕方(中略) #------------------------# par(mfrow=c(2,2), oma=c(0,0,3,0)) # set number of plots (mfrow) and margin size (oma) col <- grey(0.9) ii <- 1:length(out$PAR) # output over entire period plot (times[ii],out$Chlorophyll[ii],type="l",main="Chlorophyll",xlab="time, hours",ylab=" ? g/l") polygon(times[ii],out$PAR[ii]-10,col=col,border=NA);box() lines (times[ii],out$Chlorophyll[ii] ,lwd=2 )
40. 実際に R を使って モデルを動かしてみよう! text P.63-69 担当:小林 嵩丸( B4 )
41. 2.10.1 数式を理解する R はグラフの作成に非常に適している。 数式の意味を理解するためには、数式のグラフ化は最も簡単な方法である。 r<-0.1 K<-10 par(mfrow=c(1,1)) par(mar=c(5.1,4.1,4.1,2.1)) curve (expr= r*x*(1-x/K),from=0,to=20,lwd=2, xlab="density, N",ylab="rate of change, dN/dt") legend ("topright",c("K=10","r=0.1")) 例:環境容量 K と個体数 N の増加速度 パラメータの 設定 数式?計算範囲の 設定 凡例の追加 計算なし! とても簡単! よくわからない…
43. 例題 1 :栄養制限下でのバッチ培養モデル 閉鎖系培養ビンにおける植物プランクトンの培養(バッチ培養)をモデル化する。 植物プランクトンの成長は溶存無機態窒素( DIN )によってのみ制限されており、他の栄養素や光は決して制限とならない。
44. PHYTO DETRITUS DIN f 1 f 3 f 2 状態変数を決定する 今回は、 ① PHYTO (植物プランクトン) ② DIN (溶存無機態窒素) ③ DETRITUS (デトリタス) の 3 つを選んだ。 2. フローチャートを描く f 1 : PHYTO による DIN の吸収 f 2 : PHYTO の死亡 f 3 : DETRITUS の無機化 3. 各状態変数の変化を示す (変化) = (流入)?(流出) dPHYTO = f 1 ? f 2 dDETRITUS = f 2 ? f 3 dDIN= f 3 ? f 1 4. フラックスに数式を与える モデルを作る
48. 状態変数を決定する テキストにある 4 つを使う ① POC (粒子状デトリタス) ② HMWC (高分子溶存有機炭素) ③ LMWC (低分子溶存有機炭素) ④ BACT (微生物) 2. フローチャートを描く f 1 : POC の流入 f 2 : BACT による POC の加水分解 f 3 : BACT による HMWC の加水分解 f 4 : BACT による LMWC の摂食 f 5 : BACT の活動呼吸 f 6 : BACT に対する補食 f 7 : BACT の基礎呼吸 3. 各状態変数の変化を示す (変化) = (流入)?(流出) dPOC = f 1 ? f 2 dHMWC = f 2 ? f 3 dLMWC = f 3 ? f 4 dBACT = f 4 - f 5 - f 6 - f 7 4. フラックスに数式を与える f 1 f 2 f 3 f 4 f 5 f 6 f 7 モデルを作る
まず心得として、モデルはリアリズムをもちながら、なるべく単純でなければならない。概念的モデルを作るときには以下の 3 点を決定する必要がある。 ① 3 種類のモデルの成分? a 状態変数はモデルの変数であり、図中には長方形のボックスで示されている、これらは矢印でつながれている。矢印は状態変数間のフローもしくは相互作用である。 b- 強制関数 図では点線で示されている。 c?出力変数 図では○で囲まれている ② 、みたいプロセスにあったスケールを選択する。 ③ 、測定がなるべく簡単で、そのモデルにあったカレンシーを選択する。