2014年5月26日月曜日

HP Primeで円周率を計算してみたよ

遅うなりました。HP Primeで円周率を計算してみました。

Many Digits of Pi by Katie Wasserman - MoHPC
www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=899

のプログラムをHP Prime向けに焼き直してみました。このプログラムでは小数点以下1000桁程度までの円周率を計算します。

------
EXPORT ARRYS := 126;
EXPORT DIGIT := 100000000;

//  C5(B) -> C4(A)
mv_A_B()
BEGIN
  LOCAL i;

  FOR i FROM 1 TO ARRYS DO
    C4(i) := C5(i);
  END;
END;

//  div C4(A)/f -> C5(B)
div_A_f(f)
BEGIN
  LOCAL i;
  LOCAL cy := 0;

  FOR i FROM 1 TO ARRYS DO
    C5(i) := floor((cy*DIGIT+C4(i)) / f);
    cy := (cy*DIGIT+C4(i)) - C5(i)*f;
  END;
END;

//  mul C4(A)/f -> C5(B)
mul_A_f(f)
BEGIN
  LOCAL i, w;
  LOCAL cy := 0;


  FOR i FROM ARRYS DOWNTO 1 DO
    w := C4(i)*f+cy;
    C5(i) := w-floor(w/DIGIT)*DIGIT;
    cy := floor(w/DIGIT);
  END;
END;


EXPORT PI_CALC()
BEGIN
  LOCAL n, f, w;


  //  array initialize
  C4:=MAKELIST(0.0,X,1,ARRYS,1);
  C5:=MAKELIST(0.0,X,1,ARRYS,1);

  //  loop countre 
  n := log(10)/log(2)*1000;

  FOR f FROM floor(n) DOWNTO 1 DO

    //  A * f -> B
    mul_A_f(f);
    //  B -> A
    mv_A_B();

    //  A / f -> B
    div_A_f(f*2+1);
    //  B -> A
    mv_A_B();

    //  A + 2 -> A
    C4(1) := C4(1)+2;

  END;


END;


--------


実行前に、CAS setting の「Exact」フラグを外しておくのが吉です (Exactフラグが付いていると、時間が掛かってしまいます)。


PCのシミュレータでも20秒くらいは掛かります。
変更 on 2015/03/18
最新のエミュレータで実行した所、何と6分半も掛かってしまいました。また、実行後、画面表示が「凍てつく」状態になり、一旦エミュレータを終了してからでないと、2変数統計表示が出て来ません。

計算結果は2変数統計機能のC4配列変数に収蔵されます。C4(1)には3, 以下、小数点以下を8桁ごとに分割して配列変数に収容しています。


変数DIGIT は、配列要素1つに割り当てる桁数を規定するもので、この数値の場合、配列要素1つにつき、8桁の計算を行います。残念ながら、これ以上にすると計算精度が損なわれる様です。
仕方がないので、1000桁の計算のため、125個 (=1000桁/8桁) の配列要素を用意しています。


AmazonのJulyさん、「日本語クィックガイドなし(正規輸入)」というカテゴリになりました。未だ、「日本語クィックガイドあり」にはモノがありませんが、準備中との事なので、首を長くして待っております。


追記 on 2014/05/27
よくコードを検討したら、若干の変更で、配列変数のコピー部分は不要でしたネ。後で修正版をupしようかしらん ?

2014年5月1日木曜日

90000アクセス御礼

多謝。

ネタがないので、取り敢えず。

2014年4月22日火曜日

これは凄い事になっている「fx-FD10 Pro」

先日、Akira様にお知らせ戴きました、CASIOの新プロ電「fx-FD10 Pro」ですが、調べてみますと、かなり興味深い製品の様です。

fx-FD10 Pro - CASIO
http://casio.jp/dentaku/products/survey/fxfd10pro/

* ヘビィーデューティーな作りで、頑丈、タフネス

防滴、防塵で、現場での使用に耐える、という事です。これは、G-Shockの開発ノウハウが活きているのでしょう。

* 土木関係のプログラムがインストール済み

スタジア計算(門外漢なので、どんなものか知りませんが)など、土木関係で使われる多くのプログラムが導入されていて、現場の即戦力、という事らしい。

