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 件のコメント:
コメントを投稿