ラベル HP35S の投稿を表示しています。 すべての投稿を表示
ラベル HP35S の投稿を表示しています。 すべての投稿を表示

2026年4月21日火曜日

少し不平を言わせてもらいたく

 ご無沙汰です。最近は、blog へのポストも滞っております。何と言ってもネタ枯れがキツイ。

永らくお休みしていた所で、プログラミング作業も全く行っていないのでありますが、「では、何をしていた ?」というと、電卓にある Solver 機能で、いくつかの計算式の数値を計算するなど、電卓本来の用途を"満喫"していた次第。

計算式の一つの例としては、タイマー IC 555 の無安定マルチバイブレーター動作で、発振周波数の計算をしておりました。

    f = 1/(ln 2 *(R1+2*R2)*C) 

これを Solver に入力しておき、R1, R2, C から 発振周波数 f を計算する、という手筈。Solver なので、逆に f を指定し、コンデンサ容量 C を逆算する、という用途にも使えます。
ちなみに、電卓の Solver では、変数の名前に使えるのは 英数字名1文字 である場合が多いので、上記の式は

    f = 1/(ln 2 *(R+2*Q)*C) 

の様に書き換える必要があります。

で、Solver の利便を満喫していた所で、「そうや、地球上の 2点間の距離を計算する式があったな」と思い出し、使ってみようと。

[HP200LX manual より]

Distance = 69.0466*acos( sin(LT1)*sin(LT2) + cos(LT1)*cos(LT2)*cos(LG1 - LG2) )

LG1, LT1 ; 第1 地点の経度(Longtitude), 緯度(Latitude)
LG2, LT2 ; 第2 地点の経度(Longtitude), 緯度(Latitude)
※ 東経、南緯は 負数で指定する

例 : 
Pennsylvania 州 Philadelphia (北緯 40° 35' 西経 75° 10') と 
Oregon 州 Corvallis (北緯 44° 35' 西経 123° 16') の間の法定マイルを求める。

答 : 
計算結果は  2425.31 [法定マイル]

