52

数式処理を sympy で教えてみた (涙)
関西学院大学理工学部

西谷滋人

Shigeto R. Nishitani, Department of Informatics, Kwansei Gakuin University

1

はじめに
2004年より関西学院大学理工学部情報科学科の3回生に対して,Maple を使って数式処理演習を行なってきました.そこでの演習形態の特徴は,アクティブラーニングの一形態となる反転授業 [1] です.あらかじめ,作成したテキストを配布しておき,学生が自身の PC にinstall しているソフトを使って予習してきてもらいます.そして,演習中にはそれと関連する課題を仕上げます.さらにその作業の進め方は,ペア作業から,ペア試験,さらにペア評価へと変遷してきました.これらの内容はすでに RIMS 研究集会で報告しており,また報告書に記載しているので,そちらを参照ください [2, 3, 4]. アン
ケート結果を見る限り,学生の反応はいいのですが,問題は,このような手間暇かけている割に,スキルの定着が低いという現実でした.そこで,本年度は使用言語をpythonにかえて,同じテキスト内容,演習方式,試験方式,試験レベルで行い,比較しました.

最終的なテストの成績で比較すると表1の通りであり,pair 方式のテストで7点,個別personal 試験で15点の減少という結果でした.演習内容,試験方式,試験レベルについて詳しく述べ,学生からの訴えについて考察を加えます.

表1: 17,18年度の各試験の平均点.

\frac{yearpairpersona1}{201777.4163.05}
2018

2

70.54

48.54

演習内容

テキストは一般公開するため,github にあげて [5] , nbviewer から見れるように設定しています [6]. これらは,長年改定を加えてきたMaple のテキストをpython のsympyおよびscipy (numpy をふくむ) ライブラリを利用するようにcommand を変更しました.
学生 PC は関西学院大学が提供する windows7で動く PC にanaconda, jupyter notebookをinstall しFireFox で動くようにしています.jupyter notebook の使用法は少し慣れが必要ですが,web browser の通常の操作であり,GUI(graphical user interface) での直観的な入力\bullet

編集が可能であるため,学生には馴染みやすいようでした.ただし,IE でjupyter notebook が反応しない (browser の再起動)

53\bullet

起動時の home directory がどこかわからない\bulletpfintout の一部が欠ける (IE のバグ FireFox で解決)

\bulletinit session () が効かない (パッチが出ていたが,適用稼働に自信がないため見送り,再起動で対応)などの些細な問題が当初ありましたが,概ね順調に授業は進行しました.対応策を括弧内に示しています.授業の進め方は,\bullet

テキストの単元を指定して,次の週までに予習\bullet

固定したペアで課題を解き,\bullet

ペアで一つのレポートを提出.

です.

3

