遊び tokidoki 仕事

数学と音楽と教育と遊び

| おしごと - きょういく - がくせい - ゼミ - イベント | すうがく - おんがく - 数理音楽 - DTM - かがく - scratch
| Art - photo - おきにー - Tips - ものもう - あれこれ | About - Top

The Sieve of Moebius

二次関数y=x2を描く.
で,あらゆる整数p,qの組合せに対し,P(p,p2)とQ(q,q2)を結ぶ.
するとy軸上でこれら線分が通った点を消していくと,素数だけが生き残る.

一見不思議なんだけど,実は線分PQのy切片はいつもpqになることに由来している.
紀元前からエラトステネスの篩として素数をだけ残す篩が知られていたが,
19世紀にメビウスは放物線上の整数点から篩ってみたわけだ.
生徒が二次関数の学習をしたときの,ちょっとした小ネタにできそうな話題.
れいの「教科学」のネタ...

楕円曲線を始めとする代数多様体上の有理点は数論幾何の主対象なんだが,
実は二次曲線であっても色々と面白いことが起こる.
円上の有理点はピタゴラス数全てに対応するが,
これらを制御する力学系が独立に多くの人によって発見されてきた.
その辺りの話はたとえば↓に.

トポロジカル・インデックス: フィボナッチ数からピタゴラスの三角形までをつなぐ新しい数学

トポロジカル・インデックス: フィボナッチ数からピタゴラスの三角形までをつなぐ新しい数学

で,このメビウスの篩の元ネタは
ありとあらゆる方面に長年にわたり精力的な研究を続けていらっしゃる,
本業は数学者ではない,佐藤 郁郎氏のページから.
メビウスのふるい
がんセンターに勤めながら,この膨大な数学コラムの山.

おもしろそうだったからBASICで作ってみた.
↓クリックで拡大

REM
REM [Moebius sieve]
REM Ver. 2015/05/02
REM

INPUT  PROMPT "maximal number":maxN
LET maxX=INT(SQR(maxN))
DIM pr(2 TO maxN)
FOR k=2 TO maxX
   FOR l=2 TO INT(maxN/k)
      LET pr(k*l)=1
   NEXT l
NEXT k
SET WINDOW -maxX*1.05,maxX*1.05,-maxN*.05,maxN*1.05
DRAW axes(INT(maxX*.1),INT(maxN*.1))
SET LINE COLOR 2
FOR x=-maxX TO maxX
   PLOT LINES: x,x^2;
NEXT x
PLOT LINES
SET LINE COLOR 3
FOR j=-2 TO -maxX STEP -1
   FOR i=-j TO INT(-maxN/j)
      PLOT LINES: j,j^2; i,i^2
   NEXT i
NEXT j
DRAW axes(INT(maxX*.1),INT(maxN*.1))
SET POINT COLOR 4
SET POINT STYLE 4
FOR k=2 TO maxN
   IF pr(k)=0 THEN PLOT POINTS: 0,k
NEXT k
END

芸は身を滅ぼす?

度々,免許更新講習やら訪問授業やら高大連携やらで
有名な27 card trickをやってきたのだけど,
その仕組みを説明するときPower Pointでのアニメーションでは説得力がなかった.
しかしBASICでやるのもビジュアルにあまり楽しくないし,ってことでScratchで作ってみた.
f:id:okiraku894:20150425154127p:plain
別に27枚でなくても良いのだけど3進数表示にマッチすることだし,
基数システムの話題に載りやすいので27枚でやっている.

スタートさせると27枚が番号付きで積みあがるので,その中から1枚クリックして選ぶ.
そしてDealボタンを押すと3つの山に配られ,
その後選んだカードのある山を真ん中にして3山を重ねる.
またDealボタンを押す...を多くても3回繰り返せば,
選んだカードは必ずB山の真ん中にくる.
その様子が見えるように作った.

さてなぜ必ず真ん中に来るか.
それは選んだカードのある山を真ん中に挟む操作が,
3進数で番号付けした各桁を順に特定することになるからだ.
そしてこの考え方を応用すると色々カードマジックができそうだ.
しぶしぶ講義する羽目になった「教科学」で実験するかもしれない.
そうなんだ,いつもは文系や一般人や高校生相手の話題だから
それほど突っ込んだ話にしなくても喜んでくれるのだけど,
「教科学」は数学の学生相手.すぐに見破られてしまうので,
ネタ探しに毎週土日を潰す羽目になってしまった.