しかし、現場の話などは、当「電卓情報」としては、どうでも宜しい、というと語弊がありますが、電卓情報としては、製品そのものの機能について、突っ込んでみようと思います。
土木関係のプログラムが導入済み、という事ですが、「導入済みプログラム」のページから、「プログラムのダウンロードはこちら」リンクを踏むと、アーカイブが落とせます。それを覗くと、CASIO BASIC の集合体でした。そうです、この電卓のプリインストール・土木計算プログラムは、CASIO BASIC にて書かれているのです ! プログラムはPCのテキストファイルにて書き出し、fx-FD10に導入する、といった感じで使える模様。
プログラムを用意すれば、土木計算以外にも、電子回路の計算など、他分野の応用も利きそうです。

キーボード面はキー数が少なく、本体でのプログラミングが「?」で、「これはプログラム実行専用機なのか ?」と思いましたが、英語マニュアルをみると、打鍵数が多くなりそうなものの、本体でのプログラミングも辛うじて可能な感触です。

fx-FD10 Pro - CASIO worldwode site.
http://casio.jp/dentaku/products/survey/fxfd10pro/

また、既に中国向けにも販売されているらしい。

fx-FD10 Pro: New Casio graphing calculator for China - Omnimaga
http://www.omnimaga.org/news/fx-fd10-pro-new-casio-graphing-calculator-for-china/

中国版では、漢字が表示されております。HP Primeの様ではありませんか。画素数は少ないので、大きめの漢字が表示されますが、それでも漢字が表示されるというのは、アドバンスですね ! 画素数が少ないながらも「フルピクセル」という事が判ります。

タフネスさが要因で、価格が少々張ってしまうのが難点ではありますが、それほど「愛」が詰まった製品、と言えるかも知れません。
電卓情報としては、普通の電卓並のケースにして価格を抑え、関数キーのもう少し多い「普及版」を出してくれないかなぁ、と切望する所です。


※ BASIC ! 友の会様・Twitter にリンクを戴きました

https://twitter.com/basictomonokai/status/458474853310287872

2014年3月24日月曜日

「吊るし」の関数電卓の正規分布計算能

吊るしの関数電卓・CASIOのfx-375ES、915ES、995ESには、「正規分布計算」機能があるみたいです。

マニュアルを見ると「指定した区間の正規分布累積関数」の計算が出来るらしく、結構実用的な様子。
データ集団を入力してやると、そのデータ集団を母集団として、母平均、母標準偏差を計算、更に、計算して得られた母平均と母標準偏差に基づき、累積分布関数値を計算する、となっています。

割合便利そうな機能ですが、データ集団を母集団とした母平均、母標準偏差を用いて計算する、となっているので、平均μ=0、母標準偏差σ=1の標準化・累積分布数表として使うには、少し技巧が必要です。
平均μ=0, 標準偏差σ=1 となる「母集団」を入力してやればいいのですが、一番手っ取り早いのは「-1, 1」という2つのデータでしょう。このデータ集団を入力して、標準化・累積分布数表として計算値を得られれば、推計計算にも応用が利きそうです。

fx-375ESは2000円程度、915ESは3000円程度と比較的安価なので、結構おすすめです。近所のホームセンターにもありました。しかし、最上位機種の995ESは5000円となって、少々お値段が張ります。
995ESは、周期表が付いていて、行列計算なども出来る高機能製品なのですが、5000円ともなると、もう少し出せばfx-5800pが買えてしまうので、そこが惜しい、と思うのです。

この辺の電卓は高機能なので、ナントカ試験には持ち込めないでしょう。ならば、同じくアントカ試験に持ち込めないfx-5800pの後継機種には、こうした機能を盛り込んでみたら面白いのではないかなぁ。
(こんな「寝ぼけた」事を言っていると、やす 様には叱られそうですが)


2014年3月2日日曜日

HP Primeには「Training modules」が無い様子

HP50gなどには「Training modules」が用意されていましたが、HP Primeには用意されていない様子です。

Training modules とは、様々な計算について電卓での操作を解説するPDFです。
HP Primeも発売されて久しいので、そろそろ登場するのかと思ったのですが、どうにも、その気配がありません。

一応、一部製品のページなどを書いておきます。

12C training modules
http://h20331.www2.hp.com/Hpsub/cache/299940-0-0-225-121.html
(zip)
http://h20331.www2.hp.com/Hpsub/downloads/12c.zip

35S training modules
http://h20331.www2.hp.com/Hpsub/cache/532056-0-0-225-121.html
(zip)
http://h20331.www2.hp.com/Hpsub/downloads/35s.zip

