generated from prg-titech/prg-thesis-template-ja
-
Notifications
You must be signed in to change notification settings - Fork 0
/
outline.tex
136 lines (102 loc) · 10.7 KB
/
outline.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
\documentclass[11pt, a4paper, oneside, twocolumn, dvipdfmx]{jsarticle}
\usepackage{url}
\usepackage{graphicx}
\usepackage{geometry}
\geometry{top=1cm, bottom=1.5cm, left=1.5cm, right=1.5cm}
\pagestyle{empty}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{intersections,calc,arrows.meta}
\setlength{\intextsep}{10pt}
\setlength{\textfloatsep}{20pt}
\newcommand{\simname}{SimSym}
\newcommand{\simnamealt}{Simulation with Symbols}
\title{\vspace{-5mm}物理系を定義できるシミュレータ \simname の提案}
\author{東京工業大学 情報理工学院 数理・計算科学系\\18B04657 木内康介\\指導教員 増原英彦教授}
\date{}
\begin{document}
\maketitle
\section{はじめに} \label{intro}
高等学校での物理学の授業では、実験は重要である。Holubova~\cite{holubova_2019}は、実験室での作業は理論的な概念を検証する最も重要な方法であり、生徒は実験を通してどのような現象が起きるかを確認することができると述べている。
しかし実際は、生徒全員が実験を経験しているわけではない。力学分野で最も基本的な「運動の法則」に関する実験経験は、2014年の調査時点で60\%にしか満たない~\cite{2015KJ00010038066}。
理由としては、実験用の装置の準備や測定が難しいことや、実験を行うのに時間を要することが考えられる。
そこで実験の代替として近年利用されているのが、物理実験のシミュレータである。シミュレータを用いることで、実験と同様の学習効果を得ることができる~\cite{ajredini_real_2014}。
% TODO: 既存のシミュレータは〇〇という点で不十分である。思いついたら
しかし、既存のシミュレータでは不十分な点が存在する。図~\ref{symbol_based}は実際に生徒が解く問題の例
%TODO: \cite{}
である。このように、理論を学習する上では物理法則やそれを前提とした運動を方程式を通して学習する。一方、例えば
既存のシミュレータである
PhET~\cite{perkins_phet_2006} では、図~\ref{numeral_based}のように速度や質量、位置のような物理量を数値でしか確認できず、描画されている物理系がどのような方程式によって表現されているのかわからない。
\begin{figure}[b]
\noindent\rule{\linewidth}{0.4pt}
\small{\textbf{(問題)} 静止している質量 $m$ の物体に大きさ $F$ の力をかけ続ける。$t$ 秒後の速さを求めよ。}
\small{\textbf{(解答)} 物体の加速度を $a$ とする。運動方程式より $ma~=~F$ $\therefore~a~=~\dfrac{F}{m}$ 。等加速度運動の公式より $v~=~at~=~\dfrac{F}{m}t$\\
答え: $\dfrac{F}{m}t$}
\caption{方程式の計算例} \label{symbol_based}
\end{figure}
\begin{figure}[thb]
\centering
\includegraphics*[width=0.9\linewidth]{figure/PhET_example.png}
\caption{PhET のシミュレーション例} \label{numeral_based}
\end{figure}
そこで本研究では、物理系を定義できるシミュレータである \simname~(\simnamealt) を提案する。学習者は \simname で系内の物体をそのパラメータとともに定義し、その物体の運動を表す方程式を立式する。この際学習者は、次元の異なる物理量の和が存在する不正な方程式を立式すると警告されるなど、正しい物理系を作成するための補助を受ける。シミュレーションを実行すると、定義した物理系に基づいて数値計算がなされ、物体の運動が可視化される。さらに、 \simname には現実の運動を正しく表現した動作例が存在し、学習者が参考にすることができる。
\simname の利点は、
現実の運動を確認できるだけでなく、学習者が定義した方程式と現実の物理法則に従う物体の運動の対応を理解できるという点である。既存のシミュレータはツール側が物理系を全て提供し、学習者はパラメータを指定するだけである。一方 \simname では、学習者は動作例と比較しながら物理系を定義することで、現実の運動がどのような方程式で表されるものなのか理解できる。
なお、\simname は実際にシミュレーションを表示する部分以外は未実装であるが、\ref{sec2}節で説明するアイデアは\ref{sec3}節に記す方針で実装が可能であると考えている。
\section{\simname の構成} \label{sec2}
\simname の画面は、図~\ref{simsym_fig1}のように左半分の物理系定義ペインと右半分の観測ペインに分かれている。
\subsection*{物理系定義ペイン}
学習者は、物理系定義ペインで以下の操作を行うことで、物理系を定義することができる。
\begin{enumerate}
\item \textbf{物体の作成}: 学習者が物体名を入力すると、\simname はその物体に紐付いた物理量に対応する次元付き変数($m_A\mathrm{[M]}, x_A\mathrm{[L]}$ など\footnote{$\mathrm{M}$: Mass(質量), $\mathrm{L}$: Length(長さ), $\mathrm{T}$: Time(時間) などを次元と呼ぶ。例えば速度の次元は $\mathrm{[L/T]}$ と表される。})を生成する。
\item \textbf{方程式の立式}: 学習者は、1.で生成された変数を使って方程式を立式する。この際、次元付き変数は自由に追加することができる。なお、時刻を表す変数 $t\mathrm{[T]}$ や重力加速度 $g\mathrm{[L/T^2]}$ などの物理定数は物体に紐付かない変数として用意されている。また、不正な次元の方程式は警告される。
\end{enumerate}
\subsection*{観測ペイン}
物理系の定義後、以下の操作を行うことで観測ペインに情報が描画される。
\begin{enumerate}[resume]
\item \textbf{観測対象の指定}: 学習者は観測したい物体とその物理量(位置・速度・加速度)を指定する。
\item \textbf{初期値の入力}: 観測対象を指定した際に、その値を計算するために必要な変数が観測ペイン下部に表示される。これらに値を入力する。
\item \textbf{シミュレーションの再生}: シミュレーションを再生すると、時刻 $t$ が変化しながら観測対象の物理量が描画される。物体の位置は座標平面上の位置として、速度と加速度はベクトルとして描画される。
\item \textbf{動作例の選択(オプション)}: 学習者は現実の運動を正しく表現した動作例を選択することができる。動作例と学習者が定義した物理系の運動を比較することで、現実と同じ運動を表現しているか確認することができる。
\end{enumerate}
以下では具体例を見ていく。図~\ref{simsym_fig1}は、\simname 上で $x$ 軸方向の初速が $v_{0x}$, $y$ 軸方向の初速が $v_{0y}$, 重力加速度の大きさが $g$ であるような斜方投射を表現した例である。
\begin{enumerate}
\item 物体 A を作成すると、$x_A$, $y_A$, $v_{Ax}$, $v_{Ay}$ が生成される。初速に対応する変数 $v_{0x}$, $v_{0y}$ を物体 A に追加する。
\item 1. で用意した変数を用いて方程式を立式する。
\item 観測対象の物体として A を選択し、位置と速度を選ぶ。
\item $v_{Ax}$, $v_{Ay}$, $x_A$, $y_A$ を計算するのに必要な $g$, $v_{0x}$, $v_{0y}$ に値を入力する。
\item シミュレーションを再生すると、位置と速度が描画される。
\item 動作例として斜方投射を選択し、観測ペーンに破線で表示された正しい軌道と比較する。
\end{enumerate}
ここで、方程式の立式の際に $v_{0x} + t ~\mathrm{([L/T] + [T])}$ のように次元の一致していない式を定義しようとすると、図~\ref{wrongdim}のように警告される。また、重力加速度の向きを間違え $v_{Ay} = v_{0y} + gt$, $y_A = v_{0y}t + \dfrac{gt^2}{2}$ のように定義すると、図~\ref{wrongmove}の実線のような軌道を描いて運動するが、これは動作例の破線と大幅に異なる。そのため、これは現実の運動を正しく表せていないことがわかる。
\begin{figure}[htb]
\centering
\includegraphics*[width=\linewidth]{work/slide_img5-crop.png}
\caption{\simname 上で斜方投射を表現した例} \label{simsym_fig1}
\end{figure}
\begin{figure}[htb]
\centering
\begin{minipage}{0.35\linewidth}
\includegraphics*[width=\linewidth]{work/slide_wrongdim.png}
\caption{誤った次元の定義例} \label{wrongdim}
\end{minipage}
\quad
\begin{minipage}{0.5\linewidth}
\includegraphics*[width=\linewidth]{work/slide_wrongmove.png}
\caption{誤った運動の定義例} \label{wrongmove}
\end{minipage}
\end{figure}
\section{実装の方針} \label{sec3}
フロントエンドに lively.next~\cite{ingalls_2008} を、方程式の処理と数値計算に
% SymPy~\cite{meurer_sympy_2017}
SymPy~\cite{meurer_sympy_2017} を用い、JavaScript と Python を組み合わせて実装する。lively.next は、GUI アプリケーションを作成・実行するための Web プログラミング環境である。学習者が物体や方程式を定義する画面とシミュレーションを表示する画面を lively.next で作成する。SymPy は記号計算のための Python ライブラリであり、Pyodide~\footnote{\url{https://github.com/pyodide/pyodide}} を用いることで WebAssembly に変換し、ブラウザで実行する。\simname は、入力された物理量や方程式を SymPy オブジェクトに変換することで、数値計算を可能にする。シミュレーションの実行時は、設定された時刻 $t$ の範囲を粒度 $\Delta t$ ずつ変化させる。各方程式に各 $t$ を代入した結果を lively.next が受け取り、描画する。シミュレーションのリアルタイム性を確保するため、各 $t$ を方程式に代入した値は方程式の定義時・変数の値の変更時にあらかじめ計算する。
\section{まとめと課題}
本研究では、物理系を定義できるシミュレータ \simname を提案した。学習者は\simname を用いることで、自身が定義した物理系の運動と現実の運動との対応を視覚的に確認することができる。
今後は、まず実装を進めることが課題である。実装が完成したら、\simname の教育効果を評価する必要がある。評価手法として、Hake~\cite{hake_1998}が導入した normalized gain を用いた実験を検討する。
\bibliographystyle{junsrt}
\renewcommand{\refname}{}
\vspace{-5mm}
\tiny{\bibliography{outline}}
\end{document}