2014年2月24日月曜日

HP Primeで「Tiny Reaction Chambre」を実行してみました

まだ日本語クイックガイド付きHP Primeが出ないので、ヘタれな当方は、なかなか購入するに至りませんが、そんな時は、シミュレータで遊んでみる事にします。

先日、Stepney様から、当方の文書にある「Tiny Chambre」が動かないという指摘を戴き、急遽修正したのですが、その時思ったのが、「HP Primeでも出来そう ?」という事でした。

プログラムで反応容器の計算を行い、計算データをリストに構成して、グラフのプロットはHP Primeの「Statistics 2 Var」を用います。

プログラム「chambre.ppl」

EXPORT CHAMBRE()
BEGIN

LOCAL  j;

// C for reaction Countre
C:=200;
// S for chambre Size
S:=100;
// C1, C2 for Scatter Graph
MAKELIST(X,X,1,C,1)▶C1;
MAKELIST(1,X,1,C,1)▶C2;
// C3 for Chambre
MAKELIST(1,X,1,S,1)▶C3;

// try C count reaction in chambre
FOR j FROM 1 TO C DO
  // select one molecure for reaction randomly
  P:=RANDINT(S-1)+1;
  // reaction molecure eliminated
  0▶C3(P);
  // counts left molecure in chambre
  ΣLIST(C3)▶C2(j);
END;

END;

プログラムを実行後、[Apps]キーを押して「Statistics 2Var」を選びます。



さらに[Symb]キーを押し、「Type1」項目を「Exponential」にしておきます。


後は、[Plot]キーを押してやれば、シミュレーション結果と回帰分析曲線を重ね描き出来ると思います。



プログラムについて、簡単な解説。今回、乱数発生に「RANDINT()」を用いました。結構「曲者」です。
RANDINT(a) とすると、0からaの範囲で整数乱数を返す、とあります。[0,a]であって、[0,a) ではない、という具合。
そのため、
  P:=RANDINT(S-1)+1;
という具合にしました。

---

アベ政権によって、日中の関係は悪化する方向にあり、fx-5800pの価格上昇や、日本語クィックガイド付きがなかなか出て来ない、という影響があるのかも知れません。
並行輸入版が、残り少なくなって来ましたHP Primeですが、そろそろ、日本語クィックガイド付きが入って来ないのかなァ。July様、宜しくお願いしますヨ。

18 件のコメント:

Tomo Mizoe さんのコメント...

いつも貴重な記事をありがとうございます。
日本語マニュアルですが、hp本社から「翻訳したら印刷前にレビューしてね」と言われたっきり放置です orz

akatuki さんのコメント...

これは溝江様。コメント有り難う御座居ます。

> 日本語マニュアルですが、hp本社から「翻訳したら印刷前にレビューしてね」と言われたっきり放置です orz

という事は、マニュアル(Quick Guide)自体は準備が進んでいる、という事でしょうか。
後は溝江様のレビュー待ち、という事で ?

楽しみにしております。

やす さんのコメント...

akatuki様

ここのところ、世間が年度末の関係で忙しくしております。

ご無沙汰でございます。

Chanbre とは、ナント由緒正しきQueen's Englishではありませんか?

と妙なところに反応しています。

当方は、fx-5800P のCasioBasicでバグらしきものを見つけ、カシオ様へ報告後回答待ちの状態です。

そのおかげで、カシオ様はほぼ毎日 e-Gadgetへお越し頂くようになりました。

ブログ更新も週1ペースです...

akatuki さんのコメント...

やす 様、お久です。遅うなりもうした。

> ここのところ、世間が年度末の関係で忙しくしております。
> ご無沙汰でございます。

いえいえ、こちらこそ。当方「出不精」なもので、なかなか。

> Chanbre とは、ナント由緒正しきQueen's Englishではありませんか?
> と妙なところに反応しています。

ウハハ。「Colour 」とか。当方、この程度しか知らないので、これ見よがしに使ってみたのですが (笑)。

> 当方は、fx-5800P のCasioBasicでバグらしきものを見つけ、カシオ様へ報告後回答待ちの状態です。
> そのおかげで、カシオ様はほぼ毎日 e-Gadgetへお越し頂くようになりました。

