2019年9月16日月曜日

学習環境

ラング線形代数学(下) (ちくま学現文庫)(S.ラング (著)、芹沢 正三 (翻訳)、筑摩書房)の12章(多項式と素因子分解)、7(多項式の α - 進展開)、練習問題9の解答を求めてみる。


  1. k = 1 r b k p 1 m k = p 2 m 2 · · p r m r b 1 + + p 1 m 1 · · p r - 1 m - 1 b r k = 1 r p 1 m k

    分子について。

    p 2 m 2 · · p r m r , , p 1 m 1 · · p r - 1 m r - 1

    の最大公約数は1である。

    ゆえに、

    b 1 p 2 m 2 · · p r m r + + b r p 1 m 1 · · p r - 1 m r - 1 = b

    を満たす

    b 1 , , b r

    が存在する。

    よって、

    k = k = 1 r b k p 1 m k

    と書ける。

    (証明終)

コード

Python 3

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

print('9.')

b = symbols('b')
bs = symbols([f'b{i + 1}' for i in range(5)], integer=True)
ps = [2, 3, 5, 11, 97]
ms = [4, 1, 5, 2, 3]
c = 1
for p, m in zip(ps, ms):
    c *= p ** m

a = b / c
right = sum([b0 / p ** m for b0, p, m in zip(bs, ps, ms)])

for o in [a, right, solve(a - right, *bs, dict=True)]:
    pprint(o)
    print()


def product(i):
    p = 1
    for j, (p0, m) in enumerate(zip(ps, ms)):
        if i != j:
            p *= p0 ** m
    return p


num = sum([b0 * product(i) for i, b0 in enumerate(bs)])

for o in [num, solve(num - b, *bs, dict=True)]:
    pprint(o)
    print()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

C:\Users\...>py sample9.py
9.
      b       
──────────────
16565014950000

b₁   b₂    b₃     b₄     b₅  
── + ── + ──── + ─── + ──────
16   3    3125   121   912673

⎡⎧          b         16⋅b₂   16⋅b₃   16⋅b₄   16⋅b₅ ⎫⎤
⎢⎨b₁: ───────────── - ───── - ───── - ───── - ──────⎬⎥
⎣⎩    1035313434375     3      3125    121    912673⎭⎦

1035313434375⋅b₁ + 5521671650000⋅b₂ + 5300804784⋅b₃ + 136900950000⋅b₄ + 181500
00⋅b₅

⎡⎧          b         16⋅b₂   16⋅b₃   16⋅b₄   16⋅b₅ ⎫⎤
⎢⎨b₁: ───────────── - ───── - ───── - ───── - ──────⎬⎥
⎣⎩    1035313434375     3      3125    121    912673⎭⎦


C:\Users\...>

0 コメント:

コメントを投稿