2017年2月15日水曜日

開発環境

行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の1章(体)、1.7(問題)、複素数の変換の合成、問題1.7.12を取り組んでみる。

問題1.7.12

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import math
import pprint


def transform(a, b, l):
    return [a * z + b for z in l]

l = [0, 1, 1j, 1 + 1j, 5 + 10j]
# a.
# (z + 1+1j) * 2 * math.e ** (math.pi / 2 * 1j)
# = 2 * math.e ** (math.pi / 2 * 1j) * z +
#   (1 + 1j) * 2 * math.e ** (math.pi / 2 * 1j)
a = 2 * math.e ** (math.pi / 2 * 1j)
b = (1 + 1j) * 2 * math.e ** (math.pi / 2 * 1j)
pprint.pprint(transform(a, b, l))

# b.
# (2 * z.real + 3 * z.imag) * math.e ** (1j * (- math.pi / 4)) - 2j - 3
# 存在しない

入出力結果(Terminal, IPython)

$ ./sample7_12.py
[(-1.9999999999999998+2j),
 (-1.9999999999999996+4j),
 (-4+2j),
 (-3.9999999999999996+4j),
 (-22+12.000000000000002j)]
$ 

0 コメント:

コメントを投稿