おおっ、凄い ! なかなか、興味深い事になっておりますネ。
ここで、CASIO担当者様との縁を得たのですから、色々と面白い事を聞いたりしても ?

> ブログ更新も週1ペースです...

言えね、当方もネタが無いもので、なかなかオモロイ記事が書けんです。
やす様の場合は「年度末」の関係もあるのでしょうが、それでも週1で書けるだけ、ネタがあるという事ですから、やはり羨ましい。

Stepney さんのコメント...

お久しぶりです。
仕事もだいぶ片付き、麻雀ゲームのフローチャートを書いているところです。
ただ、バックアップ用に使おうと思っていたSDカード(2GB)を 50gが認識してくれない...
この前まではちゃんと認識してくれていたのに...

この前、フォーラムで「hp電卓で円周率を計算する」という内容のページを見つけました。
それによれば、hp41でなんと四ヶ月かけて3600桁計算できるプログラムを生み出した強者もいたそうです。
それに衝撃を受け、今『ガウス=ルジャンドルのアルゴリズム』という収束が速い式のコードを書いています。
式は簡単なので、そんなに時間はかからないと思いますが、バックアップが取れないのが辛い…
ダメ元でPCとケーブルで接続してみようと思っているのですが、やす様がおっしゃっていたことがよくわかります。
RPLで書けたら次はCasioBasic版かな…
(今日はやけに『…』が多かったような気がします)

akatuki さんのコメント...

Stepney 様、お久です。

> 仕事もだいぶ片付き、麻雀ゲームのフローチャートを書いているところです。

おおっ、もうやっておられますか !

> ただ、バックアップ用に使おうと思っていたSDカード(2GB)を 50gが認識してくれない...
> この前まではちゃんと認識してくれていたのに...

確か、2GBくらいになると、色々面倒な具合なんじゃなかったかしらん ?

> この前、フォーラムで「hp電卓で円周率を計算する」という内容のページを見つけました。
> それによれば、hp41でなんと四ヶ月かけて3600桁計算できるプログラムを生み出した強者もいたそうです。

結構、そうした話題があるみたいですネ。当方も、35Sでやってみましたヨ。
元ネタは、フォーラムにあった42S(だったかなぁ)のコードで、それを35S向けに書き直したものでした。
確か、35Sでも時間が掛かりました。

> それに衝撃を受け、今『ガウス=ルジャンドルのアルゴリズム』という収束が速い式のコードを書いています。
> 式は簡単なので、そんなに時間はかからないと思いますが、バックアップが取れないのが辛い…
> ダメ元でPCとケーブルで接続してみようと思っているのですが、やす様がおっしゃっていたことがよくわかります。
> RPLで書けたら次はCasioBasic版かな…

という事は「50g向け」という事ですネ。これは楽しみ。
そういや、50g向けでやった事が無かったなァ。暇を見て、当方はPrimeでやってみようか、などと思いますが、まあ、時間が取れれば。

Stepney様がやろうとしています。fx-5800pでやってみては ? > やす様

やす さんのコメント...

akatuki様

お呼びでしょうか(・д・)


多桁数の小数を得るのは、やったことがなく、2~3分考えても、ヒントも思いつかないです(-_-;)


ガウス・ルジャンドルの方法を、電卓10桁精度で単純に計算するのは、2分でプログラムできましたが...これでは意味ありませんよね。


多桁小数結果のアルゴリズム、調べてようと思います。

ヒントがあれば、欲しいです( ^o^)ノ


Stepney さんのコメント...

麻雀ゲームは未だ未完成ですが、円周率の方は別のアルゴリズムでプログラムを完成させることができました。
が、さっきから1時間はたっているのにまだ計算が終わらない…
耳を近づけてみると「ザッザッザー」 という変な音が聞こえてきます。
計算をしているのは間違いないと思いますが、こんなに時間がかかるとは思いませんでした。
今は偏微分方程式の数値解を求めるプログラムを考えていたいます。
あ、まずその前に麻雀か…

akatuki さんのコメント...

やす 様

> お呼びでしょうか(・д・)

いや、これはどうも。お呼び立てする形になってしまい、申し訳ない。
本来ならば、やす様の所へお邪魔して、とは思ったのですが、そこまでしなくても ? という判断で、小声で。

> 多桁数の小数を得るのは、やったことがなく、2~3分考えても、ヒントも思いつかないです(-_-;)

