倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

Groovy

「2つのボールをぶつけると円周率がわかる」らしいのでシミュレーションしてみた

「2つのボールをぶつけると円周率がわかる」 だそうなので、ちょっと便乗記事を。衝突回数が円周率(の桁をズラした値)になることの数学的証明まで追うのは大変そうなので、この記事では 衝突による速度の変化と衝突しなくなる条件を数式で書き下す 衝突回…

2.6 コーヒーの冷却の問題 : プログラミング演習 2.3 数のリストの取り扱い

今回はプログラミング演習2.3『数のリストの取り扱い』(記事一覧)。 Groovy のプログラミング演習デス。問題 a. xmax の値を x と xmax の大きい方の値で置き換えるサブルーチンを書け。 b. 最小値も計算するようなサブルーチンを書け。 キーボードからい…

2.4 True Basic のプログラム : プログラミング演習 2.2 値の交換

今回は『プログラミング演習 2.2 値の交換』です。 演習問題はこちら: 2つの値を x と y に入力し、それらの値を交換するサブルーチンを書け。 GroovyGroovy だとこんな感じでしょうかね: def x = 5, y = 10 (x, y) = exchange(x, y) assert x == 10 && y …

2.4 True Basic のプログラム : プログラミング演習 2.1 関数値の計算 b

今回は『プログラミング演習 2.1 関数値の計算 b』です。 演習問題はこちら: プログラムを修正して、区間 について、関数 の各値を計算して画面の同じ行に表示せよ。 Groovyまずは Groovy による実装。 関数をクロージャで表しているのは今までと同じです。…

2.4 True Basic のプログラム : プログラミング演習 2.1 関数値の計算 a

今回は『プログラミング演習 2.1 関数値の計算 a』です。 演習問題はこちら: 関数 の値を画面に表示するプログラムを書け。 はパラメータである。 Groovy による実装まずは Groovy による実装。 Groovy のプログラミング演習です。 def params = initial() …

2.4 True BASIC のプログラム tasks

今回はプログラムのモジュール化です。 『計算物理学入門』で扱われている True BASIC のモジュール化機能はサブルーチンと関数ですが、Groovy で対応するのは Java と同じくメソッドです。True BASICまずは True BASIC のコード。 PROGRAM tasks ! サブルー…

2.4 True Basic のプログラム seriesTest

今回は while 文による繰り返しを見ていきます。 シミュレーション的には、状態更新の前後で物理量の変化が設定値以下になるまで反復を繰り返すといったときに使えます。True BASICまずは True BASIC のコード。 PROGRAM series_test ! DO LOOP 文の使用例 L…

2.4 True BASIC のプログラム series

今回は反復シミュレーションに大切な繰り返し処理。 Groops ではシミュレーションの繰り返し処理は型にはめて設定するようにしますが、Groovy でどのように繰り返しを行うかも知っておく方がよいでしょう。True BASICまずは True BASIC でのコード: PROGRAM…

2.4 True BASIC のプログラム product

このシリーズでは『計算物理学入門』に載っているシミュレーションを Groops で書いていこう!ってのが目的でしたが、Groops で前提としているプログラミング言語の Groovy ってどの程度知られているのか分からないので、『計算物理学入門』で True BASIC に…

2.4 True BASIC のプログラム product2

今回はコマンドラインから入力を受け付けられるようにするプログラムを見ていきます。 Groops では今のところコマンドラインからの入力を受け付けるような機構をサポートする予定はありませんが、Groovy (と Java)の API を使えば実装するのは難しくありま…

倭マン's Math (8) : Complex (org.apache.commons.math.complex パッケージ)

今回は複素数を表す Complex クラスにメソッドを追加していきます。 インスタンス生成 メソッド使用サンプル メソッド追加の詳細 インスタンス生成まずはやっぱりインスタンス生成。 Complex クラスにも、分数 Fraction クラスに追加したようなメソッドを定…

倭マン's Math (7) : FractionField, Fraction (org.apache.commons.math.fraction パッケージ)

今回は有理数体を表す FractionField クラスと、その体の元で分数(有理数)を表す Fraction クラスにメソッドを追加していきます。 インスタンス生成 メソッドの使用サンプル フォーマット メソッド追加スクリプト インスタンス生成まずは Fraction オブジ…

倭マン's Math (6) : BigRealField, BigReal (org.apache.commons.math. パッケージ)

今回は実数体と実数を表す BigRealField, BigReal クラスにメソッド(クロージャ型のプロパティ)を追加していきます(一覧)。 ちなみに前回に追加した FieldElement へのメソッドも使用できます(サンプルにいくつか載せてますが)。 インスタンス生成 メ…

倭マン's Math (5) : 続・FieldElement (org.apache.commons.math. パッケージ)

今回はメタクラスを使って FieldElement にメソッド(クロージャ型のプロパティ)を追加します(一覧)。 追加するメソッドは、基本的に前回定義したカテゴリ・メソッドと同じように動作するものです(positive() も追加): 和演算、積演算に関する単位元 (…

倭マン's Math (4) : FieldElement (org.apache.commons.math パッケージ)

前回まではメタクラスによってメソッド(クロージャ型のプロパティ)を追加してましたが、今回はカテゴリ & use キーワードで使い方を簡便化できるようにします(一覧, Jar)。カテゴリメソッドと use キーワード Groovy でのカテゴリ(カテゴリメソッド)と…

倭マン's Math (3) : DoubleArray (org.apache.commons.math.util パッケージ)

今回は org.apache.commons.math.util.DoubleArray インターフェスにメソッドを追加していきます(一覧)。 このインターフェースは基本的に double の配列ですが、要素にアクセスするメソッドが最低限しか定義されていないのでかなり使いづらいのが正直なと…

倭マン's Math (2) : ContinuedFraction (org.apache.commons.math.util パッケージ)

今回は連分数を実装する ContinuedFraction クラス(一覧)。ContinuedFraction クラスを使用する場合は、サブクラスもしくは無名クラスによって抽象メソッド getA(), getB() の実装を行う必要がありました(こちら参照)。 Java ではそれで仕方ありませんで…

倭マン's Math (1) : MathUtils (org.apache.commons.math.util パッケージ)

commons-math の API はお世辞にも使いやすいとは言えないので(Java 言語のせいもあるけど)、Groovy のメタプログラミング機能の力を借りて使いやすさを向上させちゃおう!って野望の元にあれこれ試行錯誤していきます。 パフォーマンスに関しては基本的に…