ホーム >  Python > Anaconda >  【matplotlib】Pythonで比例式を解く【高校数学】

投稿日:

【matplotlib】Pythonで比例式を解く【高校数学】

AnacondapydataPython数学

Pythonを使って比例式を解きます。matplotlibパッケージのpyplotモジュールを使います。

比例式の例題

ユウタ君は、1合のお米を炊くとき、炊飯器に200mlの水を入れます。今日は2.5合のお米を炊きますが、水は何ml入れますか?

コンピュータの図形描画に便利な比例式

比例式は、図形を描画するときにとても便利です。前回前々回の直線の方程式を利用すれば、Pythonでも簡単に比例式を扱うことができます。

準備

①VSCodeをインストールします。

MacOSでVisual Studio Codeをインストール

②VSCodeにPython実行環境を作ります。

【MacOS】PythonをインストールしてVSCodeの実行環境をつくる【Python】

③Anacondaをインストールします。

【MacOS】Anaconda3をインストールする【Python3】

④MacPCにインストールしたVSCODEからAnaconda3を利用できる状態にします。

【MacOS】Visual Studio Code(VSCode)にAnacondaの仮想環境を指定【MacOS】

環境

PC MacBook Air (Retina, 13-inch, 2019)
CPU 1.6 GHz デュアルコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3
OS Catalina 10.15.7
Visual Studio Code 1.50.0
Conda 4.9.2
matplotlib 3.4.2
numpy 1.20.3

比例式とは?

そもそも比例式のとは、2つの量の比率を表す値です。

①お米1合に対して200mlであれば、以下のようになります。

\(1:200\)

②お米2.5合に対する水の量をxmlとします。

\(2.5:x\)

③この2つの比は等しいので以下のように表せます。これが比例式です。

\(1:200 = 2.5:x\)

※今回ネックになるのは、「お米:水」の順番です。どちらか一方を「水:お米」の順にしてしまうと比例式は成り立ちません。

比例式は、内項と外項を掛けた値に等しいという性質があります。この性質を利用して、③の以下のような式が成り立ちます。

\(1\times x=2\times 2.5\)

\(x=5.0\)

つまり、お米2.5の時のお米の水加減は500mlとなります。

また、2つの比率を表す\(m:n\)を\(\frac{m}{n}\)のように分数で表すこともできます。

線分m:nを内分点する

数学の世界で、

ある2点を結ぶ直線のことを「線分」と言います。

ある線分を\(m:n\)に分ける点のことを「内分点」と言います。

線分ABを\(m:n\)に内分する内分する点Pをxとします。

APの長さは\(x-x_1\)、PBの長さを\(x_2-x\)で求められます。

この長さの比と\(m:n\)は等しいので、

\(x-x_1:x_2-x=m:n\)

という比例式が成立します。これをxについて解くと、

\((x_2-x)m=(x-x_1)n\)

\(mx_2-mx=nx-nx_1\)

\(mx+nx=mx_2+nx_1\)

\((m+n)x=mx_2+nx_1\)

\((m+n)x=mx_2+nx_1\)

\(x=\frac{mx_2+nx_1}{m+n}\)・・・①

反時計回りに90°回転すると、y軸方向の垂直線になります。

始点を\(y_1\)、終点を\(y_2\)として同じように比例式を立てると、この線分\(m:n\)を内分する点yは次の式で求めることができます。

\(y=\frac{my_2+ny_1}{m+n}\)・・・②

線分の中点を求める方程式

線分を\(1:1\)に分ける内分点を中点と呼びます。

先ほど求めた式①②のmとnに1を当てはめると、

\(x=\frac{x_2+x_1}{2}\) \(y=\frac{y_2+y_1}{2}\)

となります。

つまり、始点と終点のx座標・y座標をそれぞれ平均したのが中点です。以下の場合は、\((\frac{1+4}{2})\) \((\frac{1+5}{2})\)となり、中点の座標は\((2.5,3)\)となります。

垂直二等分線のグラフをPythonで描く

ある線分の中点を通って、その線分と直交する直線のことを垂直二等分線と呼びます。

\((0,1)\)、\((6,5)\)を結ぶ線分を直交する垂直二等分線を求めます。

import matplotlib.pyplot as plt
import numpy as np

#基となる線分の傾きと切片
a1 = (5 - 1)/(6 - 0)
b1 = 1

#線分の中点
cx = (0 + 6) / 2
cy = (1 + 5) / 2

#線分に直交する直線の傾き(a2 = -1/a1)
a2 = -1 / a1

#線分に直交する直線の切片
b2 = cy - a2 * cx

#直線の式
x = np.arange(0, 7)
y1 = a1 * x + b1
y2 = a2 * x + b2

#描画
plt.plot(x , y1)
plt.plot(x , y2)
plt.axis('equal')
plt.grid(color='0.8')
plt.show()

結果:

解説

以下の流れで、垂直二等分線を求めることができます。

#線分に直交する直線の傾き(a2 = -1/a1)
a2 = -1 / a1

①\(a1\times a2=-1\)の法則を利用して、直線の傾きを求めます。

2点を結ぶ直線

cx = (0 + 6) / 2
cy = (1 + 5) / 2


次回

工事中。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告