当方も、以前にやった時はよう判らんかったのですが、「HP12C で円周率を計算する」プログラムを35Sに移植した際に、この辺りのメカを知ったのです。
「1レジスタを10桁程度の精度で計算し、それを配列として多桁計算を行う」らしいのです。
12Cのプログラムもガウス・ルジャンドルの方法だったと思いましたが(いや、もしかすると別の方法だったのか ?)、計算の各項を収める配列と、その各項を累積していく配列の2つの配列を用意して計算を進める、という感じでした。
とは言え、移植作業をやったのはかなり前なので、詳細は忘れちまいましたが ... 。

作業内容は以下ですが、移植に関する情報しかないので、余り参考にはなりませんね ... 。当方も、読み直さないとならない程です。

HP35sで、円周率を計算してみたよ
akatuki-724.blogspot.com/2010/01/hp35s_25.html‎

Stepney 様

> 麻雀ゲームは未だ未完成ですが、円周率の方は別のアルゴリズムでプログラムを完成させることができました。
> が、さっきから1時間はたっているのにまだ計算が終わらない…

50gでUserRPLだと、ガベージ・コレクションもあるでしょうから、時間が掛かってしまいそうです。

> 耳を近づけてみると「ザッザッザー」 という変な音が聞こえてきます。

Flashメモリー書き込みの音でしょうかネ ?

> 計算をしているのは間違いないと思いますが、こんなに時間がかかるとは思いませんでした。

ウーン。
でも、そこが電卓のプログラミングの「面白さ」だったりするんじゃないか、と。
当方も、最近は余りやっておりませんが、計算量のあるプログラムを延々動かしてみたりなど、やったもので。
それに、こうしたものはベンチマーク的にも使われている様です。

やす さんのコメント...

Stepney様

こんばんは、いよいよ再始動ですね。

SDカードの件、大変ですよね。せっかく作ったプログラムが消失しないように、お気をつけくださいね。


当方は未だに、クソ忙しく、なかなか趣味の時間が取れません。

時間をみて、高精度計算結果のアルゴリズムを探してみています。

以前どこかでみたような気がしていますが、肝心な時にそれが思い出せません。


やす さんのコメント...

akatuki様

さっそくですが、

akatuki-724.blogspot.com/2010/01/hp35s_25.html‎

このぺージが見つかりませんと、怒られてしまいます(-_-;)


当方は、ブログの4回分の原稿が既に出来ていますので、週1回ペースだとあと1月はブログ更新の貯金があります。

今は、fx-5800P で使える入力ボックスをサブルーチンとして呼び出して使うと言うネタを始めています。

色々な換算プログラムには、これがあると作るのがとても楽チンなんですヨ。

おそらくこんなネタは、これまでどこにも無いと思いますデス。新機軸でしょ?

緻密に計算するより、こんなのが好きなんです...

fx-5800Pでここまで突っ込んでプログラム作るアホも少ないとは思いますが、そこには希少価値がありますよね~( ^o^)ノ

akatuki さんのコメント...

やす 様

> さっそくですが、
> akatuki-724.blogspot.com/2010/01/hp35s_25.html‎
> このぺージが見つかりませんと、怒られてしまいます(-_-;)

スマソ。「HP35sで、円周率を計算してみたよ」というタイトルの記事ですので、検索してチョ。

> 当方は、ブログの4回分の原稿が既に出来ていますので、週1回ペースだとあと1月はブログ更新の貯金があります。

ウーン、羨ましい。

> 今は、fx-5800P で使える入力ボックスをサブルーチンとして呼び出して使うと言うネタを始めています。
> 色々な換算プログラムには、これがあると作るのがとても楽チンなんですヨ。
> おそらくこんなネタは、これまでどこにも無いと思いますデス。新機軸でしょ?

おおっ、いいですね。サブルーチン・ライブラリですネ。
プログラムのノウハウというのは、なかなか公開されないので、ユーザーにとってこれは嬉しいものだと思います。

> 緻密に計算するより、こんなのが好きなんです...
> fx-5800Pでここまで突っ込んでプログラム作るアホも少ないとは思いますが、そこには希少価値がありますよね~( ^o^)ノ

