2018年10月6日土曜日

学習環境

数学読本〈1〉数・式の計算/方程式/不等式 (松坂 和夫(著)、岩波書店)の第2章(文字と記号の活躍 - 式の計算)、2.3(整式の最大公約数と最小公倍数と分数式)、整式の最大公約数と最小公倍数の問16-(1)、(2)、(3)、(4)、(5).を取り組んでみる。



    1. 最大公約数。

      x y 2 z

      最小公倍数。

      x 3 y 2 z 3

    2. 最大公約数。

      a 2 b

      最小公倍数。

      a 3 b 3 c 2

    3. x + 3 x - 3 x - 3 x + 1 x - 1 x - 3

      最大公約数。

      x - 3

      最小公倍数。

      x - 3 x + 3 x + 1 x - 1

    4. a + b 2 a + b a - b a + b a 2 - a b + b 2

      最大公約数。

      a + b

      最小公倍数。

      a + b 2 a - b a 2 - a b + b 2

    5. x + y + z x + y - z y + z + x y + z - x z + x + y z + x - y

      最大公約数。

      x + y + z

      最小公倍数。

      x + y + z x + y - z y + z - x z + x - y

コード(Emacs)

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, gcd, lcm

print('16.')

a, b, c, x, y, z = symbols('a, b, c, x, y, z')

ts = [(x * y ** 2 * z ** 3, x ** 3 * y ** 2 * z),
      (a ** 2 * b ** 3, a ** 3 * b * c ** 2, a ** 2 * b ** 2 * c),
      (x ** 2 - 9, x ** 2 - 2 * x - 3, x ** 2 - 4 * x + 3),
      (a ** 2 + 2 * a * b + b ** 2, a ** 2 - b ** 2, a ** 3 + b ** 3),
      ((x + y) ** 2 - z ** 2, (y + z) ** 2 - x ** 2, (z + x) ** 2 - y ** 2)]

for i, t in enumerate(ts, 1):
    print(f'({i})')
    g = t[0]
    l = t[0]
    for s in t[1:]:
        g = gcd(g, s)
        l = lcm(l, s)
    for s in [g, l.factor()]:
        pprint(s)
        print()

入出力結果(Terminal, Jupyter(IPython))

$ ./sample16.py
16.
(1)
   2  
x⋅y ⋅z

 3  2  3
x ⋅y ⋅z 

(2)
 2  
a ⋅b

 3  3  2
a ⋅b ⋅c 

(3)
x - 3

(x - 3)⋅(x - 1)⋅(x + 1)⋅(x + 3)

(4)
a + b

               2 ⎛ 2          2⎞
(a - b)⋅(a + b) ⋅⎝a  - a⋅b + b ⎠

(5)
x + y + z

-(x - y - z)⋅(x - y + z)⋅(x + y - z)⋅(x + y + z)

$

0 コメント:

コメントを投稿