「芸は身を助ける」というのが一般的に知られているが,
一方で「芸は身の仇」とも言うらしい.
何だろう,何か間違った方向にどんどん進んでいる気がしてならない.
(はいそこ,「今さら」とか突っ込まない.)

こどもたちはやり方を知りたいと思うと,それを学習するのです.

さあ,新年度開始.だから初年次演習も始まる.
過去2年やってみたが,何か地に足がついた講義になっている気がしない.
それは何より私自身,主張はあれど
それを実現するきちんとした基盤を持てないでいるからだ.
それでも明日から始まる.今回,もう少しだけ形を変えてみたい.
何か学生が自発的に「学び」に気付く方法は無いものかと.

で,再びふらふら歩いていたら,TEDの良いトークにぶつかった.
スガタ・ミトラの自己学習にまつわる新しい試み,だ.www.ted.com
そこから印象深い言葉を幾つか拾おう.
「こどもたちはやり方を知りたいと思うと,それを学習するのです.」
またこのトークではアーサー C.クラークと対談したシーンがあるのだが,
そこでのアーサーの言葉.
『機械で替えがきく教師は 替えるべきだ』
『子どもたちが興味を抱いたとき,そこに教育が生まれる』

それに続いて,
「これは間違いなく 人の役にたちますよ.
 子どもたちは やり方をすぐ理解して夢中になって面白いことを探しますからね.
 興味を持てれば教育を受けているのと同じことです.」
そしてトークの最後は次で締めくくられる.
教育は自己学習システムです.そこでは学習が創発的現象なのです.
実験的に証明するには数年かかるでしょうがやってみるつもりです.」

とりあえず,明日からの初年次ではこのトークの一部を紹介するつもりだ.
教えられることに慣れ過ぎた学生に,小さな変化を起こす導火線になればと.

統計とコンピュータも方法を大きく変えたいと思い,プロジェクト学習なんかも視野に入れて
(もちろんとてもそんな大がかりなことはできないけど)講義を考え直している.
その参考とした書物の中に次の言葉があった.
そうあって欲しいという教育者の願いが込められた言葉に思える.

「子どもは教えないと何も知らないかもしれません.
しかし大事なことはすでに知っている気もします.
人間は知識の入れ物ではありません.
その深いところに『高き心』や『知』を希求する魂や
『考える』ということでしか良き未来への道はないことを知っているかのような存在
と私には感じます.」

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

おっと,いつものあれももちろん.

人を伸ばす力―内発と自律のすすめ

人を伸ばす力―内発と自律のすすめ

箱ひげ図自動作成マクロ作ったよ

統計教育の必要性が叫ばれ始めて随分と経つそうだ.
そして今年度もやがて始まる講義,統計とコンピュータ用に作ってみた.
講義内容・方法を全面的に変えようと画策しているが,未だ目処が立たず.
ちょっと気が滅入ってきている今日このごろ.
f:id:okiraku894:20150402190751p:plain
五数要約と平均値が書かれていれば,その範囲を選択して【Ctrl+b】をすると
そのシートに箱ひげ図ができあがる,というものだ.
2015/04/27 修正!
項目の方向を自動判定させず常に
横方向が項目となるようにした.
余分な系列が表示されていたので消した.
散布図で平均の位置を描いていたのを変更.
項目が文字だとエラーが出るので訂正した.

あちこちサイトを回ってかき集めた情報で何とか作ったシロモノなので,ソースは汚い.
サーフィンしてみてわかったけど,苦労している人が多そうだから
ここにのっけておく.結構需要高いと思う.
あ,エラー対策してないから,間違った範囲選択でCtrl+bするとマクロ画面に変わります.
20150427_boxplot_macro.xlsm 直