試験形式と内容
試験はペアで自由に相談ができるペア試験を中間試験とし,一切の相談ができない個別personal 試験を最終試験として課しました.
表2: 各年度x の \equivD\wedg試,験内 \overlin{A^\ovalbx{\tsmalREJCT}\ovalbx{\tsmalREJCT} とその配配 \ovalbx{\tsmalREJCT}^{[,\ovalbx{\tsmalREJCT}\ovalbx{\tsmal REJCT}5.

年度

内容 (配点)

平均点

2013

微積分 (10+15)+ 線形代数 (10+15)+ センター (25+25)

71

2014

微分 (10+10)+ 積分 (10+10)+ 線形代数 (10+10)+ センター (40)
微分 (15+10)+ 積分 (15+10)+ 線形代数 (15+10)+ センター (5+20)

69
57

2017

微積分 (15+15)+ 線形代数 (15+15)+ センター (10+30)
微積分 (15+15)+ 線形代数 (15+15)+ センター (10+30)-2018

微積分 (15+15)+ 線形代数 (15+15)+ センター (10+30)

49

86lash }\overline{2012\prime_{I^{1}I}\{微_{}J\supset(10+10)\Supset\not\supset(10+10)+ 線_{}t線形_{}\ovalbox{\t \small REJECT}^{\ovalbox{\t \small REJ代代ECT}R\star^{\backsl^{h\p数rime}\ovalbox{(10+10)+\t \small REJECT}} ^{\ovalbox{セ\t \smal\slqrt[\REJbackslash]{}ECT}タ\backs-(20+20)
lash }+積^{} \ovalbox{\t \small REJECT}\backslash ,E_{\backs2015
2016

8062

内容と配点は表2の通りです.センターと書かれたのは,センター試験の数 IA ある

いは垣 B の穴埋め問題をそのまま使った問題です.2012, 13年度は2問ずつ出していました.しかし,2014年度にその一部を簡単には解けない数値に変更した問題を試しました.その後,2015年度以降は,センター試験のままと改変した問題の2問を出し,その配点を示してます.今年度は,そのままの問題は 「2015年度大学入試センター試験 追

試 数学 II\cdot B 第2問(2) 」を使い,その一部を変更しました.変更前は,座標平面上の放物線 y=1-x^{2} を C とする.

\frac{1}{2}<b\leq 1 として,放物線 C 上の2点 Q (‐1,0) と R(1-b, 2b-b^{2}) を通る直線を m とする.

54という冒頭の箇所に対して,前間の放物線 C の方程式を y=1-0.5x^{2} として問題を解け.放物線 C 上の2点は Q(-\sqrt{2},0) とR(轟 -b, 1-(\sqrt{2}-b)^{2} ) と読み替えよ.また, S_{2} を求めるときの範囲は轟 -b\leq x\leq b と読み替えよ.また,数値解となるので,答えはかっこによらず小数点となる.としています.これによって,\bulletセンター試験のままの問題で解答を確認しながら,\bullet

数式処理のスクリプトを書き,\bullet変更を加えた未知の問題に適用しながら,\bullet

汎用性の高いスクリプトに仕上げるという,数式処理で必要な試行錯誤のスキルを身につけることを狙っています.

4

試験結果
図1に12‐17年度の最終個別試験の結果を示しました.ペア試験,評価を始めた当初は,非常に高い平均点でしたが,より実践的なスキルが必要となるセンター試験改変問
題を2014年に導入して以降ここ数年は,ある程度のところで落ち着いていました.点数

分布を見ても,2012‐15にかけては,ほぼ全員がスキルを身につけていると判断できる,高得点に分布が偏る指数関数的な分布です.センター試験改変問題は,難しいですが,数式処理のスキルを最も評価できます.そこでその配点を増やしたこの2年間は40‐70点にピークがくる正規分布的な得点分布となっています.
得点分布

1f-1t*21

1I-\iota\tau\yen\\prec u_{1}-1^{\prime 1}t\vartheta.
-1\backslash8-):*1g-1^{\backslash }4\vartheta.

6

12

10Z0

3‐ J

10\ovalbox{\tt\small REJECT} 6U

108Q:‐1 O:oc

図1: 12‐17年度の最終個別試験の結果.

55
これらの結果から,問題の難易度はある程度落ち着いていると判断しています.次に,17年と18年だけを比較すると図2のようになります.ペア試験の結果では,それほど顕著な差が認められません.ところが,最終個別 personal 試験では,大きな差が認められます.特に,17年度にはいなかった 0 点,10点台が極端に増えています.

\overlin{Bsupt\inbse}scoresscores

図2: 17,18年度のペア,個別試験の得点分布.

そこで30点以下が出てきたペア (一部スリーマンセル) の傾向を分類すると,表3の通りになります.

表3: \wedge ° ア( -\ovalbox{\t smal REJ CT}rightarow\vec{D} 部ス リ
\ovalbx{t\smalREJCT}-

マ \sqrt[\ovalbox{\t smalREJCT}]{ セ \ovalbx{\tsmalREJCT} ル) に よる \uparow_{\backslh\mp}ovalbx{\tsmalREJCT}1\ovalbx{\tsmalREJCT}\ovalbx{\tsmalREJCT}\ovalbx{\tsmalREJCT}_{-B[5} の \mathscr{Z} 化化と傾t,\Xiovalbx{\tsmalREJCT} 向D の \ovalbox{\t smalREJ CT}\backslah\star\nearow\supetx^{\Xi_{\backslah} .
\sim\frac{grouppairpersonalgrouppairpersonalgrouppairpersona1} {A8575030B155515C701010}
A65755010

B

40040

C

901050

A657010B

15455515

C75501045

A85209060

B

353065

C90301015

A95307560

C801010

A

556030A70253070

D

35150

A

95302575

A606030

Agroup できるのと,できないのが組んで,できないのが自覚できてなかった.
B group

できてなくて,頑張ったんやけど,片方がダメやった.

C group

できてて,油断した

D group

できてなくて,二人とも諦めたと分類できます.

ペア試験と個別試験の結果の相関図をとると図3のようになります.17年と18年で傾向は変わりませんが,全体的に左下が増え,ペア試験結果の点数にかかわらず,個別試験の点数が悪い学生が増えています.

平均点の減少はpair で7点,personal で15点でしたが,その原因としては,やる気python問題の難易度がその候補として,すぐにあげられます.もう少し裏読みすると,

56

票
擢

錨蔦
\overline{\hat{駆}図3: 17,18年度のペア,個別試験の相関図.
\bullet

ペアの点数が以外と良かったので,甘く見た\bullet問題に,コマンドー発で解ける問題がなかった.

\bulletpair 試験から,personal まで通常一月とるが,今回は2週間しかなかった.

\bullet

前日がポーランド戦やったなども考えられます.確定したことは言えず,もう少し試行を重ねて , 数年間での平均や動向の様子を見る必要があるでしよう.

5

学生アンケート
一方,授業終了後のアンケートには顕著な傾向が見られました.python そのものに対する肯定否定が明瞭であった人数を出すと否定5に対して,肯定は24でした.否定的な意見では,\bulletpython を使うのをやめたほうがいいと思います。maple に戻したほうがいいです。
数式処理実習を行う上で今回のアプリケーションは二重積分すらもしっかり解いてくれないものであったので計算処理をさせる授業を行っているのにあまりにも脆弱ではないのかと思うからです。過去の演習問題の答えを見る限り maple では、そのあたりのことはしっかりしていたのでちゃんと先生がこのソフトを使って1セメスターの間生徒にシステム上の疑問は起こさないように、たとえ起きてもすぐ対応できるようなソフトを使ってほしいと思います。
\bullet

演習全般については、プログラミングが苦手な私にとってはバイソンが少し難しく感じた。過去の試験の解答が Maple の答えしかなかったのでバイソンではどうすればよいのかわからない問題も少しあった。
\bulletPython は理解するのが難しかったが、ペアワークによって、その難しさよりも、授業の楽しさの方が上回った。

57などです.それに対して肯定的な意見は,\bullet\bulletpython に少しでも関われてよかった。

python という時代に即した言語を学習することができてとても良かった。また、教材が GitHub で管理されていることから、直接修正依頼を送ることができ他の授業と比べてスムーズにミスの修正をしていただくことができた。
\bulletはじめて python について学んだがとりあえずコマンドがとても多いと思った。勉
強しても新しいものがどんどんでてきてコマンドがないと実行できない操作が多くこの点が c 言語と大きく違っていると感じた。

でした.特に python が使えるだけで嬉しいと「最新の言語」 , 「 AI 」 など,マスコミで取り上げられている反応をそのまま表明している回答が多数見られました.

6

まとめ
私の印象をまとめると,\bulletCons(否定箇所)
plot3d や数式処理が甘い

mathjax なんでネットがないと,汚いまま二重積分 (累次積分) は確かに悲惨だ,でも本当に必要か?
コマンドの help が見にくい,探しにくい\bulletPros(肯定箇所)
jupyter notebook が便利
latex, html 変換が default で綺麗
mark down が使える

key bind が使える
本格的な前後処理とスムーズにつなげる

deep learning, 機械学習,データの前処理,plot が充実している
世界中の人が使いまくってるなどがあります.python あるいはsympy の数式処理の性能というより,jupyter notebookの編集作業の性能に対する好感触や周辺環境の充実が強みです.まとめると,\bulletMaple は性能は高いが,表示 変換や key 操作の制約がきつく,有償ソフトとか,本格的な coding がしんどいなどの理由から,将来使えそうになく,覚えようという意識は低くて,触らなくなって,そのうち忘れちゃう.

58\bullet一方,sympy は性能は高くないが,学生の食いつきは驚くほどいい.

この差は,学習で最も大切とされる 「動機」 に訴えるんでしょうね[7]. マスコミのおかげで,python はとっても役に立つように見えるんですよ,学生には.私の本音は,「Mapleがjupyter notebook で動くと嬉しい」 んですが...

参考文献[1] 溝上慎一 : 「序」 , 森朋子 溝上慎一 (編) [アクティブラーニング型授業としての反転授業理論編』,ナカニシヤ出版,2017.

[2] 西谷滋人 : 「アクティブラーニングにおけるチーム評価の導入」 , 京都大学数理解析研究所講究録1909, pp.223‐232, 2014.

[3] 西谷滋人 : 「Maple 版ルフィの仲間たちに試練を!! ペア評価による数式処理ソフト教育‐」 , 京都大学数理解析研究所講究録1865, pp.62‐71, 2013.
-[4] 西谷滋人廣岡愛未 : 「パターンとペアプロの数式処理ソフト学習への適用」 , 京都大学数理解析研究所講究録1735, pp.127‐139, 2011.

[5] daddygongon : 「python による数学入門」,https: // github. com/daddygongon/
jupyter_{-}num_{-} calc

[6] daddygongon : 「python による数学入門 (nbviewer) 」,ht tps :// nbvi ewer. j upyt er.
org/github/daddygongon/jupyter_{-}num_{-}calc/blob/master/numerica1_{-}calc/
README. ipynb[7] アーリック

ボーザー : Learn Better, 英治出版,2018.