前提・実現したいこと
python初めて2日目の初心者です。
2次関数を微分し、接線の傾きが0となる
xおよびyを計算してます。
csvファイルを読み込み、価格と個数の回帰分析を行いました。
そのデータを用いて2次関数を作成します。
発生している問題・エラーメッセージ
return p[1] * x ** 2 + (p[0] - p[1] * 99) * x - p[0] * 99 TypeError: 'int' object is not subscriptable
該当のソースコード
python
1# 必要なモジュールのインポート 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5 6# ファイルの読み込み 7df = pd.read_csv('lm_analysis.csv') 8 9# 売り上げ個数の予想する回帰分析を行う 10y = np.array(df['sales'].tolist()) 11x = np.array(df['price'].tolist()) 12z = np.polyfit(x, y, 1) 13 14p = np.poly1d(z) 15p30 = np.poly1d(np.polyfit(x, y, 30)) 16xp = np.linspace(0, 500, 100) 17 18plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '*') 19plt.ylim(0, 10) 20plt.show() 21# 切片と傾きの表示 22# p[0]:傾き 23# p[1]:切片 24print("p0:", p[0]) 25print("p1:", p[1]) 26 27# 一旦原価は99で固定 28def f(x, p): 29 return p[1] * x ** 2 + (p[0] - p[1] * 99) * x - p[0] *99 30 31dx0 = -p[0] + p[1] * 99 / (2 * p[1]) 32dy0 = f(dx0,0) 33print(dx0, dy0) 34plt.plot(p[1] * x ** 2 + (p[0] - p[1] * 99) * x - p[0] * 99) 35plt.show() 36
最終的に出したグラフ
補足情報(FW/ツールのバージョンなど)
---補足情報---
x軸:価格(price)
y軸:想定利益
※想定利益→(価格ーcost)×個数
個数を回帰分析で予想し、個数=p[0] + p[1]×価格
として、価格(price)をx軸にした2次関数にしようとしています。
(x-cost)*(p[0]+p[1]*x)
=p[1]*x^2 +(p[0]-p[1]*cost)x - costp[0]
これから頂点を求めると、最大利益が出る
という想定です。
python3.6
Pycharm: 2017.3.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。