Copilotに訊け!
行列の積の練習問題を作った。自作問題のため,自分の計算に不安が残る。
Juliaで検算しようかな,と思って Julia を立ち上げたら,最新バージョンがリリースされたよーってお知らせが表示された。
おっ,それじゃ一丁アプデでもしますかね!とPowerShellを立ち上げたら,そっちも安定板のv7.5.1がリリースされたよーってお知らせが表示された。
どういうコマンドを入力すればアップデートできるのかわからないのでCopilotに尋ねてみたところ,
PS> winget install --id Microsoft.PowerShell --source winget
って入力すればいいんだよーって教えてくれた。
その通りにしたらうまくいった。Copilotに投げた質問文は "winget update Powershell" みたいなインチキコマンドだったので,返答が英語になっちゃったのね。だからこっちも Thnx! って似非英語でお礼を述べたら,ちゃんと通じたみたいでCopilotは上機嫌だった。
数分後に無事アップデートが完了したので,お次はJuliaをアップデート。
PS> juliaup update
これもしばらく時間がかかる様子だったので,デスクトップに貼り付けてあるwxMaximaのショートカットをダブルクリックしてMaximaで検算しちゃった。おかげでお恥ずかしいミスが一か所発覚したので,よかれと思って付した解答例を参照した学生が無用な混乱に陥る懸念が激減した。あとはタイプミスという最難関が控えているけれども。
せっかくなのでVersion 1.11.5 (2025-04-14) に無事アップデートされたJuliaを立ち上げて,そっちでも数値のみの成分を持つ行列の積の検算をしてみた。種となる行列を a と名付けて成分を打ち込んだのち,transpose(a) としてみたら期待通り a の転置が表示された。作成した演習問題は,文部科学省公式の解説書である『行列入門』で a とその転置は a かける転置,と転置かける a,のどちらの順でも積の計算が可能だということが取り上げられていたので,それを参考にしてJuliaでまず b=transpose(a) と入力して a の転置を b とおき,a*b と b*a で二通りの積を計算させてみた。
ちなみに,行列の成分に x と y という文字が入った行列の積の計算を julia でさせられるのかどうか知らないので,そういう演習問題の方はMaximaのみでの検算を行った。その際,思いっきりボケてて,
(%i1) P:matrix([x,y]);
(%i2) Q:matrix([1,2],[2,3]);
(%i3) P.Q.transpose(P);
(%i4) transpose(P).Q.P;
みたいな計算をさせてみたんだけど,(%i4) は 2/1 型と 2/2 型と 1/2 型の行列をこの順に掛け合わせる計算のはずだから,行列の乗法の型の条件が満たされておらず,積の計算などできないはずなのに,なぜか (%i3) の正しい組み合わせの場合と同じ結果が返ってきた。覗いてはいけない闇を覗いてしまったのやもしれぬ。
ちなみに,真ん中に行列 Q を挟まずに
(%i5) P.transpose(P);
(%i6) transpose(P).P;
としてみたら,前者は 1/1 型,後者は 2/2 型の正しい行列が返ってきた。
うーん,だから,つまり,どういうことなんだろう??