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