そのまま動くので、途中の値を変えたりして ctrl + enter してみてください。
%matplotlib inline
from pylab import *
# 初期価格
INIT_PRICE = 1000000
# 設置面積 m^2
INS_AREA = 35
# 出力 W/m^2
POWER = 250.0
#モジュール変換効率
EFF_MODULE = 0.1540
# モジュール面積
AREA_MODULE = POWER / EFF_MODULE / 1000
# 設置量 Kw
INST_VOL = POWER * INS_AREA / AREA_MODULE / 1000
# システム出力
E_POWER = 0.7
# 1Wあたり発電量 kWh/kW/year
UNIT_GEN = 1050.0
# 発電量
GEN = INST_VOL * E_POWER * UNIT_GEN
# 月間売電収入
REVENUE_PER_MONTH = GEN * 38 / 12
# 売電収入 - 電気代
GROSS_PROFIT = 10500 - 7000 + REVENUE_PER_MONTH
# 寿命
MAX_AGE = 184
# 寿命定数
LIFE_COFF = 0.013 #71ヶ月
print "発電量(kwh)", GEN
print "平均の月間余剰収入初期値", GROSS_PROFIT
発電量(kwh) 3961.65 平均の月間余剰収入初期値 16045.225
# 雲の影響を無視したパターン
y = zeros(201)
x = linspace(0, 200, 201)
for i, xi in enumerate(x):
if i == 0:
y[i] = 0
else:
reduction = exp(-1 * LIFE_COFF * xi)
y[i] = reduction * GROSS_PROFIT + y[i-1]
plot(x, y)
hold(True)
plot(array([0, 200]), array([INIT_PRICE, INIT_PRICE]))
title(u'Not consider of Cloud Impact')
xlabel('Month')
ylabel('Total Revenue')
<matplotlib.text.Text at 0x10b0e0e50>
# 雲の影響による重みを計算モデルに組みこむ
def calc(cloud_impact):
y = zeros(201)
x = linspace(0, 200, 201)
for i, xi in enumerate(x):
if i == 0:
y[i] = 0
else:
reduction = exp(-1 * LIFE_COFF * xi)
y[i] = reduction * GROSS_PROFIT * cloud_impact + y[i-1]
return y
plot(array([0, 200]), array([INIT_PRICE, INIT_PRICE]))
title(u'Consider of Cloud Impact')
xlabel('Month')
ylabel('Total Revenue')
hold(True)
# 雲の影響あり
plot(x, calc(1.4)) # 雲が少ない
plot(x, calc(1.2))
plot(x, calc(1.0)) # 平均的な雲量
plot(x, calc(0.8))
plot(x, calc(0.6)) # 雲が多いと永久にペイしない
[<matplotlib.lines.Line2D at 0x10b148f10>]