いや、こうした「より進んだ利用法」を提案されるのは、それだけ高度な使い方が出来るfx-5800pでは、よい事だと思うのであります。
力強いユーザーが使ってノウハウも蓄積され、更にバグも見つけ、より製品に貢献していく。まさに良循環です。

先日、CASIOの新しいプロ電「fx-72F」が出ている事を知り、どんなものなんか調べてみたのですが、旧機種「fx-71F」のケースを更新した様子。機能的には余り充実していないのですが、価格も4000円前後と、「もう少し安くなってくんないかなぁ」感で、ちょっと惜しいものです。4000円も出すとなると、当方としてはfx-5800pの方が良さそうだねぇ、と思うのですが、しかし、CASIOは5800pより前にfx-71Fの更新をしました。
やす様もバグレポートなどを出されているので、そろそろ、ケースの更新など「つぎの5800p」とか登場するのかも ? と、ちょっと期待してしまうのです。

やす さんのコメント...

akatuki様

fx-5800Pのプログラムを作る際、動作の高速化を常に意識していますが、fx-9860GIIやfx-cg20などのグラフ電卓ではこんな苦労は不要だろうと思うのです。

死にたくなるほど遅いプロセッサで、それなりのプログラムを作るのは、その工夫の過程が楽しいく、CasioBasicの本質が垣間見えるのも面白いのですが、無用な努力をしているのではないかと思うこともあります。

限られたハードウェアにCasioBasicを押し込んだfx-5800Pは、ある意味野心的な製品なのかも知れません。

今回のバグかもしれない件でも、Casio様からの最初の回答にかなりの時間がかかっていることから、Casio様でも把握していなかった問題の可能性もあります。

今回の問題をここでは具体的に書いていませんが、おそらく(私の推測ですが...)fx-502Pの時代からある命令と新たに追加された Basicコマンドとで内部動作で不整合がおきているのではないか、と感じています。

古くからある命令は、動作速度が非常に速くそれなりに最適化した内部コードで作られているのだと思います。そこへ構文解析が必要なBasicを上から被せるのですから、まあバグがあってもおかしくありません。

さらに、そんな厄介な代物を思いっきりプアなハードウェアに詰め込んだ fx-5800Pはある意味野心的な製品なのかも知れません。

セルシオの車体と装備をちょっとダウングレードしてカローラのエンジンを積んだようなものですから...

最初から無理があるといっても良いです。でもセルシオの車体と装備は魅力的ですから、それをカローラクラスの価格で提供するのは、やはり凄いです。


もし、プログラム入門機、あるいはそれほどプログラミングをしない人向けの高性能関数電卓と言う位置づけの製品だとカシオ様で考えているのならば、私のような「とことんまでほじくるユーザー」は、迷惑なのかも知れません。でもカシオ様のお役に立っていることは間違いないと思います。


fx-71Fやfx-72Fはプログラム電卓としては、かなりお粗末なものです。繰り返し計算をチョットだけ便利にする程度の機能しかありません。これをプログラム電卓と言うべからず...

取説のコマンドリファレンスを見れば一目瞭然です。

それなのに4000円とは、理不尽なくらい高すぎます。


買ってはいけない電卓だと思いますヨ。


akatuki さんのコメント...

やす 様

> fx-5800Pのプログラムを作る際、動作の高速化を常に意識していますが、fx-9860GIIやfx-cg20などのグラフ電卓ではこんな苦労は不要だろうと思うのです。

9860GIIやcg-20辺りの高機能ハードウェアでは、考えもなしに高速動作するという所はあると思いますが、一方、機能が増えている分「あれもこれもやってみたい、やらせてみたい」となるので、別の意味で「苦労」(それが面白いのですが)が出てくる、のかも知れません。

> 死にたくなるほど遅いプロセッサで、それなりのプログラムを作るのは、その工夫の過程が楽しいく、CasioBasicの本質が垣間見えるのも面白いのですが、無用な努力をしているのではないかと思うこともあります。

「死にたくなるほど遅い」とは穏やかではありませんが、5800pの持つ、機能の割に動作速度が「追いついていない」事は、惜しい、という事なのかも知れません。

> 限られたハードウェアにCasioBasicを押し込んだfx-5800Pは、ある意味野心的な製品なのかも知れません。
> 今回のバグかもしれない件でも、Casio様からの最初の回答にかなりの時間がかかっていることから、Casio様でも把握していなかった問題の可能性もあります。