50g training modules
http://h20331.www2.hp.com/hpsub/cache/383680-0-0-225-121.html
(zip)
http://h20331.www2.hp.com/Hpsub/downloads/hp50gPDFfiles.zip

これらのページは「キャッシュ」扱いとなっている様子で、今の所、web検索でしか辿り着けません。
もしかすると、将来は消滅してしまう可能性もあります。気になる向きは、今の内にダウンロードしておいた方が良さそうです。


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様、宜しくお願いしますヨ。

2014年1月20日月曜日

fx-5800pの行列計算能について

以前、当blogでは「fx-5800pで複素数の行列計算が出来るらしい」と書きましたが、マニュアルを見誤っていた様です。申し訳ない。
これは取説中に「配列メモリに複素数が使える」(p31)という記述を見たからでした。fx-5800pの配列メモリと行列レジスタはまったくの別物で、行列は実数行列のみが扱える、という具合です。

そして、fx-5800pの行列計算能ですが、これは加減乗除、というとアレですが、取り敢えず、その辺りの計算が出来る様子。固有値などは求められませんが、行列の基本的な計算はそれなりに出来る様です。

fx-5800p で使える行列計算機能の大まかな所は、つぎの様です。
  • 最大で10x10の大きさの行列を確保出来る (メモリとの相談の上)
  • 5個までの行列を保持できる
  • 行列の加減乗、逆行列の計算、くらい
  • 残念な事に、プログラムからの利用ができない
「これが何でないのか」と悔やまれるのが、行列要素を操作(呼び出し、書き込み)する機能です。取説を見た範囲では、どうにも見つからない。

※ 訂正 on 2013/02/13
やす 様のお知らせにより、どうやら行列要素のプログラムからの操作が可能らしい、と事で、上記部分を削除しました。詳しくは下記、コメント欄を御参照。

何でこんなものが欲しいのか。それは、プログラムからの応用が効くからです。
およそ、電卓の機能を盛りつけて、更にファームウェア・ストレージにまだ余裕があったので、行列計算機能を付け加えた、のでしょうか。
HP35Sでも、(3元までの)連立方程式の解を計算する機能がありましたが、これもプログラムからは使えないもので、「ちょっとしたスキマに差し込んでみました」いうくらいのものでした。

fx-5800pの行列計算能は、最大で10x10の行列が扱えると言います。逆行列の計算を使う事で、10元連立1次方程式が解けるはず。また、複素数係数ならば、5元連立1次方程式も計算出来るのです。
「あれっ、実数の行列しか計算出来ないんじゃないの」と思う向きもあろうか、と思います。そこで、つぎの所から、HP15Cの英語マニュアルを持ってきて下さい。

h10025.www1.hp.com/ewfrf/wc/manualCategory?product=5173542&cc=jp&dlc=en&lc=en

p160から「Calculations With Complex Matrices」という行があります。
15Cにも行列計算能がありますが、fx-5800pと同様、実数行列の扱いしか出来ません(15Cの場合は3x3程度の大きさです)。しかし、行列を拡張する事で、複素数行列の計算を行い、複素数係数の連立1次方程式を解くということをやってのけているのです。

15Cの連立1次方程式の解法は、複素数係数の行列を実数行列で生成して計算するというもので、詳細はマニュアルを御参照戴きたいのですが、英語なので少々読みにくいのが難。この拡張操作にプログラムの手を借りたいのですが、行列の要素操作の機能がないと、これが面倒。なので、fx-5800pでこれを行う場合には、行列の数値を一旦紙に書き出し、ポチポチと入力する必要があります。
詳細は述べませんが、じっくりと読んで試して戴きたく思います。

------------ 閑話休題 ----------

さて、昨年末はSharpが新しい関数電卓を発売するという発表があったそうです。

http://www.sharp.co.jp/calc/lineup/function_s.html

「EL-520M-x」、「EL-509M」の2つですが、これらは「スタンダード関数電卓」という事で、「高機能プログラム電卓」ではなさそう。行列機能も4x4のサイズまでです。
ナントカ試験対応電卓で、ロールオーバーキー入力もあり、打鍵速度の早い人にはウレシイものでしょう。

一方、Sahrpのグラフ電卓はデスコン(dis-continued; death-continued ?)になっておりました。
新しいグラフ電卓が出てくるのか、それとも、このまま電卓は縮小してしまうのか ... 。