Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
1
コブ・ダグラス生産関数の費用,限界費用,派生需要
2地域・2生産物・2生産要素財 X, Y 市場における代表的企業の生産決定
(*すべての設定を初期化する*)
Clear["Global`*"];
生産関数,費用,派生需要■ 地域別の変数の区別
renameState1 = {x → x11, y → y11, w → w1, r → r1};renameState2 = {x → x22, y → y22, w → w2, r → r2};
(*X, Y とも収穫一定*)
parmData0 = {a1 → 5 / 10, b1 → 5 / 10, a2 → 5 / 10, b2 → 5 / 10};parmData1 = {a1 → 7 / 10, b1 → 3 / 10, a2 → 3 / 10, b2 → 7 / 10};
(*X 収穫一定, Y 収穫逓増*)
parmData2 = {a1 → 4 / 10, b1 → 6 / 10, a2 → 7 / 10, b2 → 4 / 10};parmData3 = {a1 → 7 / 10, b1 → 3 / 10, a2 → 3 / 10, b2 → 8 / 10};
(*X, Y とも収穫逓増*)
parmData4 = {a1 → 7 / 10, b1 → 4 / 10, a2 → 4 / 10, b2 → 7 / 10};parmData5 = {a1 → 8 / 10, b1 → 4 / 10, a2 → 4 / 10, b2 → 8 / 10};
intoParmData1 = parmData1;intoParmData2 = parmData1;
Print"地域1における生産関数のパラメータは ", intoParmData1
Print"地域2における生産関数のパラメータは ", intoParmData2
地域1における生産関数のパラメータは a1 →710
, b1 →310
, a2 →310
, b2 →710
地域2における生産関数のパラメータは a1 →710
, b1 →310
, a2 →310
, b2 →710
■ 地域1の生産関数の特定化
■ コブ・ダグラス型生産関数$Assumptions = {a1 > 0, a2 > 0, b1 > 0, b2 > 0,
r > 0, w > 0, Lx > 0, Ly > 0, Kx > 0, Ky > 0, X0 > 0, Y0 > 0};cx = (a1^(-a1)) * (b1^(-b1));cy = (a2^(-a2)) * (b2^(-b2));funcProX = cx * Lx^a1 * Kx^b1;funcProY = cy * Ly^a2 * Ky^b2;dataProX1 = funcProX /. intoParmData1;dataProY1 = funcProY /. intoParmData1;Print"財X,Y,Zの生産関数"Print[" X = ", dataProX1]Print[" Y = ", dataProY1]
財X,Y,Zの生産関数
X =10 Kx3/10 Lx7/10
33/10 × 77/10
Y =10 Ky7/10 Ly3/10
33/10 × 77/10
■ 財X,Yの生産の技術的限界代替率mpLx = D[funcProX, Lx];mpKx = D[funcProX, Kx];mpLy = D[funcProY, Ly];mpKy = D[funcProY, Ky];tMRSx = mpLx / mpKx;tMRSy = mpLy / mpKy;
2 (1.1)-(1.4) 環境税・基礎.nb
■ 財Xの生産費用・限界費用・平均費用を求めるdataK = Kx /. Solve[w / r ⩵ tMRSx, Kx];product = Simplify[funcProX /. Kx -> dataK[[1]]];dataL = Lx /. Solve[product ⩵ x, Lx];dataK = dataK /. Lx → dataL[[1]];costFx = w * dataL[[1]] + r * dataK[[1]];dataCX = Simplify[costFx /. intoParmData1];dataMCX = Simplify[D[costFx, x] /. intoParmData1];dataACX = Simplify[(costFx / x) /. intoParmData1];dataCX1 = dataCX /. renameState1;dataMCX1 = dataMCX /. renameState1;dataACX1 = dataACX /. renameState1;Print"地域1でのXの生産の費用は ", dataCX1
Print" 限界費用は ", dataMCX1
Print" 平均費用は ", dataACX1, " である."
地域1でのXの生産の費用は r13 w171/10 x11
限界費用は r13 w171/10
平均費用は r13 w171/10 である.
■ 財Yの生産費用と限界費用を求めるdataKy = Ky /. Solve[w / r ⩵ tMRSy, Ky];producty = Simplify[funcProY /. Ky -> dataKy[[1]]];dataLy = Ly /. Solve[producty ⩵ y, Ly];dataKy = dataKy /. Ly → dataLy[[1]];costFy = w * dataLy[[1]] + r * dataKy[[1]];dataCY = Simplify[costFy /. intoParmData1];dataMCY = Simplify[D[costFy, y] /. intoParmData1];dataACY = Simplify[(costFy / y) /. intoParmData1];dataCY1 = dataCY /. renameState1;dataMCY1 = dataMCY /. renameState1;dataACY1 = dataACY /. renameState1;Print"地域1の Y の生産費用は ", dataCY1
Print" 限界費用は ", dataMCY1
Print" 平均費用は ", dataACY1, " である."
地域1の Y の生産費用は r17 w131/10 y11
限界費用は r17 w131/10
平均費用は r17 w131/10 である.
■ 財Xの生産における要素投入の最適化demandKx = Simplify[dataK[[1]] /. intoParmData1];demandLx = Simplify[dataL[[1]] /. intoParmData1];
(1.1)-(1.4) 環境税・基礎.nb 3
■ 財Yの生産における要素投入の最適化demandKy = Simplify[dataKy[[1]] /. intoParmData1];demandLy = Simplify[dataLy[[1]] /. intoParmData1];
■ 企業数1のときの生産要素 L ,K の総派生需要量demandLx1 = demandLx /. renameState1;demandLy1 = demandLy /. renameState1;demandKx1 = demandKx /. renameState1;demandKy1 = demandKy /. renameState1;dataTDL1 = demandLx1 + demandLy1;dataTDK1 = demandKx1 + demandKy1;Print"地域1での生産物の生産量が (x11, y11) のとき"
Print" 生産要素 L の派生需要量は "
Print[" ", dataTDL1]Print" 生産要素 K の派生需要量は "
Print[" ", dataTDK1]
地域1での生産物の生産量が (x11, y11) のとき
生産要素 L の派生需要量は
710
r1w1
3/10
x11 +310
r1w1
7/10
y11
生産要素 K の派生需要量は
310
w1r1
7/10
x11 +710
w1r1
3/10
y11
■ 地域2の生産関数の特定化
■ コブ・ダグラス型生産関数dataProX2 = funcProX /. intoParmData2;dataProY2 = funcProY /. intoParmData2;Print"財X,Y,Zの生産関数"Print[" X = ", dataProX2]Print[" Y = ", dataProY2]
財X,Y,Zの生産関数
X =10 Kx3/10 Lx7/10
33/10 × 77/10
Y =10 Ky7/10 Ly3/10
33/10 × 77/10
4 (1.1)-(1.4) 環境税・基礎.nb
■ 財X,Yの生産の技術的限界代替率mpLx = D[funcProX, Lx];mpKx = D[funcProX, Kx];mpLy = D[funcProY, Ly];mpKy = D[funcProY, Ky];tMRSx = mpLx / mpKx;tMRSy = mpLy / mpKy;
■ 財Xの生産費用・限界費用・平均費用を求めるdataK = Kx /. Solve[w / r ⩵ tMRSx, Kx];product = Simplify[funcProX /. Kx -> dataK[[1]]];dataL = Lx /. Solve[product ⩵ x, Lx];dataK = dataK /. Lx → dataL[[1]];costFx = w * dataL[[1]] + r * dataK[[1]];dataCX = Simplify[costFx /. intoParmData2];dataMCX = Simplify[D[costFx, x] /. intoParmData2];dataACX = Simplify[(costFx / x) /. intoParmData2];dataCX2 = dataCX /. renameState2;dataMCX2 = dataMCX /. renameState2;dataACX2 = dataACX /. renameState2;Print"地域2でのXの生産の費用は ", dataCX2
Print" 限界費用は ", dataMCX2
Print" 平均費用は ", dataACX2, " である."
地域2でのXの生産の費用は r23 w271/10 x22
限界費用は r23 w271/10
平均費用は r23 w271/10 である.
■ 財Yの生産費用と限界費用を求めるdataKy = Ky /. Solve[w / r ⩵ tMRSy, Ky];producty = Simplify[funcProY /. Ky -> dataKy[[1]]];dataLy = Ly /. Solve[producty ⩵ y, Ly];dataKy = dataKy /. Ly → dataLy[[1]];costFy = w * dataLy[[1]] + r * dataKy[[1]];dataCY = Simplify[costFy /. intoParmData2];dataMCY = Simplify[D[costFy, y] /. intoParmData2];dataACY = Simplify[(costFy / y) /. intoParmData2];dataCY2 = dataCY /. renameState2;dataMCY2 = dataMCY /. renameState2;dataACY2 = dataACY /. renameState2;Print"地域2でのYの生産の費用は ", dataCY2
Print" 限界費用は ", dataMCY2
Print" 平均費用は ", dataACY2, " である."
(1.1)-(1.4) 環境税・基礎.nb 5
地域2でのYの生産の費用は r27 w231/10 y22
限界費用は r27 w231/10
平均費用は r27 w231/10 である.
■ 財Xの生産における要素投入の最適化demandKx = Simplify[dataK[[1]] /. intoParmData2];demandLx = Simplify[dataL[[1]] /. intoParmData2];
■ 財Yの生産における要素投入の最適化demandKy = Simplify[dataKy[[1]] /. intoParmData2];demandLy = Simplify[dataLy[[1]] /. intoParmData2];
■ 企業数1のときの生産要素 L ,K の総派生需要量demandLx2 = demandLx /. renameState2;demandLy2 = demandLy /. renameState2;demandKx2 = demandKx /. renameState2;demandKy2 = demandKy /. renameState2;dataTDL2 = demandLx2 + demandLy2;dataTDK2 = demandKx2 + demandKy2;Print"地域2での生産物の生産量が (x22, y22) のとき"
Print" 生産要素 L の派生需要量は "
Print[" ", dataTDL2]Print" 生産要素 K の派生需要量は "
Print[" ", dataTDK2]
地域2での生産物の生産量が (x22, y22) のとき
生産要素 L の派生需要量は
710
r2w2
3/10
x22 +310
r2w2
7/10
y22
生産要素 K の派生需要量は
310
w2r2
7/10
x22 +710
w2r2
3/10
y22
6 (1.1)-(1.4) 環境税・基礎.nb
2
コブ=ダグラス生産関数の下での生産可能性曲線
生産可能性曲線■ 生産関数のパラメータ値の設定
proX = (a1^(-a1)) * (b1^(-b1)) * ((Lx^a1) * (Kx^b1));proY = (a2^(-a2)) * (b2^(-b2)) * ((L0 - Lx)^a2) * ((K0 - Kx)^b2);
(*初期資源賦存量*)
{initL1, initK1} = {1, 1};{initL2, initK2} = {1, 1};initKL1 = {L0 → initL1, K0 → initK1};initKL2 = {L0 → initL2, K0 → initK2};
(*生産関数のパラメータ値の設定*)
parm1 = Join[intoParmData1, initKL1]parm2 = Join[intoParmData2, initKL2]
a1 →710
, b1 →310
, a2 →310
, b2 →710
, L0 → 1, K0 → 1
a1 →710
, b1 →310
, a2 →310
, b2 →710
, L0 → 1, K0 → 1
■ 財 Y の生産量を任意に固定したときに財 X の最大量を与える生産要素 (Kx, Lx) の組合わせ.外部性がないケース.
lagrange0 = proX - λ0 * proYsolλ01 = Solve[D[lagrange0, Kx] ⩵ 0, λ0]solλ02 = Solve[D[lagrange0, Lx] ⩵ 0, λ0]solEquLx0 = (λ0 /. solλ01[[1]]) - (λ0 /. solλ02[[1]]);
a1-a1 b1-b1 Kxb1 Lxa1 - a2-a2 b2-b2 (K0 - Kx)b2 (L0 - Lx)a2 λ0
λ0 → -a1-a1 a2a2 b11-b1 b2-1+b2 (K0 - Kx)1-b2 Kx-1+b1 (L0 - Lx)-a2 Lxa1
λ0 → -a11-a1 a2-1+a2 b1-b1 b2b2 (K0 - Kx)-b2 Kxb1 (L0 - Lx)1-a2 Lx-1+a1
(1.1)-(1.4) 環境税・基礎.nb 7
■ 生産可能生曲線(*地域1*)
dataLx1 = Solve[(solEquLx0 /. parm1) ⩵ 0, Lx][[1]]graphInputs1 =
Plot[Lx /. dataLx1, {Kx, 0, K0 /. parm1}, AxesLabel → {Kx, Lx}, AspectRatio -> 1];dataX1 = proX /. dataLx1 /. parm1;dataY1 = proY /. dataLx1 /. parm1;graphPPF1 = ParametricPlot[{dataX1, dataY1}, {Kx, 0, K0 /. parm1},
AxesLabel → {X, Y}, AspectRatio → 1, PlotStyle -> {Thickness[0.002], Blue}];horizon1 = {N[dataX1 /. Kx → (K0 /. parm1)], 0}vertical1 = {0, N[dataY1 /. Kx → 0]}(*地域2*)
dataLx2 = Solve[(solEquLx0 /. parm2) ⩵ 0, Lx][[1]]graphInputs2 =
Plot[Lx /. dataLx2, {Kx, 0, K0 /. parm1}, AxesLabel → {Kx, Lx}, AspectRatio -> 1];dataX2 = proX /. dataLx2 /. parm2;dataY2 = proY /. dataLx2 /. parm2;graphPPF2 = ParametricPlot[{dataX2, dataY2}, {Kx, 0, K0 /. parm2},
AxesLabel → {X, Y}, AspectRatio → 1, PlotStyle -> {Thickness[0.002], Red}];horizon2 = {N[dataX2 /. Kx → (K0 /. parm1)], 0}vertical2 = {0, N[dataY2 /. Kx → 0]}
Lx →49 Kx
9 + 40 Kx
{1.84202, 0}
{0, 1.84202}
Lx →49 Kx
9 + 40 Kx
{1.84202, 0}
{0, 1.84202}
8 (1.1)-(1.4) 環境税・基礎.nb
■ ふたつの地域の生産可能性曲線を重ねて描くPrint[]graphPPF3 = Show[graphPPF1, graphPPF2, PlotRange → All]
0.5 1.0 1.5X
0.5
1.0
1.5
Y
3
コブ・ダグラス効用関数の下の市場価格と限界収入
■ 地域別の変数の区別renameState1 = {x → x11, y → y11, w → w1, r → r1};renameState2 = {x → x22, y → y22, w → w2, r → r2};(*1次同次の効用関数はシステムを不安定化させるので避けること.*)
parmVec1 = {α → 2, β → 0.4, γ → 0.4};parmVec2 = {α → 2.1, β → 0.4, γ → 0.4};parmVec3 = {α → 2, β → 0.5, γ → 0.3};intoParmVec1 = parmVec1intoParmVec2 = parmVec1
{α → 2, β → 0.4, γ → 0.4}
{α → 2, β → 0.4, γ → 0.4}
(1.1)-(1.4) 環境税・基礎.nb 9
■ 代表的消費者の効用関数と予算制約式$Assumptions = {α > 0, 0 ≤ β ≤ 1, 0 ≤ γ ≤ 1, px >= 0, py > 0, m ≥ 0, λ ≥ 0};utilF = α (x^β) * (y^γ) + m;budget = income - (px * x + py * y + m);
utilF1 = utilF /. intoParmVec1;utilF2 = utilF /. intoParmVec2;
■ ラグランジュ関数lagrange = utilF + λ * budget;lagrangeNet = utilFNet + λ * budget;
■ 最適消費選択の1階条件opt1 = (D[lagrange, x] ⩵ 0);opt2 = (D[lagrange, y] ⩵ 0);opt3 = (D[lagrange, m] ⩵ 0);opt4 = (D[lagrange, λ] ⩵ 0);res1 = Solve[{opt1, opt3}, px][[1, 1]]res2 = Solve[{opt2, opt3}, py][[1, 1]]
px → x-1+β yγ α β
py → xβ y-1+γ α γ
■ 製品 X, Y の市場価格px1 = Simplify[px /. res1 /. renameState1]py1 = Simplify[py /. res2 /. renameState1]px2 = Simplify[px /. res1 /. renameState2]py2 = Simplify[py /. res2 /. renameState2]
x11-1+β y11γ α β
x11β y11-1+γ α γ
x22-1+β y22γ α β
x22β y22-1+γ α γ
10 (1.1)-(1.4) 環境税・基礎.nb
■ 製品Yの限界収入rev1 = px * x /. res1;rev2 = py * y /. res2;(*地域1*)
mrX1 = D[rev1 /. renameState1, x11] // SimplifymrY1 = D[rev2 /. renameState1, y11] // Simplify(*地域2*)
mrX2 = D[rev1 /. renameState2, x22] // SimplifymrY2 = D[rev2 /. renameState2, y22] // Simplify
x11-1+β y11γ α β2
x11β y11-1+γ α γ2
x22-1+β y22γ α β2
x22β y22-1+γ α γ2
■ 与えられたパラメータ値下での価格と限界収入(*地域1*)
Print"地域1:"Print" 地域1での,財Xの需要価格は, ", dataPX1 = px1 /. intoParmVec1
Print" 地域1での,財Yの需要価格は, ", dataPY1 = py1 /. intoParmVec1
Print" 地域1での,財Xの限界収入は, ", dataMRX1 = mrX1 /. intoParmVec1
Print" 地域1での,財Yの限界収入は, ", dataMRY1 = mrY1 /. intoParmVec1
(*地域2*)
Print"地域2:"Print" 地域2での,財Xの需要価格は, ", dataPX2 = px2 /. intoParmVec2
Print" 地域2での,財Yの需要価格は, ", dataPY2 = py2 /. intoParmVec2
Print" 地域2での,財Xの限界収入は, ", dataMRX2 = mrX2 /. intoParmVec2
Print" 地域2での,財Yの限界収入は, ", dataMRY2 = mrY2 /. intoParmVec2
(1.1)-(1.4) 環境税・基礎.nb 11
地域1:
地域1での,財Xの需要価格は, 0.8 y110.4
x110.6
地域1での,財Yの需要価格は, 0.8 x110.4
y110.6
地域1での,財Xの限界収入は, 0.32 y110.4
x110.6
地域1での,財Yの限界収入は, 0.32 x110.4
y110.6
地域2:
地域2での,財Xの需要価格は, 0.8 y220.4
x220.6
地域2での,財Yの需要価格は, 0.8 x220.4
y220.6
地域2での,財Xの限界収入は, 0.32 y220.4
x220.6
地域2での,財Yの限界収入は, 0.32 x220.4
y220.6
4
生産にともなう外部性の定式化
■ 生産にともなう外部性コスト(*各時点ごとの廃棄物量*)
garbageX = (μx * x);garbageY = (μy * y);TGarbage = garbageX + garbageY - θ
(*時点tまでの廃棄物の累積量*)
envCost = γ * Exp[δ * TGarbage]
-θ + x μx + y μy
ⅇδ (-θ+x μx+y μy) γ
12 (1.1)-(1.4) 環境税・基礎.nb
5.2
市場での数量・価格調整財 X , Y はともに競争市場で取引されると仮定する.
環境コストは消費者の効用だけに影響する.企業は追加的費用をかけて排出抑制活動を行う
■ 環境パラメータの数値の設定parmGarb10 = {μx → 0.1, μy → 0.4, θ → 0.3, c → c1};parmGarb11 = {γ → 1, δ → 1};parmGarb20 = {μx → 0.1, μy → 0.4, θ → 0.3, c → c2};parmGarb21 = {γ → 1, δ → 1};dataEnv1 = Join[parmGarb10, parmGarb11];dataEnv2 = Join[parmGarb20, parmGarb21];dataTaxPolicy = {DTX1 = 1, DTY1 = 1, DTX2 = 0, DTY2 = 0};Print["tax policy : ", dataTaxPolicy]
tax policy : {1, 1, 0, 0}
■ 環境税率の定式化(*財Xの1単位生産当たりの環境税(税率)=(Xの生産にともなう廃棄物増加分)×(廃棄物1単位当たりの環境コスト増加分)*)
envTaxX = (δ * μx * c);envTaxY = (δ * μy * c);
■ 限界環境コストPrint"地域1:"Print" 財Xの限界環境コストは, ",
dataMSCX1 = (μx / σx1) * δ * c /. Join[parmGarb10, parmGarb11]
Print" 財Yの限界環境コストは, ",
dataMSCY1 = (μy / σy1) * δ * c /. Join[parmGarb10, parmGarb11]
Print[](*地域2*)
Print"地域2:"Print" 財Xの限界環境コストは, ",
dataMSCX2 = (μx / σx2) * δ * c /. Join[parmGarb20, parmGarb21]
Print" 財Yの限界環境コストは, ",
dataMSCY2 = (μy / σy2) * δ * c /. Join[parmGarb20, parmGarb21]
Print[]
地域1:
財Xの限界環境コストは, 0.1 c1σx1
財Yの限界環境コストは, 0.4 c1σy1
地域2:
財Xの限界環境コストは, 0.1 c2σx2
財Yの限界環境コストは, 0.4 c2σy2
■ 財 X11, X22 の数量調整marketX = "競争市場";adjustX11 = (dataPX1 - (σx1^2) * dataMCX1 - DTX1 * dataMSCX1) * x11adjustX22 = (dataPX2 - (σx2^2) * dataMCX2 - DTX2 * dataMSCX2) * x22Print[]
x11 0.8 y110.4
x110.6-0.1 c1σx1
- r13 w171/10 σx12
x22 0. +0.8 y220.4
x220.6- r23 w271/10 σx22
2 (1.5.2) 市場調整・排出抑制.nb
■ 財Y11, Y22 の数量調整marketY = "競争市場";adjustY11 = (dataPY1 - (σy1^2) * dataMCY1 - DTY1 * dataMSCY1) * y11adjustY22 = (dataPY2 - (σy2^2) * dataMCY2 - DTY2 * dataMSCY2) * y22Print[]
y11 0.8 x110.4
y110.6-0.4 c1σy1
- r17 w131/10 σy12
y22 0. +0.8 x220.4
y220.6- r27 w231/10 σy22
■ 排出抑制活動 σx1, σx2, σy1, σy2 の数量調整adjustσX1 =
DTX1 * ((D[envTaxX - envTaxX / σx1, σx1] /. dataEnv1) - D[σx1^2 * dataMCX1, σx1]) *
(σx1 - 1)adjustσX2 = DTX2 * ((D[envTaxX - envTaxX / σx2, σx2] /. dataEnv2) -
D[σx2^2 * dataMCX2, σx2]) * (σx2 - 1)adjustσY1 = DTY1 * ((D[envTaxY - envTaxY / σy1, σy1] /. dataEnv1) -
D[σy1^2 * dataMCY1, σy1]) * (σy1 - 1)adjustσY2 = DTY2 * ((D[envTaxY - envTaxY / σy2, σy2] /. dataEnv2) -
D[σy2^2 * dataMCY2, σy2]) * (σy2 - 1)
Print[]
(-1 + σx1) 0.1 c1σx12
- 2 r13 w171/10 σx1
0
(-1 + σy1) 0.4 c1σy12
- 2 r17 w131/10 σy1
0
(1.5.2) 市場調整・排出抑制.nb 3
■ 生産要素L, Kの価格調整$Assumptions = {L10 > 0, K10 > 0, K20 > 0, K20 > 0};(**)
exdm = 1;(**)
dataL1 = (σx1^2) * demandLx1 + (σy1^2) * demandLy1;dataK1 = (σx1^2) * demandKx1 + (σy1^2) * demandKy1;dataL2 = (σx2^2) * demandLx2 + (σy2^2) * demandLy2;dataK2 = (σx2^2) * demandKx2 + (σy2^2) * demandKy2;(**)
auxL1 = exdm * (adjustX11^2 + adjustY11^2 + adjustσX1^2 + adjustσY1^2) *
Abs[(L10 - dataL1)]^(-1);auxK1 = exdm * (adjustX11^2 + adjustY11^2 + adjustσX1^2 + adjustσY1^2) *
Abs[(K10 - dataK1)]^(-1);auxL2 = exdm * (adjustX22^2 + adjustY22^2 + adjustσX2^2 + adjustσY2^2) *
Abs[(L20 - dataL2)]^(-1);auxK2 = exdm * (adjustX22^2 + adjustY22^2 + adjustσX2^2 + adjustσY2^2) *
Abs[(K20 - dataK2)]^(-1);(**)
adjustW1 = auxL1 + λ11 (dataL1 - L10) (w1 - min);adjustR1 = auxK1 + λ12 (dataK1 - K10) (r1 - min);adjustW2 = auxL2 + λ21 (dataL2 - L20) (w2 - min);adjustR2 = auxK2 + λ22 (dataK2 - K20) (r2 - min);Print[]
■ 環境コストC1, C2 の数量調整adjustC1 = (δ * γ * (σx1^(-1) * μx * x11 + σy1^(-1) * μy * y11 - θ) * c) /.
Join[parmGarb10, parmGarb11]adjustC2 = (δ * γ * (σx2^(-1) * μx * x22 + σy2^(-1) * μy * y22 - θ) * c) /.
Join[parmGarb20, parmGarb21]Print[]
c1 -0.3 +0.1 x11
σx1+0.4 y11
σy1
c2 -0.3 +0.1 x22
σx2+0.4 y22
σy2
4 (1.5.2) 市場調整・排出抑制.nb
6.2
2地域・2製品・2生産要素地域間の交易なし
2つの生産要素は地域間を移動しない
環境コストは消費者だけに影響する.企業は追加費用をかけて排出抑制活動を行う.
§1 前提する市場のタイプ,効用関数,生産関数の確認
■ 市場のタイプPrint"どちらの地域でも,"Print" 財Xの市場は ", marketX
Print" 財Yの市場は ", marketY
どちらの地域でも,
財Xの市場は 競争市場
財Yの市場は 競争市場
■ 各地域の効用関数Print"地域1"Print" 効用関数は, U1 = ", utilF1
Print"地域2"Print" 効用関数は, U2 = ", utilF2
地域1
効用関数は, U1 = m + 2 x0.4 y0.4
地域2
効用関数は, U2 = m + 2 x0.4 y0.4
■ 各地域の生産関数Print"地域1"Print" 生産関数は, X11 = ", dataProX1 // N
Print[" Y11 = ", dataProY1 // N]Print"地域2"Print" 生産関数は, X22 = ", dataProX2 // N
Print[" Y22 = ", dataProY2 // N]Print[]
地域1
生産関数は, X11 = 1.84202 Kx3/10 Lx7/10
Y11 = 1.84202 Ky7/10 Ly3/10
地域2
生産関数は, X22 = 1.84202 Kx3/10 Lx7/10
Y22 = 1.84202 Ky7/10 Ly3/10
■ 変数とパラメータの確認Print"各地域の生産者サイドのパラメータ"
Print" 地域1: ", parm1
Print" 地域2: ", parm2
Print[]Print"各地域の消費者サイドのパラメータ"
Print" 地域1: ", intoParmVec1
Print" 地域2: ", intoParmVec2
Print[]Print"各地域の環境サイドのパラメータ"Print" 地域1: ", Join[parmGarb10, parmGarb11]
Print" 地域2: ", Join[parmGarb20, parmGarb21]
Print[]
minVal = 0;
2 | (1.6.2) Synthesis 排出抑制.nb
2
各地域の生産者サイドのパラメータ
地域1: a1 →710
, b1 →310
, a2 →310
, b2 →710
, L0 → 1, K0 → 1
地域2: a1 →710
, b1 →310
, a2 →310
, b2 →710
, L0 → 1, K0 → 1
各地域の消費者サイドのパラメータ
地域1: {α → 2, β → 0.4, γ → 0.4}
地域2: {α → 2, β → 0.4, γ → 0.4}
各地域の環境サイドのパラメータ
地域1: {μx → 0.1, μy → 0.4, θ → 0.3, c → c1, γ → 1, δ → 1}
地域2: {μx → 0.1, μy → 0.4, θ → 0.3, c → c2, γ → 1, δ → 1}
(1.6.2) Synthesis 排出抑制.nb | 3
§2 各地域の状態変数の変化■ 力学系(システム)の定義
stateVec = {x11, x22, y11, y22, σx1, σx2, σy1, σy2, w1, w2, r1, r2, c1, c2};initVec0 = ReplacePart[Table[0.5, {14}],
{1 → 0.1, 2 → 0.1, 3 → 1, 4 → 1, 5 → 1.01, 6 → 1, 7 → 1.01, 8 → 1, 13 → 1, 14 → 1}];
parmVal = {L10 → initL1, K10 → initK1, L20 → initL2, K20 → initK2,λ11 → 1, λ12 → 1, λ21 → 1, λ22 → 1,min → 0.1};
stateFunc =
{x11[t], x22[t],y11[t], y22[t],σx1[t], σx2[t],σy1[t], σy2[t],w1[t], w2[t],r1[t], r2[t],c1[t], c2[t]};
derivFunc =
{x11'[t], x22'[t],y11'[t], y22'[t],σx1'[t], σx2'[t],σy1'[t], σy2'[t],w1'[t], w2'[t],r1'[t], r2'[t],c1'[t], c2'[t]};
adjFunc =
{adjustX11, adjustX22,adjustY11, adjustY22,adjustσX1, adjustσX2,adjustσY1, adjustσY2,adjustW1, adjustW2,adjustR1, adjustR2,adjustC1, adjustC2} /. Thread[stateVec → stateFunc] /. parmVal;
difFunc =
Join[Thread[derivFunc ⩵ adjFunc], Thread[(stateFunc /. t → 0) ⩵ initVec0]];
■ システムを積分するinitT0 = 0;endT0 = 300;sol0 = NDSolve[difFunc, stateVec, {t, initT0, endT0}, MaxStepSize → 0.01];
4 | (1.6.2) Synthesis 排出抑制.nb
4
■ 解軌道のグラフssSol = Part[Evaluate[stateFunc /. sol0] /. t → endT0, 1];ssXY1 = {ssSol[[1]], ssSol[[3]]};ssXY2 = {ssSol[[2]], ssSol[[4]]};ssEnvCost = {ssSol[[13]], ssSol[[14]]};ssAvait1 = {ssSol[[5]], ssSol[[7]]};ssAvait2 = {ssSol[[6]], ssSol[[8]]};intXY1 = {initVec0[[1]], initVec0[[3]]};intXY2 = {initVec0[[2]], initVec0[[4]]};
Do[graph[n] = Plot[Evaluate[stateFunc[[n]]] /. sol0, {t, initT0, endT0},AxesOrigin → {initT0, 0}, AxesLabel → {t, stateVec[[n]]}, PlotStyle →
{Thickness[0.002], Black}, AspectRatio → 0.3, PlotRange → All], {n, 1, 14}];
Print[]GraphicsGrid[{{graph[1]}, {graph[2]}, {graph[3]}, {graph[4]}, {graph[5]},
{graph[6]}, {graph[7]}, {graph[8]}, {graph[9]}, {graph[10]}, {graph[11]},{graph[12]}, {graph[13]}, {graph[14]}}, ImageSize → Scaled[0.67]]
Print[]Print[stateVec, " = "]Print[" ", ssSol]Print["{w1/r1, w2/r2} = {",ssSol[[5]] / ssSol[[7]], ", ", ssSol[[6]] / ssSol[[8]], "}"]
Print["{x1, y1} = ", ssXY1]Print["{x2, y2} = ", ssXY2]Print["{σx1, σy1} = ", ssAvait1]Print["{σx2, σy2} = ", ssAvait2]Print["{c1, c2} = ", ssEnvCost]Print[]
50 100 150 200 250 300t
0.20.40.60.81.01.2
x11
50 100 150 200 250 300t
0.2
0.4
0.6
0.8
1.0
x22
0.6
0.8
1.0
y11
(1.6.2) Synthesis 排出抑制.nb | 5
50 100 150 200 250 300t
0.2
0.4
50 100 150 200 250 300t
0.2
0.4
0.6
0.8
1.0
y22
50 100 150 200 250 300t
0.2
0.4
0.6
0.8
1.0
σx1
50 100 150 200 250 300t
0.5
1.0
1.5
2.0
σx2
50 100 150 200 250 300t
0.20.40.60.81.01.2
σy1
50 100 150 200 250 300t
0.5
1.0
1.5
2.0
σy2
50 100 150 200 250 300t
0.5
1.0
1.5
2.0w1
50 100 150 200 250 300t
0.2
0.4
0.6
0.8
w2
1.5
r1
6 | (1.6.2) Synthesis 排出抑制.nb
6
50 100 150 200 250 300t
0.5
1.0
1.5
50 100 150 200 250 300t
0.2
0.4
0.6
0.8
r2
50 100 150 200 250 300t
0.51.01.52.02.53.0
c1
50 100 150 200 250 300t
2×1025
4×1025
6×1025
8×1025c2
{x11, x22, y11, y22, σx1, σx2, σy1, σy2, w1, w2, r1, r2, c1, c2} =
1.20481, 1., 0.541174, 1., 1., 1., 1.20583,
1., 0.328206, 0.8, 0.26908, 0.8, 2.50375, 8.15941 × 1025
{w1/r1, w2/r2} = {0.829303, 1.}
{x1, y1} = {1.20481, 0.541174}
{x2, y2} = {1., 1.}
{σx1, σy1} = {1., 1.20583}
{σx2, σy2} = {1., 1.}
{c1, c2} = 2.50375, 8.15941 × 1025
(1.6.2) Synthesis 排出抑制.nb | 7
§3 生産と消費の変化■ 地域1における財 X, Y の生産と消費
graphInt1 = Graphics[{Gray, PointSize[Large], Point[intXY1]}];graphSS1 = Graphics[{Black, PointSize[Large], Point[ssXY1]}];graphXYP1 = ParametricPlot[Evaluate[{x11[t], y11[t]} /. sol0],
{t, initT0, endT0}, PlotStyle -> {Thickness[0.002], Red}];
Print[]Print"地域1における生産と消費の時間的推移"
Print"地域1における初期点(グレーの点)と定常状態での生産消費点(黒色の点)"
dataSSU1 = (utilF1 - m) /. Thread[{x, y} → ssXY1];indU1 = y /. (Solve[utilF1 - m ⩵ const, y] /. const → dataSSU1)[[1]];graphIndif1 = Plot[indU1, {x, 0, 4}, PlotStyle → {Thickness[0.003], Red}];
Print"定常点を通る無差別曲線(赤色の右下がりの曲線)"Print"定常点での社会的限界変形率(外部性込み限界費用の比率,グレイの右下がりの線分)"
envMCX = δ * μx * c /. dataEnv1;envMCY = δ * μy * c /. dataEnv1;socioMRS1 =
((dataMCX1 + envMCX) / (dataMCY1 + envMCY)) /. Thread[stateVec → ssSol];lineY1 = -socioMRS1 * (x - ssSol[[1]]) + ssSol[[3]];graphSocioMRS1 = Plot[lineY1,
{x, ssSol[[1]] - 0.8, ssSol[[1]] + 1.2}, PlotStyle → {Thickness[0.002], Gray}];
Show[graphPPF1, graphXYP1, graphIndif1, graphSocioMRS1,graphInt1, graphSS1, PlotRange → {{0, 3}, {0, 3}}]
地域1における生産と消費の時間的推移
地域1における初期点(グレーの点)と定常状態での生産消費点(黒色の点)
Solve::ifun :逆関数がSolveで使われているため,求められない解がある可能性があります.解の詳細情報にはReduceをお使いください.%
定常点を通る無差別曲線(赤色の右下がりの曲線)
定常点での社会的限界変形率(外部性込み限界費用の比率,グレイの右下がりの線分)
8 | (1.6.2) Synthesis 排出抑制.nb
8
0.5 1.0 1.5 2.0 2.5 3.0X
0.5
1.0
1.5
2.0
2.5
3.0
Y
(1.6.2) Synthesis 排出抑制.nb | 9
■ 地域2における財 X, Y の生産と消費graphInt2 = Graphics[{Gray, PointSize[Large], Point[intXY2]}];graphSS2 = Graphics[{Blue, PointSize[Large], Point[ssXY2]}];graphXYP2 = ParametricPlot[Evaluate[{x22[t], y22[t]} /. sol0],
{t, initT0, endT0}, PlotStyle → {Thickness[0.002], Blue}];
Print[]Print"地域2における生産と消費)の時間的推移"Print"地域2における初期点(グレイの点)と定常状態での生産消費点(青色の点)"
dataSSU2 = (utilF2 - m) /. Thread[{x, y} → ssXY2];indU2 = y /. (Solve[utilF2 - m ⩵ const, y] /. const → dataSSU2)[[1]];graphIndif2 = Plot[indU2, {x, 0, 4}, PlotStyle → {Thickness[0.002], Blue}];
Print[]Print"定常点を通る無差別曲線(赤色の右下がりの曲線)"Print"定常点での社会的限界変形率(外部性込み限界費用の比率,グレイの右下がりの線分)"
envMCX = δ * μx * c /. dataEnv2;envMCY = δ * μy * c /. dataEnv2;socioMRS2 =
((dataMCX2 + envMCX) / (dataMCY2 + envMCY)) /. Thread[stateVec → ssSol];lineY2 = -socioMRS2 * (x - ssSol[[2]]) + ssSol[[4]];graphSocioMRS2 = Plot[lineY2,
{x, ssSol[[2]] - 0.5, ssSol[[2]] + 0.5}, PlotStyle → {Thickness[0.002], Gray}];
Show[graphPPF2, graphXYP2, graphIndif2, graphSocioMRS2,graphInt2, graphSS2, PlotRange → {{0, 3}, {0, 3}}]
地域2における生産と消費)の時間的推移
地域2における初期点(グレイの点)と定常状態での生産消費点(青色の点)
Solve::ifun :逆関数がSolveで使われているため,求められない解がある可能性があります.解の詳細情報にはReduceをお使いください.%
定常点を通る無差別曲線(赤色の右下がりの曲線)
定常点での社会的限界変形率(外部性込み限界費用の比率,グレイの右下がりの線分)
10 | (1.6.2) Synthesis 排出抑制.nb
10
0.5 1.0 1.5 2.0 2.5 3.0X
0.5
1.0
1.5
2.0
2.5
3.0
Y
■ 地域 1, 2 における財 X, Y の消費のグラフを重ね合わせるShow[graphPPF1, graphPPF2, graphXYP1, graphXYP2, graphIndif1,graphIndif2, graphSocioMRS1, graphSocioMRS2, graphInt1,graphInt2, graphSS1, graphSS2, PlotRange → {{0, 3}, {0, 3}}]
0.5 1.0 1.5 2.0 2.5 3.0X
0.5
1.0
1.5
2.0
2.5
3.0
Y
(1.6.2) Synthesis 排出抑制.nb | 11
§4 定常状態での生産要素の配分■ 地域1での生産要素Lの投入
dataParameter = Thread[stateVec → ssSol];Print"地域1で財Xの生産に投入されたLの量は ",
dataLx1 = ((σx1^2) * demandLx1) /. dataParameter
Print" 財Yの生産に投入されたLの量は ",
dataLy1 = ((σy1^2) * demandLy1) /. dataParameter
Print" 総計すると,地域1でのLの総需要量は ", dataLx1 + dataLy1
地域1で財Xの生産に投入されたLの量は 0.794579
財Yの生産に投入されたLの量は 0.205421
総計すると,地域1でのLの総需要量は 1.
Plot[dataL1 /. Thread[stateVec → stateFunc] /. sol0,{t, 0, endT0}, PlotStyle → {Thickness[0.003], Red},PlotRange → {0, 2 * initL1}, AxesLabel → {t, QL1}]
0 50 100 150 200 250 300t
0.5
1.0
1.5
2.0QL1
■ 地域1での生産要素Kの投入Print"地域1で財Xの生産に投入されたKの量は ",
dataKx1 = ((σx1^2) * demandKx1) /. dataParameter
Print" 財Yの生産に投入されたKの量は ",
dataKy1 = ((σy1^2) * demandKy1) /. dataParameter
Print" 総計すると,地域1でのKの総需要量は ", dataKx1 + dataKy1
地域1で財Xの生産に投入されたKの量は 0.415361
財Yの生産に投入されたKの量は 0.584639
総計すると,地域1でのKの総需要量は 1.
12 | (1.6.2) Synthesis 排出抑制.nb
12
Plot[dataK1 /. Thread[stateVec → stateFunc] /. sol0,{t, 0, endT0}, PlotStyle → {Thickness[0.003], Red},PlotRange → {0, 2 * initK1}, AxesLabel → {t, QK1}]
0 50 100 150 200 250 300t
0.5
1.0
1.5
2.0QK1
■ 地域2での生産要素Lの投入Print"地域2で財Xの生産に投入されたLの量は ",
dataLx2 = ((σx2^2) * demandLx2) /. dataParameter
Print" 財Yの生産に投入されたLの量は ",
dataLy2 = ((σy2^2) * demandLy2) /. dataParameter
Print" 総計すると,地域2でのLの総需要量は ", dataLx2 + dataLy2
地域2で財Xの生産に投入されたLの量は 0.7
財Yの生産に投入されたLの量は 0.3
総計すると,地域2でのLの総需要量は 1.
Plot[dataL2 /. Thread[stateVec → stateFunc] /. sol0,{t, 0, endT0}, PlotStyle → {Thickness[0.003], Blue},PlotRange → {0, 2 * initL2}, AxesLabel → {t, QL2}]
0 50 100 150 200 250 300t
0.5
1.0
1.5
2.0QL2
(1.6.2) Synthesis 排出抑制.nb | 13
■ 地域2での生産要素Kの投入Print"地域2で財Xの生産に投入されたKの量は ",
dataKx2 = ((σx2^2) * demandKx2) /. dataParameter
Print" 財Yの生産に投入されたKの量は ",
dataKy2 = ((σy2^2) * demandKy2) /. dataParameter
Print" 総計すると,地域2でのKの総需要量は ", dataKx2 + dataKy2
地域2で財Xの生産に投入されたKの量は 0.3
財Yの生産に投入されたKの量は 0.7
総計すると,地域2でのKの総需要量は 1.
Plot[dataK2 /. Thread[stateVec → stateFunc] /. sol0,{t, 0, endT0}, PlotStyle → {Thickness[0.003], Blue},PlotRange → {0, 2 * initK2}, AxesLabel → {t, QK2}]
0 50 100 150 200 250 300t
0.5
1.0
1.5
2.0QK2
14 | (1.6.2) Synthesis 排出抑制.nb
14
§5 定常状態での価格と生産量,環境税と環境コスト
(*生産物の価格*)
Print[]Print"地域1のXの価格 ", priceX1 = dataPX1 /. dataParameter
Print"地域2のXの価格 ", priceX2 = dataPX2 /. dataParameter
Print"地域1のYの価格 ", priceY1 = dataPY1 /. dataParameter
Print"地域2のYの価格 ", priceY2 = dataPY2 /. dataParameter
(*生産量*)
Print[]Print"地域1のXの生産量 ", quantX1 = ssSol[[1]]
Print"地域2のXの生産量 ", quantX2 = ssSol[[2]]
Print"地域1のYの生産量 ", quantY1 = ssSol[[3]]
Print"地域2のYの生産量 ", quantY2 = ssSol[[4]]
(*生産要素の価格*)
Print[]Print"地域1のLの価格 ", priceL1 = ssSol[[9]]
Print"地域2のLの価格 ", priceL2 = ssSol[[10]]
Print"地域1のKの価格 ", priceK1 = ssSol[[11]]
Print"地域2のKの価格 ", priceK2 = ssSol[[12]]
Print[](*環境税*)
Print[]Print"地域1の環境税 ", envTax1 =
(DTX1 * μx * δ * ssSol[[13]] * ssSol[[1]] + DTY1 * μy * δ * ssSol[[13]] * ssSol[[3]]) /.Join[parmGarb10, parmGarb11, parmVal]
Print"地域2の環境税 ", envTax2 =
(DTX2 * μx * δ * ssSol[[14]] * ssSol[[2]] + DTY2 * μy * δ * ssSol[[14]] * ssSol[[4]]) /.Join[parmGarb20, parmGarb21, parmVal]
Print"地域1の環境コスト ", envCost1 = ssSol[[13]]
Print"地域2の環境コスト ", envCost2 = ssSol[[14]]
Print[]
(1.6.2) Synthesis 排出抑制.nb | 15
地域1のXの価格 0.559595
地域2のXの価格 0.8
地域1のYの価格 1.24582
地域2のYの価格 0.8
地域1のXの生産量 1.20481
地域2のXの生産量 1.
地域1のYの生産量 0.541174
地域2のYの生産量 1.
地域1のLの価格 0.328206
地域2のLの価格 0.8
地域1のKの価格 0.26908
地域2のKの価格 0.8
地域1の環境税 0.843639
地域2の環境税 0.
地域1の環境コスト 2.50375
地域2の環境コスト 8.15941 × 1025
16 | (1.6.2) Synthesis 排出抑制.nb
16
§6 定常状態での消費および効用水準(*地域1*)
dataXC1 = ssSol[[1]];dataYC1 = ssSol[[3]];dataM1 =
((priceL1 * L0 + priceK1 * K0) /. parm1) - (priceX1 * dataXC1 + priceY1 * dataYC1);dataU1 = (utilF1 + envTax1 - envCost1) /. {x → dataXC1, y → dataYC1, m → dataM1};
(*地域2*)
dataXC2 = ssSol[[2]];dataYC2 = ssSol[[4]];dataM2 =
((priceL2 * L0 + priceK2 * K0) /. parm2) - (priceX2 * dataXC2 + priceY2 * dataYC2);dataU2 = (utilF2 + envTax2 - envCost2) /. {x → dataXC2, y → dataYC2, m → dataM2};
Print[]Print"地域1の消費 {x1, y1} = {", dataXC1, ", ", dataYC1, "}"
Print"地域2の消費 {x2, y2} = {", dataXC2, ", ", dataYC2, "}"
Print"地域1の収支 m1 = ", dataM1
Print"地域2の収支 m2 = ", dataM2
Print"地域1の効用 U1(x1, y1, m1) + envTax1 - c1 = ", dataU1
Print"地域2の効用 U2(x2, y2, m2) + envTax2 - c2 = ", dataU2
Print[]
地域1の消費 {x1, y1} = {1.20481, 0.541174}
地域2の消費 {x2, y2} = {1., 1.}
地域1の収支 m1 = -0.751124
地域2の収支 m2 = -6.66134 × 10-16
地域1の効用 U1(x1, y1, m1) + envTax1 - c1 = -0.725719
地域2の効用 U2(x2, y2, m2) + envTax2 - c2 = -8.15941 × 1025
(1.6.2) Synthesis 排出抑制.nb | 17