分12柔道で新しい技を学ぶとき,先ずは練習相手と約束をします。技を掛ける方(取り)は無理な力を使わないこと。技を掛けられる方(受け)は抵抗をしないこと。この約束の下で稽古することで,双方が技の形に集中できます。取りは無理な力を使うと形が崩れます。これでは,いざ本番で技を掛けようとしても力んでしまって技になりません。受けの方も,稽古の時に力んでいると,技の本質を知ることが出来ません。試合で相手が技を出してきても,それと察知することが出来ません。力んで稽古することは,お互いに不利益なのです。数学的な法則やプログラムのアルゴリズムを学習するときにも同じ理屈を適用できます。新しいことを学ぶときには,無理に力んで理解しようとしても,なかなか身に付きません。身に付かないばかりか,本質を見過ごしてしまって肝心のポイントを落としてしまいがちです。ある法則やアルゴリズムが複雑だと感じられるときには,シンプルな具体例を適用してみましょう。楽に処理出来たと感じたら,次のステップへ。具体例では煩雑になりすぎて,これは一般化した方が良いのでは?と感じたとき,そのときこそ,一般化した法則やアルゴリズムに取り組む頃合いかもしれません。行列のスカラ倍とは,行列に含まれる成分を全てスカラ倍することです(式41.2⁠)⁠。具体的な数値をあてはめて,計算した例を示します。式41.2を見ると,行列のスカラ倍の記法の便利さが感じられます。行列のスカラ倍には,ベクトルのスカラ倍と同じように,交換法則や結合法則が成り立ちます。行列同士の乗算は次の手順で実行します。乗算はAの列数nとBの行数pが等しいときのみ可能です。式41.9は乗算結果となる行列Cの(i行目,j列目)成分の値です。計算結果の行列Cは,行数が行列Aの行数m,列数が行列Bの列数qとなります。式41.9中のiとjは,よくプログラム中でカウンタとして用いるアルファベットです。このため,式41.9の操作中に値が変化するものと思いこみやすいのですが,変化するのはkだけです。式41.9は,とてもシンプルな式なのです。「⁠Aについては横移動,Bについては縦移動」と読んでください。行列の乗算を一般的に表すと,式41.9のようにシンプルに表現できるのですが,慣れないうちは,どんな計算なのか具体的にイメージしにくいものです。そこで,小さな行列同士の乗算をしてみましょう。自分の手で具体的な計算手順を追えば,一般式の意味が納得できると思います。行列Aは2列,行列Bが2行ですから,乗算が可能です。行列Cの成分は次の通り。以上の計算の結果,求める行列Cは次のようになります。行列Cの行数はAの行数3,列数がBの列数3となっています。計算のイメージはつかめたでしょうか。行列の乗算を活用する具体的なシーンを想像してみましょう。「今日はチーズと卵の特売日。私は自分と実家の両親の分の買い物に出かけました。チーズはひとつ300円で250gです。卵はひとパック150円で300gです。私はチーズを2つ,卵を3パック。実家のためにチーズを4つ,卵を2パック買いました。自分の出費と実家のための立て替え分はいくらになるでしょう。私の持ち物の重さと,実家のためのものの重さはいくらになるでしょう。」これは次のような式になります。行列を用いると,次のようになります。いかがですか?通常の等式と,行列を用いた式の見事な対応を感じることが出来ましたか?意味はまた別の時にゆっくり考えるとして,ぱっと見て,これら二つの場合のどちらがシンプルでエレガントでしょう。「⁠円」とか「パック」が行列の場合に無いのを差し引いても,行列で表した式には加算の+が表れません。式41.28を省けば,次のようになり,ぐっと魅力的になります。表41.1に,行列の式が表している計算の具体的内容を記入してみました。行列の計算が,左辺から右辺へどのように変容しているかを見ると,更に行列の式の働きがわかりやすいでしょう。式41.30の意図をわかりやすくしたもの今回は,自分と実家の買い物の話でしたが,これが町内会の鍋会の買い出しだったら,ネギに鶏肉に豆腐にみそに・・・ぞっとしませんか?行列で書き表せば,手で書くにしてもずいぶん無駄なく出来そうですよ。行列の乗算に交換法則は成り立たない行列の乗算には交換法則が成り立ちません(※1⁠)⁠。論より証拠,実際に先ほどの計算例の行列を前後交換して計算してみてください。結果はどうなるでしょうか?金額と重さの合計なんて,計算が全く意味をなしていませんね。行列の式を取り扱うとき,交換法則が成り立たないことをしっかりおさえておかなければなりません。※1)これを「行列の乗算は可換ではない」といいます。二つの行列がともに特殊な値を取る場合に可換であることがあります。ここではそのことには触れません。今のうちは,行列の乗算は常に可換ではない,と思っておいた方が良いでしょう。プログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。