そこは「重要な指摘」だと思われます。

> 今回の問題をここでは具体的に書いていませんが、おそらく(私の推測ですが...)fx-502Pの時代からある命令と新たに追加された Basicコマンドとで内部動作で不整合がおきているのではないか、と感じています。
> 古くからある命令は、動作速度が非常に速くそれなりに最適化した内部コードで作られているのだと思います。そこへ構文解析が必要なBasicを上から被せるのですから、まあバグがあってもおかしくありません。
> さらに、そんな厄介な代物を思いっきりプアなハードウェアに詰め込んだ fx-5800Pはある意味野心的な製品なのかも知れません。

うーん、どうなんじゃろ ?
まあ、比較的新しい製品ではありますし、製品に対する「愛」のあるユーザーの意見、というものが、それまでCASIOに届いていなかったのか、という事ではないでしょうか。

> セルシオの車体と装備をちょっとダウングレードしてカローラのエンジンを積んだようなものですから...

当方、車の方はとんと疎いもので ... 。

> 最初から無理があるといっても良いです。でもセルシオの車体と装備は魅力的ですから、それをカローラクラスの価格で提供するのは、やはり凄いです。

うーん、なるほど。

> もし、プログラム入門機、あるいはそれほどプログラミングをしない人向けの高性能関数電卓と言う位置づけの製品だとカシオ様で考えているのならば、私のような「とことんまでほじくるユーザー」は、迷惑なのかも知れません。でもカシオ様のお役に立っていることは間違いないと思います。

いや、電卓製品は、たくさんのユーザーがいて、製造者の意図の及ばない使われ方もするものですし、そういう余裕があって然るべきものであります。
やす様の様な高能のユーザーが使って「ダメ出し」をしないと、製品開発が進まないのではないか、と。

> fx-71Fやfx-72Fはプログラム電卓としては、かなりお粗末なものです。繰り返し計算をチョットだけ便利にする程度の機能しかありません。これをプログラム電卓と言うべからず...

これは手厳しい。

> 取説のコマンドリファレンスを見れば一目瞭然です。
> それなのに4000円とは、理不尽なくらい高すぎます。
> 買ってはいけない電卓だと思いますヨ。

当方も同意であります。実際、5800pが6000円台で入手可能でありますからネ。

当方はfx-71Fについて思ったのは、つぎの経緯からです。

今から8年くらい前でしょうか、プロ電が今、どうなっておるねん、と思って、近所の量販店で物色したのですが、当時は4500pあたりですか、それと3650pという71Fの先祖の様な製品くらいしかありませんでした。
4500pは量販店では余り安くなく、3650p辺りでも買おうか、と思ったのですが、その時は結局買わず仕舞い。
しかし、その後も製造が続いていて、今日では72Fとして販売されている、という息の長さに、ある意味「驚嘆した」のでした。
今日では、5800pもあり、それが大変安価に入手出来る。これは大変嬉しい事であるのですが、一方、72Fの様な「新機種」も出ている。
ここがCASIOの「奥深さ」なのか、と。

今日は、Sharpが「電卓発売50終年」とかで、色々とキャンペーンをやっておるそうですが、(高機能)関数電卓の話はなかなか見えて来ない。一方、CASIOはどうにかやっている。そこが小気味いい、と思うのであります。

やす さんのコメント...

akatuki様

Sharp対Casioに他社も参戦した電卓戦争...日本の高度経済成長の歴史中で、典型的な大変重要なものですね。

これにより、CPU、液晶、太陽電池が実用化し、産業の裾野を広げ、それぞれが大きな産業と育っていきました。

極東の小さな島国で勃発した電卓戦争における、SharpとCasioの果たした役割は大変に大きく需要なものだと思います。

Sharpは、液晶と太陽電池を看板製品と位置づけ、大きな事業セグメントに育てあげました。

一方で、Casioはピンポイントで特定製品に特化し、グローバルで戦えるしたたかな商品戦略で成長しました。

私には、Sharpは技術主導、Casioは用途主導と、一見ビジネスのアプローチが異なりますが、必要な技術をしっかり育て確立した技術立国日本を支えた典型的な企業だと思います。

