2点間を通る直線の式
Pythonで連立方程式を解くことが出来たら、2点間を結ぶ一次方程式も導き出せるので
Pythonで書いてみます。
2点の位置 (-1, -5) (3, 3)
-
-
-
-
-
- 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))
-
-
- ax.minorticks_on()
-
-
- ax.grid(which="major", color="black", alpha=0.5)
- ax.grid(which="minor", color="gray", linestyle="--", alpha=0.5)
-
-
- ax.spines['bottom'].set_position("zero")
- ax.spines['left'].set_position("zero")
-
-
- x = np.arange(-10, 10)
-
-
- x1, y1 = (-1, -5)
- x2, y2 = (3, 3)
-
- a = Symbol("a")
- b = Symbol("b")
-
-
- s1 = a * x1 + b - y1
- s2 = a * x2 + b - y2
-
- result = solve((s1, s2))
-
-
- print(result)
-
-
- y = linear(result[a], result[b], x)
-
-
- ax.plot(x, y)
-
-
- ax.plot(x1, y1, marker="o")
- ax.annotate("(-1, -1)", xy=(x1, y1), color="red")
-
- ax.plot(x2, y2, marker="o")
- ax.annotate("(3, 3)", xy=(x2, y2), color="red")
- plt.show()
#! /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点間から一次関数のグラフが描画出来ました。