## 2020年5月30日土曜日

### 数学 - Python - 代数学 - 1次関数、2次関数 - 2次関数のグラフ - 両座標軸との交点、軸の方程式、頂点の座標

1. $x=0,y=-\frac{3}{2}$
$\begin{array}{l}\frac{1}{2}{x}^{2}+x-\frac{3}{2}=0\\ {x}^{2}+2x-3=0\\ \left(x+3\right)\left(x-1\right)=0\\ x=-3,1\\ \left(-3,0\right),\left(1,0\right)\end{array}$

1. $\begin{array}{l}y=\frac{1}{2}\left({x}^{2}+4x\right)\\ =\frac{1}{2}{\left(x+2\right)}^{2}-2\end{array}$

よって軸の方程式は

$x=-2$

頂点の座標は

$\left(-2,-2\right)$

2. $\begin{array}{l}y=-\left({x}^{2}-2x\right)-3\\ =-{\left(x-1\right)}^{2}-2\\ x=1\\ \left(1,-2\right)\end{array}$

3. $\begin{array}{l}y={\left(x-2\right)}^{2}-1\\ x=2\\ \left(2,-1\right)\end{array}$

4. $\begin{array}{l}y=-2\left({x}^{2}-\frac{3}{2}\right)+2\\ =-2{\left(x-\frac{3}{4}\right)}^{2}+\frac{9}{8}+2\\ =-2{\left(x-\frac{3}{4}\right)}^{2}+\frac{25}{8}\\ x=\frac{3}{4}\\ \left(\frac{3}{4},\frac{25}{8}\right)\end{array}$

各2次関数のグラフ。

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, plot, Rational

print('11, 12.')
x = symbols('x')
ys = [x ** 2 / 2 + 2 * x,
-x ** 2 + 2 * x - 3,
x ** 2 - 4 * x + 3,
-2 * x ** 2 + 3 * x + 2]

class Test(TestCase):
def test10(self):
y = x ** 2 / 2 + x - Rational(3, 2)
self.assertEqual(y.subs({x: 0}), -Rational(3, 2))
for x0 in [-3, 1]:
self.assertEqual(y.subs({x: x0}), 0)

p = plot(*ys,
(x, -10, 10),
ylim=(-10, 10),
legend=True,
show=False)
colors = ['red', 'green', 'blue', 'brown', 'orange',
'purple', 'pink', 'gray', 'skyblue', 'yellow']

for o, color in zip(p, colors):
o.line_color = color

p.show()
p.save('sample11.png')

if __name__ == "__main__":
main()


% ./sample11.py -v
11, 12.
/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sympy/plotting/plot.py:1065: MatplotlibDeprecationWarning:
The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
self.ax[i].spines['left'].set_smart_bounds(True)
/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sympy/plotting/plot.py:1066: MatplotlibDeprecationWarning:
The set_smart_bounds function was deprecated in Matplotlib 3.2 and will be removed two minor releases later.
self.ax[i].spines['bottom'].set_smart_bounds(False)
test10 (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.002s

OK
5