#[an error occurred while processing this directive]
Last-modified: Monday, 24-Nov-2003 18:23:14 JST
[ トップページ/ いとしの liza(SL-C700 のページ)/ ウクレレ日記 ]


[SL-C700] HartMath で遊ぼう

2003-11-08 ♪きむらかずし kimu at st.rim.or.jp
2003-11-09 ソースコードへのパッチ追加。SL-C760 に関する補足を追加
2003-11-19 簡単な使い方、スクリプト集を追加
2003-11-24 散布図 ScatterGraph() のちょっとしたバグ修正。開発メモを追記

目次

[目次/ はじめに/ ダウンロード/ スクリーンショット/ 簡単な使い方/ スクリプト集/ 開発/ リンク集]


はじめに

HartMath は Java で書かれた数式処理システムです。 GPL のもとに自由に入手できます。 主な機能は下記の通りです(未訳でスミマセン)。

ダウンロード

2003-11-08 リンク集にある近藤さんのページを参考に、 SL-C700 (Jeode) 向けのフル・パッケージを作りました。 SL-C700 では実メモリが少ないので、swap の設定が必須と思われます。 SL-C750/760 や、他の SL シリーズでの動作は確認していません。 SL-C760 では、ソフトキーボード部分が潰れて表示されるが、 いったん別アプリを表示してから戻ると正常になるとの報告があります。

2003-11-09 ソースコードへのパッチも公開。

2003-11-24 散布図 ScatterGraph() の第一引数に {0} というリストを食わせると、 ハングアップするバグを修正しました。

スクリーンショット

ちなみに HartMath では、フォントを lcfont 16 ポイントと指定していますが、 以下のサンプルは、 ぱうフォントに置き換わった環境で撮影されたものです。

Plot()

Plot()


Plot3DPanel()

Plot3DPanel


ParametricPlotPanel()

ParametricPlotPanel


PeriodicTable()

PeriodicTable

先に Chemistry() を呼び出しておくこと。


簡単な使い方

上のテキスト入力欄に数式を入力し、 [Evaluate] ボタン(または Shift-Enter)を押すと、 必要に応じてクラスがロードされ (最下欄に Loading: className - Ok と表示されます)、 下のテキスト欄に入力と処理結果が表示されます。

File メニューの Open.. や Save.. によって、 上のテキスト入力欄の読み書きができます。 下の出力欄は Save Output.. により保存できます。

以上、簡単な説明でした。

本家ホームページに HartMath 0.7 のマニュアルが、 近藤さんのページに日本語による関数一覧の説明があります。

スクリプト集

棒グラフを描く

棒グラフでは、値のリストだけでなく、 必要ならラベルのリストを指定できます。 {} で囲われているのがリストです。 ちなみに、HartMath 0.7 では BarChart() に名称変更している模様。

BarGraph({1.4,2.6,5.6,5.2},{Jan,Feb,Mar,Apr})

円グラフを描く

ラベル付きの円グラフも描けます。 反時計回りなので、ちょっと馴染めないですが。

PieChart({60,30,10},{A,B,C})

For ループを回してみる

プログラム言語っぽく For ループを回すときは、 下記のような書式で( C 言語似)。 下記の例では、1 から 10 までの階乗を計算しています。 HartMath では大文字、小文字の区別に注意。 また、なぜか、定数に小数点を含む数値を使ってはいけません。

For(i=1,i<=10,i++,x=i!; Print(x))

For ループでリストを作り散布図を描く

変数 x,y に空のリストを代入すると、以降、 リスト変数として扱われるようです。 For ループを媒介変数 t で回して、 リストに(計算数値でなく)数式をセットしてゆきます。 前述の通り、 定数として直接、小数点を含む数値を置いてはいけません。 例のように分数の形や、変数で後から数値を与えるならかまわないようです。

x={}; y={};
For(t=0, t<20, t++,
  AppendTo(x,Sin(t/3));
  AppendTo(y,Cos(t*p))
);
p=0.25;
Print(x);
Print(y);
ScatterGraph(x,y)

2次方程式を解く

2 次までの多項式の解を得ることができます。

SolveP(x^2-2*x-15,x)
↓
{5,-3}
SolveP(x^2-5*x+6,x)
↓
{5/2+Sqrt(1/4),5/2-Sqrt(1/4)}

開発

コンパイルは MacOS X に付属の javac で行いました。 下記のような感じです。

作業ディレクトリで、ソースとバイナリの置き場所を作る。
% mkdir HartMath-src HartMath-bin
SourceForge.net からダウンロードしたソースを展開する。
% cd HartMath-src
% unzip -a ../HartMath_0.6.128.zip
ソースをいじる。またはパッチを当てる。
(省略)
基本的なクラスを SL-C700 のために -target 1.1 としてコンパイルする。
% javac -d ../HartMath-bin -target 1.1 com/hartmath/Hartmath
その他、必要なクラスを個別にディレクトリごとにコンパイルする。
例:
% javac -d ../HartMath-bin -target 1.1 com/hartmath/loadable/*.java
全部コンパイルしたら、MacOS X 上で動かしてみる。
% java -classpath ../HartMath-bin com.hartmath.Hartmath

リンク集