11/25 パターン認識(1)



試験について


前回の感想,質問より

Q.
同様に(使い道があまりなさそうですが)与えられた正則行列の逆行列を求める方法もプログラムで書けるのではと思いました。
A.
お気づきのようにGauss-Jordan法を使って逆行列を求めることができます.逆行列にしても,連立一次方程式の求解にしても,一般にはGauss-Jordan法より高速なアルゴリズムが使われることが多いので,興味があったら調べてみてください
Q.
c=[[1, -50, -3, -90], [-85, 2, -25, -6], [79, 5, 30, -1]]
gj(c)
gjp(c)
を実行したが,gj(c)とgjp(c)で結果が変わらなかった.
A.
第6章の練習,投票の「Gauss-Jordan法(Pivoting)」に 「一度解を求めると b が書き変わってしまうので,もう一度解く前にbを設定し直す必要がある.」 とかきましたが,今回の結果でも
gj(c)
の実行後にcが書き換わっているので,
gjp(c)
の実行前に,もう一度
c=[[1, -50, -3, -90], [-85, 2, -25, -6], [79, 5, 30, -1]]
を実行する必要があります.
Q.
maxrowの穴埋めで,
    if abs(a[max_i][k]) < abs(a[i][k])
      # 穴埋め
    end
となっていますが,elseはなくても良いのですか?
A.
「条件が成立した時にある文を実行して,成立しない時には何も実行しない」場合は elseはなくても構いません.教科書やスライドを見直してみましたが,5章で特に説明なくそのような例が出てきていたようですね.説明不足でした.

前回の課題について


投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票


今日の課題