2点間を通る直線の式
Pythonで連立方程式を解くことが出来たら、2点間を結ぶ一次方程式も導き出せるので
Pythonで書いてみます。
2点の位置 (-1, -5) (3, 3)
- #! /usr/bin/env python
- # -*- coding:utf-8 -*-
- #
- import numpy as np
- import matplotlib.pyplot as plt
- from sympy import Symbol, solve
- # 一次関数のデータを作る関数
- def linear(a, b, ran=np.arange(-10,10)):
- arr = []
- for x in ran:
- y = x*a + b
- arr.append(y)
- # 式から配列データを返します
- return arr
- ax = fig.add_subplot(1, 1, 1)
- # これで正方形になります
- ax.set_aspect('equal', adjustable='box')
- # 表示する幅
- ax.set_xlim(-10, 11)
- ax.set_ylim(-10, 11)
- # グラフの刻み
- ax.set_xticks(np.arange(-10, 10, 5))
- ax.set_yticks(np.arange(-10, 10, 5))
- # 補助線をonにします
- ax.minorticks_on()
- # グリッドの主線と補助線
- ax.grid(which="major", color="black", alpha=0.5)
- ax.grid(which="minor", color="gray", linestyle="--", alpha=0.5)
- # 数値表示を0に合わせます
- ax.spines['bottom'].set_position("zero")
- ax.spines['left'].set_position("zero")
- # xの生成
- x = np.arange(-10, 10)
- # 2点の位置 (-1, -5) (3, 3)
- x1, y1 = (-1, -5)
- x2, y2 = (3, 3)
- a = Symbol("a")
- b = Symbol("b")
- # 2点を連立方程式に変えます
- s1 = a * x1 + b - y1
- s2 = a * x2 + b - y2
- result = solve((s1, s2))
- # 得られた解
- print(result)
- # yの生成
- y = linear(result[a], result[b], x)
- # 得られた一次方程式のプロット
- ax.plot(x, y)
- # 点(-1, -5) のプロット
- ax.plot(x1, y1, marker="o")
- ax.annotate("(-1, -1)", xy=(x1, y1), color="red")
- # 点(3, 3) のプロット
- ax.plot(x2, y2, marker="o")
- ax.annotate("(3, 3)", xy=(x2, y2), color="red")
- plt.show()
このように2点間から一次関数のグラフが描画出来ました。
0 件のコメント:
コメントを投稿