私が作成した JavaFX アプリケーションを集めました。画像をクリックし、zip ファイルをダウンロードし、適当なディレクトリに解凍して下さい。アプリケーション名.exe をダブルクリックすると実行できます。
- Monty Hall Problem
- Origin Of A Node Its Position And Orientation In Its Parent
- Camera Rotation And Translation
- Group Rotation And Translation
- 破産問題
- 協力ゲーム
- 正比例に近い整数による配分
- 投票ルール
- 公平に分ける
- 線形計画法
- 行列の演算
- Lauch Another Stage
- Alert, Dialog and Stage
- Number Formatter Filter
- Handling Matrix by TableView
- Calendar, using ComboBox<Integer> and StringConverter<Integer>
- Number Place(ナンプレ、数プレ、ナンバープレース)
Monty Hall Problem
箱1、箱2、箱3の3つがあり、そのうちの1つに賞金が入っている。貴方は賞金が入っている箱を当てたい。Monty は賞金がどの箱に入っているかを知っていて、参加者である貴方は知らない。まず、貴方が箱を選び、その次に Monty が他の2つの箱から賞金が入っていない箱を選び、その箱を開いて実際に賞金が入っていないことを示す。その時、貴方は最初に選んだ箱を変えない、または、箱を変える、のどちらかに決めることが出来る。例えば、貴方が箱2を選び、その後、Monty が箱3を開いて賞金が入っていないことを示したとする。その時、貴方は
- 自分の最初の選択(この場合は、箱2を選ぶ)を変えない。(この決定を「維持」と呼ぶことにする。)
- 自分の最初の選択を(この場合は箱1を選ぶに)変える。(この決定を「変更」と呼ぶことにする。)
どちらの決定をすべきであろうか?
利用法はこちら。Monty Hall Problem の数理的扱いはこちら。
JavaFX 3次元グラフィックスの表示位置、移動、回転(の中心)について
このプログラムの内容に関してはこちらを参照して下さい。Eclispe プロジェクトの src フォルダの zip ファイルはこちら。
Camera Rotation and Translation
JavaFX 3Dグラフィックスを利用している。X、Y、Z軸と原点に接して第1象限に置かれた立方体がカメラの回転と移動でどのように見えるか?を扱っている。
赤、緑、青軸がX、Y、Z軸で、先端に球がついている方が正の方である。また、原点に接して正の方向に立方体がある。画面の右のほうにスライダーが5個ある。下の2個はカメラの回転に関するもので、カメラの方位角と仰角を指定できる。両方とも原点を通るある軸を回転軸として指定された角度だけカメラを回転させる。上の3個はカメラの位置を右へ、下へ、向こうへ移動させる。このように方位角と仰角を指定しカメラを回転させたのち、カメラを右、下、向こうへ移動させたら、X、Y、Z軸と立方体がどのように見えるか?が分かる。(マウスよりも左右の矢印キーでスライダーの値を変化させる方が、元の値に戻すことが容易である。)
このアプリケーションはカメラを回転、移動させているが、別のアプリケーションで、カメラを固定し、被写体である座標軸と立方体を入れたグループを回転、移動させることによって、同様のことを実現させている。
このアプリケーションの内容に関しては、こちらを参照して下さい。Eclipseプロジェクトのsrcフォルダのzipファイルはこちら。
Group Rotation and Translation
JavaFX 3Dグラフィックスを利用している。X、Y、Z軸と原点に接して第1象限に置かれた立方体が、これら被写体を入れたグループの回転と移動でどのように見えるか?を扱っている。
赤、緑、青軸がX、Y、Z軸で、先端に球がついている方が正の方である。また、原点に接して正の方向に立方体がある。画面の右のほうにスライダーが5個ある。下の2個はグループの回転に関するもので、カメラの方位角と仰角を指定できる。両方とも原点を通るある軸を回転軸として指定された角度だけグループを回転させる。上の3個はグループを(カメラを主語にして)右へ、下へ、向こうへ移動させる。このように方位角と仰角を指定しグループを回転させ、グループを(カメラを主語にして)右、下、向こうへ移動させたら、X、Y、Z軸と立方体がどのように見えるか?が分かる。(マウスよりも左右の矢印キーでスライダーの値を変化させる方が、元の値に戻すことが容易である。)
このアプリケーションはカメラを固定し、被写体である座標軸と立方体を入れたグループを回転、移動させているが、別のアプリケーションで、カメラを回転、移動させることによって、同様のことを実現させている。
このアプリケーションの内容に関しては、こちらを参照して下さい。Eclipseプロジェクトのsrcフォルダのzipファイルはこちら。
破産問題
破産問題
ある人が借金を抱えて死亡した。残した額は$E$である。借金をした相手(債権者)は$n$人であり、各々への借金の額(各々の要求額)は$d = \left( d_1, d_2, \cdots, d_n \right)$である。ただし、
\[E < \sum_{j=0}^{n}{d_j} \]
である。資産$E$を$n$人の債権者にどのように分けるか?
この破産問題の種々の解(比例配分法、ヘッド法、レベリング法、仁、シャープレイ値、タウ値)を求める。破産問題とそれぞれの解の詳しい説明については、「公平のあり方」(大学教育出版)を参考にして下さい。
利用方法はこちら。
協力ゲーム
協力ゲーム(提携形ゲーム)
プレイヤー$1, 2, \cdots, n$からなる$n$人のプレイヤーが全員($N=\left\{ 1, 2, \cdots, n \right\}$)で協力して利益((全体)提携値)$v(N)$を得た。$N$の部分集合である$S \left( \subset N \right)$のメンバーで協力した時の利益((部分)提携値)は$v(S)$である。これらの部分提携値$v(S) \left( S \subset N \right)$を利用して、全体提携値$v(N)$を$n$人のメンバーにどのように分けるか?
この協力ゲーム(提携形ゲーム)の解(シャープレイ値、仁、タウ値、団結値、最小二乗準仁、ニュー値、比例配分値、等)を求める。解法に関しては「公平のあり方」(大学教育出版)を参考にして下さい。
利用方法はこちら。
正比例に近い整数による配分
正比例に近い整数による配分
分割できない$A$個の資源がある。これを$n$人のプレイヤー;$1, 2, \cdots, n$、に、彼らの要求量になるべく正比例に近く配分したい。いかに配分すればよいか?
この(正比例に近い)整数による配分の種々の解(ハミルトン法、アダムズ法、ディーン法、ヒル法、ウェブスター法、ジェファーソン法)を(優先法または除数法として)求める。整数による配分とそれぞれの解に関しては「公平のあり方」(大学教育出版)を参考にして下さい。また、「優先法と除数法の関係」に関してはこちらも参照して下さい。
利用方法はこちら。
投票ルール
投票ルール
複数人の候補者に対して、各投票者は望ましい候補者からそうでないない候補者まで選好順位をつけている。(投票者が複数のタイプに分かれ、同じタイプに属する投票者は候補者間に同じ選好順位をつけている。)全ての投票者の選好をまとめて、最も望ましい候補者と最も望ましくない候補者(勝者と敗者と呼ぶ)を選ぶにはどうすれば良いか?
種々の投票ルール(多数決ルール、ボルダルール、点数式投票ルール、コープランドルール、シンプソンルール)による勝者(と敗者)を求める。存在すれば、コンドルセ勝者(と敗者)も求める。投票ルールについては「公平のあり方」(大学教育出版)を参考にして下さい。
利用方法はこちら。
公平に分ける
公平に分ける
複数の品物を2人のプレイヤーP1とP2で分けようとしている。(1)各品物間の各プレイヤーの選好が順序だけしか分からない場合、(2)合計が100点となるように品物間の選好の程度まで分かっている場合、品物をいかに分けるべきか?
2人のプレイヤーP1とP2の複数の品物に対する選好順序が与えられた時、(厳密な、バランスの取れた、質問段階付きバランスの取れた)交互取りによる配分を求める。また、2人のプレイヤーの複数の品物に対する合計100点の評価が与えられた時、勝者調整法による配分を求める。解に至る途中経過も表示することができる。解法等に関しては「公平のあり方」(大学教育出版)を参考にして下さい。
利用方法はこちら。
線形計画法
線形計画法
複数変数の複数個数の1次不等式制約の下、1次式の目的関数の最大値を求める。
シンプレックス法で線形計画問題(最大化問題)を解くプログラムです。一度に最適解を求めることも、 ステップを追って求めることも可能です。線形計画法やシンプレックス法の基本的なこと等に関しては、「オペレーションズ・リサーチ入門」の該当する部分を参考にして下さい。
利用方法はこちら。
行列の演算
行列の演算
線形代数で登場する、行列に関する次の演算を行う。列ベクトルの集合とみなし、これらの列ベクトルを直交化する。2つの行列の積を求める。与えられた行列の行列式、逆行列、階数、固有多項式を求める。連立1次方程式の解を求める。
列ベクトルを直交化し、行列の積、行列の階数、逆行列、行列式、固有多項式、固有値を求め、連立1次方程式を解くプログラムです。線形代数の基本的なこと、及び、ここで利用されている計算方法に関しては、「線形代数微積分入門」を参考にして下さい。
利用方法はこちら。
Launch Another Stage
Launch Another Stage
ウインドウ中央にウインドウが何個表示されていて、自分はその何番目かが表示されている。ウィンドウ中央下部にある「起動」ボタンを押すことにより、高々1個まで、自分の子として、ウィンドウを表示する。あるウィンドウを閉じれば、その子も閉じる。
この LaunchAnotherStage に関してはこちらを参照して下さい。。
Alert, Dialog and Stage
Alert, Dialog and Stage
いわゆるダイアログボックスとして利用可能な Alert、Dialog、Stage の具体例を表示する。4種類の Alert の例、カラーピッカーで色を選択する Dialog の例、「…について」を表示する Stage の例、がある。
この AlertDialogAndStage に関してはこちらを参照して下さい。。
Number Formatter Filter
Number Formatter Filter
数値を入力するテキストボックスに TextFormatter の Filter 機能を利用する。整数、非負整数、正整数、Double を入力するテキストボックスに TextFormatter の Filter 機能を利用し、ユーザーからの入力を制御する。また、正規表現と文字列を入力し、文字列が正規表現と一致するか否かを表示させる。
この NumberFormatterFilter に関してはこちらを参照して下さい。
Handling Matrix by TableView
Handling Matrix by TableView
数値(整数、非負整数、正整数、Double)や文字列からなる行列を JavaFX の TableView を利用して扱う。編集可能なセルと不可能なセルが混在できる。各列に複数の型のセルが混在できる。利用例として、行列の変更に伴い、最新の整数の総和と Double の総和を表示する。
この HandlingMatrixByTableView に関してはこちらを参照して下さい。
Calendar, using ComboBox<Integer> and StringConverter<Integer>
CalendarFX
起動時には今月のカレンダーが表示される。過去、または、未来のある月のカレンダーを表示させるには、左上の元号コンボボックスから「西暦」、「明治」、「大正」、「昭和」、「平成」、「令和」を選び、その右の年コンボボックスから年を選び、月コンボボックスから表示したい月を選び、「表示」ボタンを押す。または、表示されているカレンダーの上下左右にある「前年」、「翌年」、「<」(前月)、「>」(翌月)ボタンを押す。コンボボックスの下に、表示される月が西暦表示で表示される。また、コンボボックスもその時に選ばれた元号になるべく合わして、表示されている月の情報に変更される。
この CalendarFX に関してはこちらを参照して下さい。
NumberPlaceFX
Number Place(ナンプレ、数プレ、ナンバープレース)
9行9列に並べられた91個のセル(と呼んでおく)に、次のルールが成り立つように、1から9までの数字を入れることである。ただし、あらかじめ、複数のセルに数字が入っており、それらは変更できない。
ルール
各行、各列、各MiniGridにおいて、各数字が丁度1回ずつ出現する。
NumberPlaceFXは上記のNumber Place(数プレ、ナンプレ、ナンバープレース)と呼ばれるパズルを、自動的に生成し(既存のパズルもインポートできる)、自分で解く時の補助をする(自動的に解くこともできる)アプリケーションである。特に、Memo機能を利用すると、紙と鉛筆が不要となる。
利用方法はこちら。