ydydo’s blog

自分用メモ

公文式の問題をPythonでやる(I教材)

家にある公文式の教材をSympyで解いてみる

I.22   平方根

 \sqrt{361} の値を求めよ

>>> math.sqrt(361)
19.0
I.24   平方根

 \sqrt{\frac{1}{9}} の値を求めよ

>>> from fractions import Fraction
>>> sympy.sqrt(Fraction(1,9))
1/3
I.29   平方根

 \sqrt{60} の値を求めよ

>>> sympy.sqrt(60)
2*sqrt(15)
>>> pprint(sympy.sqrt(60))
2?√15
I.32   平方根

 \sqrt{6} \sqrt{12} を計算せよ

>>> sympy.sqrt(6)*sympy.sqrt(12)
6*sqrt(2)
>>> numpy.sqrt(6)*numpy.sqrt(12)
8.48528137423857
I.34   平方根

 \sqrt{12} + \sqrt{27} を計算せよ
この問題はnumpyではダメなことが分かる(こういう計算じゃない)

>>> sympy.sqrt(12) + sympy.sqrt(27)
5*sqrt(3)
>>> numpy.sqrt(12) + numpy.sqrt(27)
8.660254037844386
I.37   平方根

 (2\sqrt{3} + 4) (3\sqrt{3} - 2) を計算せよ

>>> from sympy import expand
>>> expand((2*sympy.sqrt(3)+4)*(3*sympy.sqrt(3)-2))
10 + 8*sqrt(3)
I.39   平方根

 (\sqrt{7} - \sqrt{2})^2 を計算せよ

>>> from sympy import expand
>>> expand((sympy.sqrt(7) - sympy.sqrt(2))**2)
9 - 2*sqrt(14)
I.42   平方根

 \frac{3}{\sqrt{5}} の分母を有理化せよ

>>> from sympy import expand
>>> expand(3 / sympy.sqrt(5))
3*sqrt(5)/5
I.47   平方根

 \frac{2\sqrt{3}+3\sqrt{2}}{\sqrt{6}} の分母を有理化せよ

>>> from sympy import expand
>>> expand((2*sympy.sqrt(3) + 3*sympy.sqrt(2)) / sympy.sqrt(6))
sqrt(2) + sqrt(3)
I.49   平方根

 x=3+\sqrt{3} ,  y=3-\sqrt{3} のとき次の式の値を計算せよ
 x^2+y^2

>>> expr = x**2 + y**2
>>> expr.subs({x:3+sympy.sqrt(3), y:3-sympy.sqrt(3)}).expand()
24
I.51  二次方程式

 x^2 + 3x - 10 = 0 を解け

>>> from sympy import solve
>>> solve(x**2+2*x-15, x, dict=True)
[{x: -5}, {x: 3}]
I.76  二次方程式

 ax^2 + bx + c = 0 をxについて解け

>>> from sympy import solve
>>> solve(a*x**2 + b*x + c, x, dict=True)
[{x: (-b - sqrt(-4*a*c + b**2))/(2*a)}, {x: (-b + sqrt(-4*a*c + b**2))/(2*a)}]
I.82  不等式

 2x > 3 を解け

>>> solve(2*x>3)
(3/2 < x) & (x < oo)
>>> expr = solve(2*x>3)
>>> expr.subs(x,1)
False
>>> expr.subs(x,2)
True
I.95  不等式

連立不等式を解け

 \left\{\begin{array}{rrr}
6x + 5 \geqq 2x - 7\\
2x - 3 \geqq 5x - 9
\end{array}\right.
>>> solve((6*x+5 >= 2*x-7, 2*x-3 >= 5*x-9))
(-3 <= x) & (x <= 2)
I.101  一次関数とグラフ

 y = \frac{1}{2}x +1 のグラフをかけ

y = x/2 + 1
p1 = sympy.plot(y, (x, -5, 5))
I.141  二次関数とグラフ

 y = x^2 +1 のグラフをかけ

from sympy import Symbol, plot
x = Symbol('x')
sympy.plot(x**2)
I.168  二次関数とグラフ

次の2つのグラフの交点の座標を求めよ

 \left\{\begin{array}{rrr}
y = x^2 - 5x + 3\\
y = 0
\end{array}\right.
y1 = x**2 - 5*x + 3
y2 = 0
plot(y1, y2)
solve((x**2-5*x+3, 0))