このような事業展開の違いを視野の端に入れて、電卓事業を見てみますと、プログラム電卓は、いまや技術主導で進めるビジネスでは無く、ピンポイントで狙うCasio流が合っているのではないかと思うのです。

fx-72Fにしても、しかるべき狙いがあって製品投入している筈ですから、それをとやかく言うつもりはありません。

私個人の興味と趣味の目で見た時に、私には全く不要の製品と言うだけです。

CasioBasicのような高度なプログラミング言語を不要とするユーザーは、圧倒的多数の筈で、そのような人たちの計算を補助する意味では、fx-72Fの機能は十分なものでしょうし、意外に売れている製品なのかも知れません。

売れて利益が得られる製品を投入するのは、正しいことです。

G-Shockと言う世界ブランドを構築し育てているのと同じように、Casio Calc、或いは fxリーズと言う電卓プランドを育てているのはCasio流ですね。極めてユーザー寄りの戦略です。

Sharpの電卓発売50周年は、独自技術を製品展開してきたSharpらしいキャンペーンですね。しかしCasioもカシオミニ復刻版のキャンペーンを昨年やっておりました。

私には、Sharpは良くも悪くも大会社、Casioはいまだにベンチャー精神が生きている会社に映ります。

そんなCasioだからこそ、今後もプログラム電卓市場のリーダーであって欲しいと思うのです。Sharpには期待していないのが本音です。


akatuki さんのコメント...

やす 様。

ウーン、ウマイッ ! この御意見、全面的に同意であります。

Sharpの「電卓50年キャンペーン」について、実に「やる気」というものが見えてこないのは、「投票で電卓のカラーリングを決めよう」みたいな企画しか思いつかないのか、という有様。コリャーアカン。Sharpに期待するのが、ヤボ、という所であります。

まあ、そんな瑣末な事を言うより、やす 様の様に見ていれば、確かに「Sharpには期待できない」という事は明らかであります。

やす さんのコメント...

akatuki様

事業展開の1つひとつで、「それでナンボ儲かりまっか?」と言う頭が常に働いているのがカシオではないかと、勝手に想像しています。

それが無いのがシャープ、大企業の悪い典型です。

それが今回の50周年キャンペーンに見え隠れしているように、私には思える。

将来を見越して、今このくらいならエエヤロ、と言うのが捨て金。将来を見ていないのは単なる浪費ですね。

但し、儲かりまっか?の精神は翻ってみると、儲からんところにはびた一文金を出しません。だからカシオのプログラム電卓の日本市場への対応は現状のようになっている....と言うこともできますよね。


仕事をするにはカシオは愉しそうなところだと思います。

akatuki さんのコメント...

やす 様

> それが無いのがシャープ、大企業の悪い典型です。
> それが今回の50周年キャンペーンに見え隠れしているように、私には思える。

御意。

> 将来を見越して、今このくらいならエエヤロ、と言うのが捨て金。将来を見ていないのは単なる浪費ですね。

「捨て金」というのは、なかなかうまい見方と。
研究開発は、結構金が掛かります。しかし、今日の大企業の多くの企業幹部は、失敗を恐れる余り、研究開発も進めず。今あるものだけ、進めればいい、と「後ろ向き」になっている。
また、親銀行、外資の言いなり、となって、株価を上げる事にのみ終始しているかの様子。

> 但し、儲かりまっか?の精神は翻ってみると、儲からんところにはびた一文金を出しません。だからカシオのプログラム電卓の日本市場への対応は現状のようになっている....と言うこともできますよね。

ウーン、なかなか手厳しい。
確かに、外国優先の様ですが、一応グラフ電卓も後から日本市場に投入しております。
やはり「儲かりそうにないから、後回し」なのかも ?

> 仕事をするにはカシオは愉しそうなところだと思います。

GShock は、社内の一技術者が、延々、時計を落として実験して、それで開発されたものとか。当時、その研究者を、CASIO社内では「生温く見守っていた」らしいのですが、それでも、止めさせる事なく、やらせておったらしい。それでGShockが日の目をみたと。

都心に自社ビルを建てたCASIOでありますが、まだ、こういった「自由闊達」な開発を進めているのか、と、そこを期待しつつ、CASIOの製品を見守って行きたい、と思うのであります。