Sub boxplot()
'
' boxplot Macro
'
' 五数要約(上から順に,最大・第3四分位・中央・第1四分位・最小値・平均値)とした表から
' 箱ひげ図を作る
'
' Ver. 2015/04/27
' http://tokidoki.hatenablog.jp/
'
' Keyboard Shortcut: Ctrl+b
'
    Dim box0, dWisker, uWisker, Mean
    
    ActSht = ActiveSheet.Name 'アクティブシート名取得
    Set ActArea = Selection
    ActCell = ActArea.Address '選択範囲のアドレスを取得(項目名,最大~平均値を囲う)
    box0 = Range(ActCell)
    UB = UBound(box0, 2)
    UBB = UBound(box0, 1)
    ReDim boxName(1 To UB)  '(1,i):項目名
    ReDim boxLB(1 To UB) '(2,i):箱の下境界
    ReDim boxMid(1 To UB) '(3,i):中央線まで
    ReDim boxUB(1 To UB) '(4,i):箱の上境界まで
    ReDim dWisker(1 To UB) '(5,i):下ヒゲ長
    ReDim uWisker(1 To UB) '(6,i):上ヒゲ長
    ReDim Mean(1 To UB)  '(7,i):平均値
    
    '五数要約からグラフ表示用のデータに変換
    For i = 1 To UB
        boxName(i) = box0(1, i)
        boxLB(i) = box0(5, i)
        boxMid(i) = box0(4, i) - box0(5, i)
        boxUB(i) = box0(3, i) - box0(4, i)
        dWisker(i) = box0(6, i) - box0(5, i)
        uWisker(i) = box0(2, i) - box0(3, i)
        Mean(i) = box0(7, i)
    Next i
    
    'メインの箱の系列データをセット,グラフをSheet内に配置
    Charts.Add
    With ActiveChart
        .ChartType = xlColumnStacked
        .PlotBy = xlRows
        .SeriesCollection(6).Delete
        .SeriesCollection(5).Delete
        .SeriesCollection(4).Delete
        .SeriesCollection(1).XValues = boxName
        .SeriesCollection(1).Values = boxLB
        .SeriesCollection(2).Values = boxMid
        .SeriesCollection(3).Values = boxUB
        .HasLegend = False
        .Location Where:=xlLocationAsObject, Name:=ActSht
    End With
    
    'メインの箱の色と線を変更
    ActiveChart.SeriesCollection(1).Select
    Selection.Format.Fill.Visible = msoFalse
    ActiveChart.SeriesCollection(2).Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent5
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0.6
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 0, 0)
        .Transparency = 0
    End With
    ActiveChart.SeriesCollection(3).Select
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent5
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0.6
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 0, 0)
        .Transparency = 0
    End With
    
    '上下のひげ.ただし下ヒゲもxlErrorBarIncludePlusValuesで行ったので,
    '使う値dWisker()は負になるよう計算してある.
    With ActiveChart
        .SeriesCollection(3).HasErrorBars = True
        .SeriesCollection(3).ErrorBar Direction:=xlY, Include:= _
            xlPlusValues, Type:=xlErrorBarTypeCustom, amount:=0
        .SeriesCollection(3).ErrorBar Direction:=xlY, Include:= _
            xlErrorBarIncludePlusValues, Type:=xlErrorBarTypeCustom, amount:=uWisker
        .SeriesCollection(1).HasErrorBars = True
        .SeriesCollection(1).ErrorBar Direction:=xlY, Include:= _
            xlErrorBarIncludePlusValues, Type:=xlErrorBarTypeCustom, amount:=dWisker
    End With
    
    '平均値をマーカーのみの折れ線グラフで追加
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(4).Values = Mean
        .SeriesCollection(4).ChartType = xlLineMarkers '折れ線グラフ
        .SeriesCollection(4).Select
    End With
    With ActiveChart.SeriesCollection(4)
        .MarkerStyle = 4 'マーカーは×
        .MarkerSize = 8
        .Format.Fill.Visible = msoFalse 'マーカーを塗りつぶさない
        .Format.Line.Visible = msoFalse '折れ線は消す
        .MarkerForegroundColor = RGB(255, 0, 0) 'マーカーは赤で
    End With
    
    ActiveChart.Axes(xlValue).MajorGridlines.Delete ' 横目盛線消去
End Sub

動機づけの内在化への新たな挑戦―仮結果報告―

