今日は窒素酸化物濃度(concentrasion of NOX)などを計算する解析的な低煙源拡散式(analytic diffusion formula from low-height source)のパラメータの推定(prediction of parameters)のために用いたことがある非線形最小二乗法(non-linear least square method)について解説してみたいと思います。(直角風のJEA式)
地上の道路上の自動車(automobiles on the road)から発生する窒素酸化物などを,単位長さ当たり(per unit length)の発生源(source)がQ(Nm3/(ms)のy軸上で有効煙源高さ(effective height):he=0(m)の無限線煙源(infinite line-souce)としてモデル化(modelize)し,道路に直角のx方向に風が吹いている設定で(wind direction is x normal to road=y-axis),風速(wind speed)も拡散係数(diffusion coefficient)も高さ(height from ground)z(m)のベキ乗則に従って鉛直上方に向かって増加する(increase by power of z)というモデルでの拡散方程式(diffusion equation)の解(solution)を,垂直距離(distance)x(m)と高さz(m)の関数と考えて濃度C(x,z)で表すと,これはAをQに比例するあるパラメータ(A is a parameter proportional to Q)として,C(x,z)=Ax-sexp(-Bzp/x)という式(Robertsの式)で表わされる,ことがわかります。
いろいろな環境(circumstance)の下で数回にわたって行なわれた実際の実験(experiments)時の煙源長さ(source-length)はもちろん有限(finite)なのですが,とりあえずこれを無限大長さ(infinite length)で近似します。実は誤差関数(Gaussian error function)でもって有限長さの効果(finite-legth effect)を取り入れることもできるのですが,今日の話題では割愛します。実験はトレーサーガス(tracer gas)を地上にある有限長さの直線状のパイプ(linear pipe)に均等間隔(equal distance)で開けた穴(holes)から拡散させるというものです。
そのパイプ状の発生源をy軸としたとき,n個の観測点座標(coordinate of n-obserbation points):(xi,zi)(i=1,2,...n)において,風向が直角に近い環境のときの実測濃度(measured concentration):ciと先に設定した低煙源拡散式による計算値(calculated value):Ci=C(xi,zi)とを比較することによって,逆にその式のパラメータA,s,B,pを推定します。
具体的には,C(x,z)=Ax-sexp(-Bzp/x)の右辺をf(A,s,B,p;x,z)と書いて,Ci=f(A,s,B,p;xi,zi)とし,計算値と実測値の誤差の二乗和(sum of square of error):S(A,s,B,p)=∑(Ci-ci)2を最小(minimum)にするパラメータA,s,B,pを求めるわけです。これは次に述べる非線形最小二乗法のパラメータ数が4個のときの例(example)になっています。
ここではより一般的にパラメータがr個あるとし,それらを順にA1, A2,..Ar とします。上のケース(case)ではr=4で,A1=A,A2=s,A3=B,A4=pです。そして,Ci=C(xi,zi)=f(A1,A2,..Ar;xi,zi)とし,S(A1,A2,..Ar)≡∑(Ci-ci)2と定義するわけです。
誤差の二乗和Sが最小となる条件は通常の線形回帰(linear regression)の計算の場合と同様,Fi(A1,A2,..Ar)≡∂S/∂Ai=2∑(Ck-ck)∂Ck/∂Ai=0 (i=1,2,..r)で与えられますから,この r 個の連立方程式(simultaneous equations)を解くことにより,未知数(unknown numbers)A1,A2,..Arを求めることが主目的となります。これらの方程式は一般に非線形ですから,こうした非線形回帰によるパラメータ推定の方法を非線形最小二乗法と呼ぶことにします。
具体的には,Fi(A1,A2,..Ar)=0 (i=1,2,..r)を線形近似(linear approximation)することにより多変数のニュートン法(Newtonian method of many variables)を実行します。
そこで,まず連立方程式を線形近似します。すなわち,初期値(initial values)としてAj=Aj0 を適当に与えた後に, 0 = Fi(A1,A2,..Ar)=Fi(A10,A20,..Ar0)+∑(∂Fi/∂Aj)|A=A0(Aj-Aj0)と近似します。
これを行列形式(matrix form)で書くため,Dという行列(matrix)をD=(dij)≡(∂Fi/∂Aj)で定義し,特にD0=(dij0)≡(∂Fi/∂Aj)|A=A0とします。そして,列ベクトルAをA≡t(A1,A2,..Ar)で定義し,特にA0≡t(A10,A20,..Ar0)として,さらにFi(A10,A20,..Ar0)を成分とする同様な列ベクトルをF0と定義すれば,先の線形近似は 0=F0+D0(A-A0)と表わされます。
これを単純に解くと,A=A0-D0-1F0と近似されることになります。ここで,D0-1はもちろんD0の逆行列(inverse matrix)です。
得られたA=A0-D0-1F0を,改めてA0として代入(substitute)してD0-1F0を計算し,A=A0-D0-1F0を収束(converge)するまで繰り返し(iterate)ます。すなわち,Am+1=Am-Dm-1Fmの漸化式(recurrence formula)において誤差(error)|Am+1-Am|の相対値(rate)が十分小さく(sufficiently small)なるまで繰り返し計算すればAm=t(A1m,A2m,..Arm)のm→∞ での極限値(limit)としてFi(A1,A2,..Ar)=0 (i=1,2,...r)を満足するA=t(A1,A2,..Ar)が得られるというわけです。
さらに実際には収束を速くするために加速係数(acceleration coefficient):wを与えてAm+1=Am-wDm-1Fmとする方法(method)を用いたほうがいいと思います。
実際のr=4 の計算では,かつてFortranを使ってプログラミング(programming)しましたが,初期値を適切に取ると各環境のケースについて大体十数回の繰り返し計算でパラメータの推定値が得られました。そして濃度の実測値とその推定パラメータによる計算値との相関係数(correlation coefficient)としては,0.9前後の値が得られ,回帰係数(regression coefficient)の値も0.8 から 1.2程度となって,仮定した計算式が良い近似になることがわかりました。
http://fphys.nifty.com/ (ニフティ「物理フォーラム」サブマネージャー)
http://blog.with2.net/link.php?269343 (ブログ・ランキングの投票)↑ここをクリックすると投票したことになります。