最近中学で一次方程式のグラフをやっていて「これPythonにやってもらえれば楽できる面白いじゃん」と思って作ることにしました。
仕様
変化の割合(傾き)と切片を入力するとグラフが表示される。
変化の割合が分数にしたい場合はy/xのような形で入力する。
使うもの
- Python2.7(PyCharmインストールしたばっかなので・・・)
- PyCharm community edition(デザインかっこいい!)
- matplotlib(Mac使っていいよと言われると、とりあえずsinカーブ)
- numpy(結構お気に入り)
流れ
- 変化の割合と切片を入力させる
- xとyのデータを作成
- matplotlibでグラフを描画
製作開始!
とりあえず必要なものをimport
main.py
import matplotlib.pylab as plt
import numpy as np
入力はraw_input()
で行う。
main.py
# 省略
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
式から変化の割合を取得。式は$ rx+i $のような形なので+
より前の文字列が変化の割合になります。それをsplit
で取得します。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
次に切片を取得します。切片が0の場合を考えて取得してみます。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
ic = 0 if le.split("x")[1] == "" else le.split("x")[1]
次はxとyの変化の量を初期化してあげます。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
ic = 0 if le.split("x")[1] == "" else le.split("x")[1]
x_rate = 1
y_rate = 1
次に変化の割合が分数の場合(/で区切られている場合)の処理と区切られていないときの処理を作ります。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
ic = 0 if le.split("x")[1] == "" else le.split("x")[1]
x_rate = 1
y_rate = 1
if rate.find("/") > -1:
x_rate = int(rate.split("/")[1])
y_rate = int(rate.split("/")[0])
else:
x_rate = 1
y_rate = 1 if rate == "" else int(rate)
あとは変化の量で配列を生成します。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
ic = 0 if le.split("x")[1] == "" else le.split("x")[1]
x_rate = 1
y_rate = 1
if rate.find("/") > -1:
x_rate = int(rate.split("/")[1])
y_rate = int(rate.split("/")[0])
else:
x_rate = 1
y_rate = 1 if rate == "" else int(rate)
x = np.linspace(-x_rate / 2,x_rate,4)
y = x * y_rate + int(ic)
最後に配列からグラフを描画します。
main.py
import matplotlib.pylab as plt
import numpy as np
print("Liner equation:")
le = raw_input()
rate = le.split("x")[0]
ic = 0 if le.split("x")[1] == "" else le.split("x")[1]
x_rate = 1
y_rate = 1
if rate.find("/") > -1:
x_rate = int(rate.split("/")[1])
y_rate = int(rate.split("/")[0])
else:
x_rate = 1
y_rate = 1 if rate == "" else int(rate)
x = np.linspace(-x_rate / 2,x_rate,4)
y = x * y_rate + int(ic)
plt.plot(x,y,"r-")
plt.show()
これで完成です!
あとは実行して一次方程式を入力してあげると描画してくれます。
$ 4x+5 $
$ x+1 $
$ -3x-5 $
まだPythonも初心者なのでアドバイス等お願いします。
今気がついたけど式からグラフを出す授業終わってた・・・