これを、fx-CG50 の Solver で計算しようと思ったのですが、操作を始めて、計算する所で「詰んでしまった」のです。
というのも、Solver の数値入力画面で、度分秒の入力が出来んのですヨ ! ウーン、マイッタ ... 。
「エ、ウソ !?」とお思いの方、お手元に fx-CG50 があったなら、是非ともお試しいただきたく思います。
(ぶっちゃけ、40° 35' という数値を入力するには 40+35/60 とやってやれば済むのではありますが、こうなってしまうと、度分秒の記号はいらん事になってしまう ... )

「最新の電卓製品で、此の辺りはどうなん ? 」と思ったんで、近所の家電量販店に行って、電卓をポチポチと操作してみました。操作したのは、fx-JP500CW 。
(何でコレにしたのかというと、店頭で稼働展示されている機種だからだったりします。CASIO の営業サマ、お疲れ様です)

上記の数式をすぐに思い出すほどオツムの回転が良くないので、Solver を動かして適当な式を入力し、変数入力で度分秒の数値が入力できるか、という所を確かめました。すると、そこは最新の電卓製品だけあって、入力自体はどうにか出来ますネ。
少し操作が煩雑になってしまいますが、全く入力できないよりは雲泥の差ではあります。

昔の関数電卓では、度分秒の入力補助として DMS→、→DMS といった(疑似)関数機能がありました。
度分秒の入力で、一旦度分秒を "度.分秒" として入力し、DMS→ キーを押して、度に変換するものです。
具体的には、40度35分15秒の場合、40.3515 と入力、DMS→ を押して 40.5875 と 10進数変換して計算に供するのでした。

時代が下り、今日では自然数式入力が全盛となっております。
この度分秒の入力についても「°」の区切り文字を使うことで、(便宜上)60進数の記法に沿う形で数値表現が出来る様になりましたが、電卓全体で統一されたデザインとして具現されていない様でもあり、数値入出力 I/F としては"いま一つ"(イマイチ)の状態、と言えるのかも知れません。

最新の fx-JP500CW では、数値入力時に「°」を呼び出す事が出来ましたが、計算結果を度分秒にて表示したいというニーズについては、試しておりません。
incremental な改良を経て、良くなっていくのでしょう。

そんな具合で、ここでは少しだけ不満をブータレてしまいました。ついでに言うと、手元には HP35S (新版) があり、キーボード面に →HMS, などの機能があります。こうした用途では「電卓そのものを取り替える」という手段もあるのか、などと思ってみたり。

2022年1月5日水曜日

虚礼廃止 2022

最近は、記事をポストしておらんで、人々から忘れ去られようとしております当blog。
それでもひっそりと暮らしておる所であります。

最近はめっきりと使わなくなってしまった「HP35S」ですが、久しぶりに電源を入れると、電池切れで動かんですね。
そこで、電池を交換するのですが、これの電源は、CR2032というリチウムコイン電池です。
リチウムコイン電池、最近では様々な製品に利用するので、買い置きがあり、すぐにも交換に至ったのですが、一方、使い終わった電池はゴミとして処分しないとならない。

「リチウムコイン電池、どこかで回収しておるんかいや ?」と、調べたのですが、以下のサイトによると、

ref. http://www.eme-tokyo.or.jp/consultation/faq/answer64.php

リチウムコイン電池は「環境負荷が小さく、タダの不燃ごみとして捨てていい」らしい。これは驚いた。
結構「エコ」だった、というと大袈裟ではありますが、まあ、気を使わんでいいのは有り難い所。

一方、昨今は「SDGs」とかいうて「レジ袋を使いまわしましょう、ポリ袋は敵だ」と言わんばかりであります。
過日、TBSで放映された「日本沈没」ですか、何となく「地中奥深くにあるエネルギー資源を汲み出すという施設が業して、日本国土の大半が沈没してしまった」という寓話的展開でしたが、「ポリ袋を燃やさなければSDGs、環境は救われる」というのは、ホントなんじゃろか ?

自動車産業の多くは、欧州で進みつつあるガソリン車脱却、電気自動車の開発への方向転換で、舵を切っていると言われております。
それは、欧州、米国で車を売り込むという事情から、らしい。

欧州、米国を中心にSDGsの大合唱。北極や北欧の国々は、地球温暖化で国土が縮小しつつと言われており、地球温暖化は、国際世論となっている。しかし、それが二酸化炭素の排出を抑えるだけで解消できるのだらうか ?

かつて、独逸の「黒い森」が、NOx による酸性雨から枯死が進んでいると言われておりました。そこで自動車業界は排ガス規制を設け、それに応じた形で自動車開発を進めてきたのですが、
今度はSGDs、電気自動車というゴールポストを設置、ルールセッターにうまく誘導された形であります。

欧州の一部メーカーは電気自動車の開発でリードしていると言われておりますが、全てのメーカーでは無さそう。一方、日本の自動車産業の多くが電気自動車の開発へ軸足を移しているとか。
当方なんぞは、自動車を買うほどの財がある訳ではありませんから、自動車産業がどこへ向かおうと知ったこっちゃありませんや。

所が、TBS「日本沈没」では、こうした大企業の「企業城下町」を海外に移設、ついでに周辺住民などを受け入れを諸外国へ打診する、ちう無理筋なハナシで進んでおりました。
1企業城下町の移設で、数百万の人々を海外移民出来るなんて、与太話もいい加減にしろヨ。

まだまだ、色々といいたいことはあるのですが、筆も鈍って来ており、ここらが潮時なのかも知れませぬ。新年早々、うんざりする様な話題で相済みませぬ。

謹賀新年 (虚礼廃止だったのですが)

2015年6月11日木曜日

「Leapfrogs !」

「Leapfrogs」というゲーム(というかパズル ?)があります。

# ゲームの目的

一本の木の上に、右を向いたカエル(A)と左を向いたカエル(B)が4匹ずつ、並んでいます。カエルA, B の間には、カエル1匹が入るだけの狭い空間(_)があります。

    BBBB_AAAA

カエルA, B は、お互いに「向こう側」に行きたがっているのですが、細長い木の上なので、身動きが取れません。そこで、カエルをつついて移動させ、つぎの状態に持っていくのが、このゲームの目的です。

    AAAA_BBBB

1本の木の上なので、カエルをつつく事で、

  • のそのそと、となりのコマに移動できます
  • 一匹分のスペースをジャンプして、移動できます
どのカエルをつついて動かすか、その指示を与えるには、カエルの場所にある番号を指定します。

    123456789            ←場所 (インデクス)
    BBBB_AAAA        ←カエルの配置状態 (ステージ)

最初は、3, 4, 6, 7 のカエルのみが移動できます。例えば、ここで3のカエルをつついて移動させると、3に居たカエルは4のカエルをジャンプで飛び越し、5へ移動します。

    123456789            ←場所 (インデクス)
    BB_BBAAAA        ←カエルの配置状態 (ステージ)

こうしてカエルをつついて移動させ、最終的に

    123456789            ←場所 (インデクス)
    AAAA_BBBB        ←カエルの配置状態 (ステージ)

の状態に持って行きます。
慣れてきましたら、カエルを移動させる回数を出来るだけ少ない手順で行う方法を探求してみるのが面白いでしょう。
簡単なパズル・プログラムなので、高機能電卓でも十分楽しめるプログラムが作成できると思います。

この記事では、久しぶりにHP35Sで動くプログラムを作成しました。


# 使い方

HP35S では、文字列の加工が出来ないので、苦肉の策として16進数表示を使ってみました。空白の表示は「C」となっています。
  1.  [XEQ] L [ENTER] で起動
  2. C = 1 の様に、試行回数を表示
  3. つぎの書式でステージを表示

    123456789h    ←インデクス
    BBBBCAAAAh    ←「カエル」表示
  4. 移動対象のカエルをインデクスにて指定し、[R/S] を押して入力します
  5. 「上がり」状態になれば「CLEAR !」と表示され、最後に操作回数を表示して、プログラムは終了します
  6. 上がりでなければ、2. へ戻り、繰り返しになります
#  変数

C        試行回数
I, J    配列変数操作インデクス
M        移動するカエルの位置
S        空白の位置

Reg(1)...R(9)        ステージ状態


# プログラム

L001    LBL L
L002    DEC
L003    1
L004    STO I
L005    4
L006    STO(I)
L007    1
L008    STO+ I
L009    4
L010    STO(I)
L011    1
L012    STO+ I
L013    4
L014    STO(I)
L015    1
L016    STO+ I
L017    4
L018    STO(I)
L019    1
L020    STO+ I
L021    3
L022    STO(I)
L023    1
L024    STO+ I
L025    5
L026    STO(I)
L027    1
L028    STO+ I
L029    5
L030    STO(I)
L031    1
L032    STO+ I
L033    5
L034    STO(I)
L035    1
L036    STO+ I
L037    5
L038    STO(I)
L039    1
L040    STO C
L041    5
L042    STO S
L043    VIEW C
L044    PSE
L045    1.009
L046    STO I
L047    0
L048    16
L049    *
L050    RCL(I)
L051    +
L052    ISG I
L053    GTO L048
L054    1
L055    +
L056    +/-
L057    ENTER
L058    ENTER
L059    AAAACBBBBh
L060    x=y?
L061    GTO L092      ; 上がり判定
L062    R↓
L063    123456789h
L064    x<>y
L065    HEX
L066    STOP          ; 入力部分
L067    DEC
L068    STO M         ; 
L069    RCL S
L070    -
L071    ABS
L072    2
L073    xL074    GTO    L089      ; 入力が範囲外か ?
L075    RCL M
L076    RCL S
L077    x=y?
L078    GTO L089      ; 空き位置の指定 ?
L079    RCL M
L080    STO I
L081    RCL S
L082    STO J
L083    RCL(I)
L084    STO(I)
L085    3
L086    STO(I)
L087    RCL M
L088    STO S
L089    1
L090    STO+ C
L091    GTO L043
L092    1
L093    STO- C
L094    SF 10
L095    CLEAR !
L096    PSE
L097    CLEAR !
L098    PSE
L099    CLEAR !
L100    PSE
L101    CF 10
L102    VIEW C
L103    RCL C
L104    RTN

このプログラムでは両側に4匹ずつのカエルが配されています。この場合、最小の手数が24手になるとの事です。
詳しくは、次のサイト様で色々な解説がありますので、御参考下さい。

『カエル跳びゲーム』解答
http://math.a.la9.jp/akaeru.htm

かなり昔に、ポケコンでプログラムを作ったのですが、その時は「最小の手数が24手」というのが、どうにも判らんかったのでした。

2012年10月16日火曜日

HP35Sでt検定だッ

最近は「こんな電卓が欲しい」などと言ったボヤき記事ばかりでしたので、基本に立ち戻って、電卓の利用についての話題を。

HP35Sの数値積分能とプログラムを駆使して(?)、t検定をやってみました。統計の知識が別に入り用ですが、手頃な入門書は図書館にでも行って探してみて頂戴。


1. プログラム

D001    LBL D         //  プログラムスタート
D002    0             //  積分下限 (0からXまで積分)
D003    x<>y          //  積分区間のスタック上の順番を交換
D004    FN= E         //  積分する関数を指定
D005    intFN d X     //  数値積分
D006    RCL D         //  
D007    1             //  
D008    -             //  (df-1)
D009    2             //  
D010    /             //  (df-1)/2
D011    !             //  ((df-1)/2)! = gamma((df+1)/2)
D012    *             //  
D013    RCL D         //  
D014    2             //  
D015    /             //  df/2 
D016    1             //  
D017    -             //  (df/2-1)
D018    !             //  (df/2-1)! = gamma(df/2)
D019    /             //  
D020    pi            //  
D021    RCL D         //  
D022    *             //  
D023    sqrt x        //  sqrt(pi*df)
D024    /             //  
D025    0.5           //  
D026    x<>y          //  
D027    -             //  
D028    RTN           //  

E001    LBL E         //  積分関数
E002    RCL X         //  X について積分を行うため、Xをスタックに置く
E003    x^2           //  
E004    RCL D         //  
E005    /             //  x^2/df
E006    1             //  
E007    +             //  1+x^2/df
E008    RCL D         //  
E009    1             //  
E010    +             //  df+1
E011    2             //  
E012    /             //  (df+1)/2
E013    +/-           //  -(df+1)/2
E014    y^x           //  (1+x^2/df) ^ (-(df+1)/2)
E015    RTN           //  


2. プログラムの使い方

プログラム自体は、t分布の累積分布関数(cdf ; cumulative distribution function)について、xから∞までの範囲(=「右裾」)の値を返すものです。
あらかじめ、自由度dfをレジスタDに入れておき、スタックトップにxを置いておき、

[XEQ] D [ENTER]

とキーを押す事で、結果が得られます。

例えば、自由度10で0.5から∞までの右裾の面積を求めるには、

10 [STO] [D] 0.5 [XEQ] [D] [ENTER]

と押します。「INTEGRATING」表示のあと少々の時間を掛けて、

0.31394680  (FIX 8)

という結果が得られます。

少々手間の掛かる事ではありますが、一応t分布の計算ができました。これを使えば、簡単なt検定の作業が出来ると思います。その例をPDFにて作成しました。右の文書置き場にあります。「t-dist.pdf」を見てチョ。(SkyDriveの方はlogin不要だと思います)

35Sでのt検定はそこそこ使えそうですが、t区間推定は実用にはなりそうもありません。区間推定となると「逆計算」なので、大変時間が掛かるものと思われます。それに、HP35SではSolvreと数値積分を同時には使えないという問題があります。
Solvre部分は自前でNewton Solvreをプログラムで組む方法がありそうですが、数値積分だけでも時間が掛かってしまうため、Solvreまで使うとなると、これはもうポンポンポン(きゃりーちゃんじゃないよ)と軽快にキーを叩いて答えを出すという訳にはいかない。参ったなァ。
区間推定の場合には、TI-83+やHP50gとか、より高機能な電卓を使うのが良さそうです。