Skip to content

2022年12月14日時点で判明している修正点

Hiroshi Watanabe edited this page Dec 15, 2022 · 2 revisions

修正点一覧

5刷時点での未修正点。6刷で修正予定。

第2章 条件分岐と繰り返し処理

2.4.3 発展課題「4次方程式の収束地図」

  • 誤 「この方程式には $x \pm 1$$x \pm i$ の4つの解が存在する」
  • 正 「この方程式には $x \pm 1$$x =\pm i$ の4つの解が存在する」 (等号が抜けている)

第3章 関数とスコープ

3.5.3 課題2 コラッツ問題

「1. インポート」で

from graphviz import Digraph

とあるのを、

from graphviz import Digraph
from PIL import Image

に修正(一行追加)。

「5. グラフの作成」のコードが

def make_graph(n):
    g = Digraph()
    edges = set()
    for i in range(1, n+1):
        collatz_graph(i, edges)
    for i, j in edges:
        g.edge(str(i), str(j))
    g.attr(size="10,10")
    return g

となっているのを、

def make_graph(n):
    g = Digraph(format='png')
    edges = set()
    for i in range(1, n+1):
        collatz_graph(i, edges)
    for i, j in edges:
        g.edge(str(i), str(j))
    g.attr(size="10,10")
    g.render("test")
    return Image.open("test.png")

に修正。

「6. グラフの表示」において、「小さすぎる場合は」の直後

g.attr(size="10,10")

g.attr(size="20,20")

に修正。

第5章 文字列処理

5.5.3の節タイトルの課題番号が間違っている。

  • 誤 「5.5.3 課題2 ワードクラウド」
  • 正 「5.5.3 課題3 ワードクラウド」

第7章 再帰呼び出し

7.4.1 課題1-1 階段の登り方問題

「1. ライブラリのインポート」のコード

from graphviz import Digraph

from graphviz import Digraph
from PIL import Image

に修正(一行追加)。

7.4.2 課題1-2 再帰木の表示

「5. 再帰木の可視化」の以下のコード

n = 5
graph = Digraph(format='png')
graph.attr(size="10,10")
kaidan_g(n, graph, [])
graph

を、以下に修正。

n = 5
graph = Digraph(format='png')
graph.attr(size="10,10")
kaidan_g(n, graph, [])
graph.render("test")
Image.open("test.png")

7.4.4 発展課題 迷路を解く様子の可視化

「10. アニメーション用ソルバ」のコードの8行目

filename = "file%03d.png" % index

filename = f"file{index:03}.png"

に修正。

第8章 クラスとオブジェクト指向

8.5.1 課題1 割り箸ゲームの状態クラスの実装とテスト

「1. ライブラリのインポート」のコード

from graphviz import Digraph

import IPython
from graphviz import Digraph

に修正。

8.5.2 課題2 状態遷移図の可視化

「6. ゲーム木の可視化」の「一番下の6つ目のセルに以下を入力、実行せよ。」の後のコード

root = make_tree()
g = Digraph()
make_graph(root, g)

root = make_tree()
g = Digraph(format="png")
make_graph(root, g)
IPython.display.Image(g.render("test"))

に修正。

第9章 NumPyとSciPyの使い方

9.7.2 課題2 行列の低ランク近似による画像処理

「6. 画像の低ランク近似」のコード、

def svd(url, ratio):
    gray_img = mono(url)
    a = np.asarray(gray_img)
    w, _ = a.shape
    rank = int(w * ratio)
    u, s, v = linalg.svd(a)
    ur = u[:, :rank]
    sr = np.matrix(linalg.diagsvd(s[:rank], rank, rank))
    vr = v[:rank, :]
    b = np.asarray(ur * sr * vr)
    return Image.fromarray(np.uint8(b))

def svd(url, ratio):
    gray_img = mono(url)
    a = np.asarray(gray_img)
    w, _ = a.shape
    rank = int(w * ratio)
    u, s, v = linalg.svd(a)
    ur = u[:, :rank]
    sr = np.diag(s[:rank])
    vr = v[:rank, :]
    b = ur @ sr @ vr
    return Image.fromarray(np.uint8(b))

に修正。

違いは以下の通り。

 sr = np.matrix(linalg.diagsvd(s[:rank], rank, rank))
 sr = np.diag(s[:rank])
 b = np.asarray(ur * sr * vr)
 b = ur @ sr @ vr

第14章 簡単な機械学習

14.4.2 課題2 GAN

「7.アニメーションの作成」において「作成された画像を一つにまとめて、アニメーションPNGを作成しよう。」という文章の直後のコードの3行目。

filename = 'img{:04d}.png'.format(i+1)

とあるのを

filename = f"img{i+1:04d}.png"

に修正。