Week 9: グループワーク2(2回目)
今日やること
はじめに
- 最初に少し講義をします。 
- その後、チームに分かれて作業を行います。 
ドット構文
juliaでは、「ある一つの要素を引数にとった処理」に対し、ドットをつけることでそれを「ベクトルに対する処理」に拡張できます。
例をみてみましょう。sinは引数1つをとってそのsinを返します。
sin(1.5)これに対し、当然値が返ってきます。
0.99749では、sinにベクトルをいれるとどうなるでしょうか?
sin([1, 2, 3])これはエラーになります。sinの引数は単一の数字が来ることが仮定されているからです。
ここで、sin関数にドットをつけてsin.としてみましょう。すると、これは「引数がベクトルの場合、そのそれぞれの要素にsinを適用する。出力は入力と同じサイズのベクトル」という意味になります。やってみましょう。
sin.([1, 2, 3])3-element Vector{Float64}:
 0.8414709848078965
 0.9092974268256817
 0.1411200080598672ここでは引数のベクトルのそれぞれにsinを適用したものが返されました。
ドット演算は行列に対しても同様の処理となります。
sin.([1 2 3; 4 5 6])2×3 Matrix{Float64}:
  0.841471   0.909297   0.14112
 -0.756802  -0.958924  -0.279415また、別の例として、掛け算を表す*にドットをつけて.*とすることで、*は行列積ではなく要素積(アダマール積)となります。以下を考えましょう。
a = [1, 2, 3]
b = [4, 5, 6]
a * b上記では、3次元のベクトルa, bを作っています。これに対し行列積を表す*を適用しても、エラーになります(3x1の行列を3x1の行列の間には行列積が定義できないので)
ここで、ドットを付けると、次のように要素積の結果が得られます。
a .* b3-element Vector{Int64}:
  4
 10
 18やってみよう:
上記のドット演算の法則は、自分で書いた関数に対しても成り立ちます。それを確認してみましょう。
チーム作業
先週に引き続き、チームに分かれて作業してもらいます。線形代数の内容について、Juliaで実際に計算してみてください。次回に発表してもらいます。
- 発表時間は「1チーム3分」を目安にしてください。 
- 発表のためにスライドを作ってください。スライドは全員に共有します。例えば以下をふくめるとよいでしょう。 - 実装したものの説明 
- 実行結果 
- 課題・疑問・今後知りたいこと 
 
- 発表では、各PCからzoomに入って画面共有してもらい、前に出てきて発表してもらいます。 
今日終わらなければ、次回までに頑張って作ってきてください。