Introduction
数学の定義を理解するために、普通はその定義に関する計算などをやってみますが、
ここでは、それに代わって、コンピューターを使って対話的に操作をする
ことによって理解するということを考えます。
そうすることによって、紙の上でできる計算よりも複雑な定義を
理解することができるということを目指しています。
しかし、それを実現するためには、現在普通に使われているユーザーインターフェイス
では難しいと考えられます。
この問題を解決するため、新しいユーザーインタフェイスを考えていくことが第一の目標です。
さらに、(ここでの実現は難しいとは思いますが)もし可能ならば、
そのユーザーインタフェイスを使って
実際の数学の問題も解けるということも目標としています。
このような目標を実現するために、
ここではいろいろ実験的に作ったものを発表していく予定です。
ここに発表するものは、だいたい次のような目的を持っています。
-
(1) 数学(代数)の概念をコンピューターを使って対話的に操作しながら
理解するための方法を提案する。
-
(1-1) 帰納法を含む計算ができる。
-
(1-2) 式の変形の操作を含む計算ができる。
-
(2) そのためのユーザーインターフェイスについて考察し、
新しいスタイルのコンピューターの使い方を提案する。
-
(2-1) 帰納法を含む計算ができる。
(2-1-1) 理論 (2-1-2) ユーザーインターフェイス
-
(2-2)「木」を操作するユーザーインターフェイスによる計算ができる。
(2-2-1)理論 (2-2-2)ユーザーインターフェイス
-
(2-3) PDA、携帯電話などで使えるようなユーザーインターフェイスを持つ。
(ペン、音声による入出力、電卓のようなユーザーインターフェイス)
-
(3) 数学(代数)の基本的な考え方を習得するための練習ができる。
-
(3-1) (1)への導入として、 文字を使った式の計算を行い、数の成り立ちを理解することができる。
-
(3-2) (1)(2)への導入として、計算の仕組みを理解することができる。
-
(4) プログラミングの基本的な考え方を習得するための練習ができる。
-
(4-1) (2)への導入として、文字を使った式の計算を行い、関数の定義を行うことができる。
-
(4-2) オブジェクト指向プログラミングについて考える。
-
(4-3) 論理プログラミングについて考える。
個々の項目の大まかな目的は以下のようになります。
Mathematics
10進法でのかけ算、わり算のやり方を、
対話的に操作をしながら理解することができるようになることが目的です。
かけ算をたし算とシフトで、わり算をひき算とシフトで行うという、
コンピューターの動作原理(大げさ?)を理解することができます。
電卓風のユーザーインターフェースは、PDA、携帯電話向けです。
-
分類: (3-2)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品(電卓風)
2つの整数(Z, Z[i], Z[ω])の最大公約数を求めるときの
操作をステップごとにやってみることことによって
理解することができるようになることが目的です。
また、最大公約数を求めるプログラムを作ることができます。
ただしこれはあまり使いやすくないので、改良したいと思っています。
それとこれを理解することは、「フェルマーの大定理の3の場合」の証明を
理解するために必要となります。
-
分類: (1)(4-1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
整数を素数の積に実際に分解することができます。
そのことによって実際に分解できることを理解できるようになることが目的です。
また、素数を求めるプログラムを作ることができます。
ただしこれはあまり使いやすくないので、改良したいと思っています。
それとこれを理解することは、「フェルマーの大定理の3の場合」の証明を
理解するために必要となります。
-
分類: (1)(4-1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
連立1次方程式を解くときの
操作をステップごとにやってみることことによって
理解することができるようになることが目的です。
電卓風のユーザーインターフェースは、PDA、携帯電話向けです。
また、代数方程式の解法、「フェルマーの大定理の3の場合」の証明を理解するために
必要となります。
-
分類: (1)(3-2)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品(電卓風)
根の置換を使って代数方程式をべき根によって解く方法を、
対話的に操作をしながら理解することができるようになることが目的です。
体の拡大との対応まで書けるとよいのですが、
体の拡大の説明ができていません。
これを説明するために、
「ある演算を持つ集合があって、その集合の元を代表してある文字で表すとし、
その文字をその集合に付け加えた集合に対しても演算の規則が成り立つとすると、
新しい集合を定義することができる」というようなことを、
他の項目で書いていく予定です。
-
分類: (1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
「フェルマーの大定理」の3の場合を、イデアルを使って証明する手順を、
対話的に操作をしながら理解することができるようになることが目的です。
この証明は参考文献にある証明をイデアルを使って書き直したものです。
一般の場合の「フェルマーの大定理」が証明できればもっとよいのですが、
どうやって証明するのかを知りません。
-
分類: (1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
環の定義を
対話的に操作をしながら理解することができるようになることが目的です。
環の定義だけからわかるいろいろなことを、実際に証明してみることができます。
群で同じようなことをやろうとしても、群の定義だけからわかる結果はあまりないです。
-
分類: (1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
自然数の定義を
対話的に操作をしながら理解することができるようになることが目的です。
また、式を組み合わせて帰納法の証明を行う方法を提案しています。
帰納法については、別の項目でも扱っています。
この方法を発展させて、もっと高度な証明をやりたいと思っています。
-
分類: (1-1)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
群の定義を
対話的に操作をしながら理解することができるようになることが目的です。
(b)は、群の定義の一部から他のものを導くことができる、ということを
(本来は)自動的に(ここではちがう)示すことができるというものです。
ここには、これ自体を発展させたものはありませんが、(a)(c)(d)の導入のためにあります。
これ自体も数学としても計算のためのシステムとしても面白いです。
(a)(c)は群の定義の一部を使って他の式を変形していくというものです。
(a)は電卓風、(c)は新しく作った式の操作をするユーザーインターフェイス(ペン向き)となっています。
どちらもPDA向き((a)は携帯電話でも可)になっています。
(d)は(c)と同様のユーザーインターフェイスで群の定義の一部の式を組み合わせて
群の定義を導くというものです。
-
分類: (1-2)(2-2-2)
-
言語: JavaScript, Java, C++
-
ユーザーインターフェイス: 普通のformの部品(電卓風)、式の操作をするユーザーインターフェイス
選択公理から「Zornの補題」を導く手順を、
対話的に操作をしながら理解することができるようにしようと思ったのですが、
今のところ説明だけで、動かすことはできません。
-
分類: (1)
-
言語: なし
-
ユーザーインターフェイス: なし
Fractal図形を描画するプログラムを、木の操作をするユーザーインターフェイス
を使って作る方法を提案するのが目的です。
(a)はGUIなし(テキストで入力)、(b)はTreeViewという、木の操作を行う一般的な部品を使ったもの、
(c)(d)は独自のユーザーインターフェイスによるものです。
(d)はPDA向けになっています。(Zaurus用あり)
-
分類: (2-2-2)
-
言語: Java, JavaScript, C++, Visual Basic
-
ユーザーインターフェイス: 木の操作をするユーザーインターフェイス1, 2
定規とコンパスによる作図を実際にやってみることができます。
そのことによって作図の方法を理解できるようになることが目的です。
Zaurus用もあります。
-
分類: (3-2)(2-3)
-
言語: Java
-
ユーザーインターフェイス: 普通のJavaの部品
円の面積を多角形で近似するにことを実際にやってみることによって
円の面積を求める方法を理解できるようになることが目的です。
Zaurus用もあります。
-
分類: (3-2)(2-3)
-
言語: Java
-
ユーザーインターフェイス: 普通のJavaの部品
順序に従って式を簡単にしていくことができます。
このことによって、式を簡単にしていくときの順序を
理解することができるようになることが目的です。
Zaurus用もあります。
-
分類: (3-2)(2-3)
-
言語: Java
-
ユーザーインターフェイス: 独自のもの
10進法でのかけ算のやり方を、
対話的に操作をしながら理解することができるようになることが目的です。
上の「かけ算・わり算」とは違ってコンピューターは何も計算をやってくれません。
全部自分でやらなければいけません。
上の「かけ算・わり算」が手回し式計算機のようなものだとすると
こちらは算盤のようなものです。
計算にもいろいろなレベルがあるので、こういう練習も必要ではないかということで
作成しました。
PDA向けになっています。(Zaurus用あり)
-
分類: (3-2)(2-3)
-
言語: Java
-
ユーザーインターフェイス: 数字を表示する独自のもの
Computing
論理プログラミング言語Prologの基本的なプログラムを実行することができます。
このことによって、論理プログラミングの考え方を
理解することができるようになることが目的です。
-
分類: (4-3)
-
言語: JavaScript
-
ユーザーインターフェイス: 普通のformの部品
単一化アルゴリズムとその結果が最も一般的な単一化代入になることの証明と、
単一化アルゴリズムを論理プログラミング言語で記述する方法を説明しています。
-
分類: (4-3)
-
言語: なし
-
ユーザーインターフェイス: なし
論理プログラミング言語で帰納法による証明をする例(自然数、群1、群2、リー代数)
について説明しています。
このような証明をするプログラムを作ることが目的です。
-
分類: (2-1-1)(4-3)
-
言語: なし
-
ユーザーインターフェイス: なし
コンピューターでリスト、2分木、半群、可換半群、べき等律をみたす可換半群
自然数、重複を許す集合、自然数上の多項式、環上の多項式、木
を表す方法について説明しています。
これと、論理プログラミングを組み合わせて、
問題を解くプログラムを作ることが目的です。
また、コンピューターで上記のようなオブジェクトを表すときに、
オブジェクトの間に順序を導入することによってオブジェクト指向
のクラス間の関係を表すことができるということを将来的には説明したいと
考えています。
さらにこのプロセスは、ある代数的構造に要素を付け加えていって
別の代数的構造を作るということも表しています。
このことはまた別の項目で書きたいと考えています。
-
分類: (2-2-1)(4-2)(4-3)
-
言語: なし
-
ユーザーインターフェイス: なし