本年度前期の大失敗を踏まえ,後期からは
学習環境デザインと動機付けを相当意識して行った,
Scratchによるプログラミングの講義,その実験結果報告だ.
同じタイトルで過去2回投稿したのだけど,その結果報告(仮).tokidoki.hatenablog.jp
tokidoki.hatenablog.jp

最終課題は,「クローンまたはリスト(配列のこと)を使っていれば何を作っても良し」だった.
その先のベクトルを持った,目を見張る作品が幾つも見られたので紹介.

【数理部門】
257-14final
f:id:okiraku894:20150324123155p:plain
いわゆるおまけをコンプリートするのに,何個お菓子を買わねばならないか,
そのシミュレーション.

291-14final
f:id:okiraku894:20150324123159p:plain
いわゆる円周率の音楽.
ただ,よくある単音ではなくコードが自動的につくようになっているところがオリジナル.

【ゲーム部門】
313-14final
f:id:okiraku894:20150324123204p:plain
2048.完全オリジナルではないけど,Scratch作品を事細かに分析してついに作り上げた.

304-14final
f:id:okiraku894:20150324123203p:plain:w400,left
f:id:okiraku894:20150324123202p:plain:w400,right
f:id:okiraku894:20150324123201p:plain:w400,left
f:id:okiraku894:20150324123200p:plain:w400,right


なんと,横スクロールゲームをオリジナルな方法で解決した作品.

320-14final
f:id:okiraku894:20150324123208p:plain
大富豪を作ってしまった学生もいた.

258-14final
f:id:okiraku894:20150324123209p:plain
いわゆるリズムゲーム.

【表現部門】
246-14final
f:id:okiraku894:20150324122959p:plain
魚の動きが,なんと創発的になっているんだよ.

290-14final
f:id:okiraku894:20150324123158p:plain:w400,left
f:id:okiraku894:20150324123157p:plain:w400,right
f:id:okiraku894:20150324123156p:plain:w400,left


季節の移り変わり作品は幾つかあったけど,もっとも美しかった.

314-14final
f:id:okiraku894:20150324123207p:plain:w400,right
f:id:okiraku894:20150324123205p:plain:w400,left
f:id:okiraku894:20150324123206p:plain:w400,right


ちょっとホラーっぽいけど,ジブリ的な作品.
徐々に明るくなっていく背景や,遠くに一瞬だけ現れる「シシ神」,
ひとりずつぼーっと現れる「こだま」やゆらゆら降ってくる光の玉.
地味なんだが味わいある作品になった.


さて,こうして最終作品からいくつか紹介したのだけど,
早期から自発的に試行錯誤を繰り返していた学生ほど到達度が高かったように思う.
もちろん時間制限があるので結果として表現できずに終わった学生も多いだろう.
また,今回のScratch,飛び道具なのでこれで反応がなければ為す術ナシ,
という背水の陣体勢でぶっ込んでみたのだけど,
BASICを使っていた時代からすると多少は学びへの動機付けに寄与したかもしれない.
ただ,自分の講義の悪い癖は,彼ら学ぶものにとって学びの到達点が見えにくいこと.
多くの場合放りっぱなしになる.次は真面目にルーブリック作りから準備かな.

この4月からの統計教育の講義,大きく方法を変えるつもりなのだが,
今のところ手詰まり感たっぷり.再び背水の陣で挑むことになりそうだ.

俄に勉強を始めた次第.

「主体的学び」につなげる評価と学習方法―カナダで実践されるICEモデル (主体的学びシリーズ―主体的学び研究所)

「主体的学び」につなげる評価と学習方法―カナダで実践されるICEモデル (主体的学びシリーズ―主体的学び研究所)

  • 作者: スー・F.ヤング,ロバート・J.ウィルソン,Sue Fostaty Young,Robert J. Wilson,土持ゲーリー法一,小野恵子
  • 出版社/メーカー: 東信堂
  • 発売日: 2013/05
  • メディア: 単行本
  • この商品を含むブログを見る
問題解決学としての統計学―すべての人に統計リテラシーを

問題解決学としての統計学―すべての人に統計リテラシーを

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

プロジェクト学習の基本と手法―課題解決力と論理的思考力が身につく

あ,もちろんいつものあれもサブリミナルのように置いておくよ.

人を伸ばす力―内発と自律のすすめ

人を伸ばす力―内発と自律のすすめ