ブログトップ

電子工作やってみたよ

タグ:HP電卓ファン ( 24 ) タグの人気記事

前回の続きで雑誌ニュートンの2018年2月号「美しき無限の数式」特集のπ(pai)に関するもの HP電卓を使って遊んでみます。
今度は HP42S を使いました。
理由はHP42Sは 2行表示なので何項目かの表示とそこまでの積算値が一度に表示できるからです。


c0335218_19244143.jpg

このページには4個の式が載っていますがまずは一番上のだけやってみます。
HP42Sのプログラムリストです。

------------------------------

01 LBL "AA" * イニシャライズスタート
02 0 *
03 STO "B" * 分母の値 1,2,3 - - 初期値をセット 1
04 STO "A" * 積算合計値 - - - - の初期値をセット 1

05 LBL "BB" *ループ計算の先頭ラベル
06 1 *
07 STO+”B” *分母に1を加算する
08 RCL ”B" *加算した分母を呼込む
09 X^2 *分母X^2乗の計算
10 ÷ *分子割る分母
11 STO+ "A" *累積値に1/(X^2)を加算する
12 RCL "B" *項のNoをYレジに表示
13 RCL "A" *ここまでの累積合計値をXレジに表示
14 R/S  *ストップしてここまでの累積値を表示
15 GTO "BB" *ループヘッドへ戻り計算を繰り返す


これを N88BASICで書いてみると、以下のようになります。

100 A=0:B=0
200 '
210 B = B + 1
220 A = A + 1/(B^2)
230 PRINT B,A
240 GOTO 200
ごく簡単なプログラムになりますね。

このページ一番上の式の左辺 
(π^2)/6を計算すると1.64493406685となります。
右辺をプログラムまわして計算するとどんどんこの値に近づいていきます。

しかし 不思議ですね こんなきれいな数列を計算していくと円とは全く関係なさそうなのに円周率が答えになってくるなんて。
そして 昔の人は、電卓や計算機など無い時代にどのようにしてこれを確かめたのでしょうか。



by telmic-gunma | 2018-01-21 22:10 | HP電卓 | Trackback | Comments(0)

雑誌ニュートンの2018年2月号に「美しき無限の数式」と言う特集がありました。

また HP電卓を使って遊んでみます。
HP32Sを使いました。

c0335218_19235105.jpg


いくつもの式が載っていますが、まずは最初のものに挑戦してみます。
テキスト文で分数がうまく表示できないので写真右の式を参照してください。

c0335218_19243179.jpg
HP32Sのプログラムリストです。

------------------------------

A01 LBL A * イニシャライズスタート
A02 1 *
A03 STO B * 2の指数の値 1,2,3 - - - の初期値をセット 1
A04 STO A * そこまでの合計値 - - - - の初期値をセット 1
A05 ENT *
A06 1 * 最初の分数の分子
A07 ENT *
A08 2 * 最初の分母
A09 ÷ * 分数を割り算して少数にする
A10 + * 過去の累積値と今回の計算を加算する
A11 STO A * ここまでの合計値

B01 LBL B * ループ計算の先頭ラベル
B02 1 * 分子の1をセット
B03 ENT *
B04 2 * 分母の2をセット
B05 ENT *
B06 1 * 分母の指数
B07 STO +B * 分母の指数に1を加算する
B08 R↓ * 分子の1のスタック位置合わせ
B09 RCL B * 加算した分母の指数を呼び込む
B10 Y^X * Y^X乗の計算
B11 ÷ * 分数の割り算
B12 STO +A * ここまでの累積合計値
B13 RCL B * (不要)hp42Sの時項のNoをYレジに表示する
B14 RCL A * ここまでの累積合計値をXレジに表示
B15 PSE * 累積値を1秒間表示する
B16 GTO B * ループヘッドへ戻り計算を続ける

これで終わりです。


やってみると、意外とはやく2に収束していきます。
まずは簡単な小手調べというところですか。
式は全部で10種くらいあるにかな、 順次やっていくつもりです。


***************

++++++++++++++ 
-------------------------



by telmic-gunma | 2018-01-17 20:31 | HP電卓 | Trackback | Comments(0)

前回 π(パイ)円周率 を求めるのにモンテカルロ法を使って遊んでみましたが、調べる範囲が解っているのになぜ乱数使ってやるの? 
と疑問が湧いたのでモンテカルロ法をちょっと変えてやってみました。
図のNo1はモンテカルロ法で、ひとつの真四角の中に乱数でランダムに点を置いて半円(1/4円)の内側にあるかを調べて数の比率で円周率を求めます。
しかし 調べる範囲が決まっているのだから、なにも不安定な乱数でやることはないと思います。
No2は端から順番に均一に調べていく方法です。 これならばらつきもなく精度が上がるのでないかと思いやってみました。
とりあえず 演算時間もあるので真四角を立て横100等分して合計10000点で調べました。



c0335218_18194215.jpg



c0335218_10462042.jpg


全プログラムリスト 

HP32Sのプログラムです。
10000点のデータが出るまでに20分かかりました。

A01 LBL A
A02 0
A03 STO X
A04 STO Y
A05 STO T
A06 STO P

B01 LBL B
B02 RCL X

C01 LBL C
C02 XEQ H
C03 0.01
C04 STO +Y
C05 RCL Y
C06 1
C07 X>Y ?
C08 GTO C
C09 0
C10 STO Y
C11 0.01
C12 STO +X
C13 RCL X
C14 PSE
C15 1
C16 X>Y ?
C17 GTO B
C18 RCL T
C19 RCL P
C20 STOP

H01 LBL H
H02 1
H03 STO +T
H04 RCL X
H05 X^2 Xの2乗
H06 RCL Y
H07 X^2
H08 +
H09 1
H10 X<Y ?
H11 RTN
H12 1
H13 STO +P
H14 RTN


使用した変数
X
Y
P
T

結果
円の内側の点  7953
真四角の全点 10000

円周率  ( 7953 * 4 ) / 10000 = 3.1812

モンテカルロ法より悪いですね。 縦横100等分ではまだ粗いということでしょうか。
しかし HP電卓でやてみるとこれでも20分かかりました。



************************************************************************

同じ動作をするものを PC9801のN88Basicで組んでみました。(古いですね)
内部演算をバイナリでやっているため、計算の終わりに近づくと少しづつ誤差が累積してきます。
演算時間は30秒くらいでしょうか。

X=0: Y=0: T=0: P=0

WHILE X < 1
PRINT X
WHILE Y < 1
T = T + 1
L = ( X^2 + Y^2 )
IF L < 1 THEN P = P + 1
Y =Y + 0.01
WEND
Y = 0
X = X + 0.01
WEND
PRINT T
PRINT P




これで終わりです。





親戚の農家から柿を貰いました。
柿の品評会で金賞を何度もとったことがあるそうです。
この家の周りには、手入れをされた柿の木がなん十本もあります。
今は 80歳をとうに過ぎていますが、柿を作り始めた歳がなんと70歳だそうで、今の私より歳をとっていたんだ。 弟子入りして教わろうかな。
最初木になっている時は渋柿ですが、木になっている状態でビニール袋を被せ渋抜きをして甘くするそうです。
柿を切って見ると断面にはゴマというのですか黒いつぶつぶがたくさんあります。 当然種なしです。
実は固くて歯ごたえがあり、とても美味しいです。
さて 悩むのは、お返しをどうしよう、ということですね。
もう少したつとりんごがもらえる予定なのでそれ持ってお返しかねて遊びに行ってみようかな。
ついでに言ってしまうと、我が家のネギの苗もこの親戚からもらったものです。
プロというか年期が入っていて市販されている苗よりもとても元気の良いものを作ります。
写真の左下にあるのはHP29c電卓です。大きさ比較のために置きましたがじゃまでしたね。
電卓の上下の長さは13cmです。  この柿を貰う前日スーパーで一つ100円の柿買ってきて食べましたが、それよりもこの方が大きくて美味しいです。

c0335218_19432926.jpg




by telmic-gunma | 2017-11-16 11:20 | HP電卓 | Trackback | Comments(0)

HP電卓の入門解説書(モデル67,07)が本棚の奥から出てきました。
これは YHP(横河ヒューレット・パッカード株式会社)が作ったもので、逆ポーランドの動作や、HP電卓の操作がとても解りやすく書いてあります。
HP電卓においては機種が違っても逆ポーランド法の基本はすべて同じです。
上位機種になるほど命令の種類やメモリーがふえるだけです。
ですので ここに載せたモデル67/モデル97の基本のところはたの機種にもそのまま使えます。

この冊子をスキャナで読みjpgファイルにしてパソコンで読むにはくっきりと大きな文字で読みやすいのですが、ブログに転送すると途端に小さな文字となり読みにくくなってしまいます。
いろいろ試したのですが jpgファイルの大きさにより違いがあるようです。
あるサイズ以下ならば拡大され、あるサイズを超えるとそのままか縮小されてしまうようです。
もう少し試してみます。とりあえずは大小混在していますが、ガマンしてください。


c0335218_23353432.jpg

c0335218_08453438.jpg

c0335218_08460848.jpg

c0335218_08474937.jpg

c0335218_08490040.jpg

c0335218_08495602.jpg

c0335218_08503585.jpg

c0335218_08515099.jpg

c0335218_08530244.jpg

c0335218_08535581.jpg

c0335218_08545157.jpg

c0335218_08572368.jpg

c0335218_08594930.jpg

c0335218_09013315.jpg

c0335218_09033212.jpg

c0335218_09043306.jpg

c0335218_09052911.jpg

c0335218_09064069.jpg

c0335218_09081649.jpg

c0335218_09102264.jpg

c0335218_09112729.jpg

c0335218_09125588.jpg

c0335218_09281082.jpg

c0335218_09143865.jpg

c0335218_09302151.jpg

c0335218_09315866.jpg

c0335218_09370363.jpg

c0335218_09354987.jpg

c0335218_09380429.jpg

c0335218_09391805.jpg

c0335218_09403267.jpg

c0335218_09414487.jpg

c0335218_09423894.jpg

c0335218_09433998.jpg

c0335218_09484526.jpg


by telmic-gunma | 2017-11-07 21:24 | HP電卓 | Trackback | Comments(2)

プログラムコンテストとは関係ないけど、kusakaさんが送ってきたプログラムです。

以下 kusaka さんのプログラム  3時休みの10分間で作ってしまったそうです。
若いですね、うらやましいなー

***********************

1~1000までの素数を見つけて合計するっていうのはどうですか?簡単かな

三時休みでできちゃった。難しい問題ないかなー

全プログラムリスト 

number of prime = 169
sum of prime = 76128
#include <stdio.h>

void main()
{
    int i;
    int a;
    int num_ans = 0;
    int sum_ans = 0;
    int prime = 0;
    for(i = 1; i <= 1000; i++){
        prime = 1;
        for(a = 2; a < i; a++){
            if(i % a == 0)
                prime = 0;
        }
        if(prime){
            printf("%d\r\n", i);
            num_ans++;
            sum_ans += i;
        }
    }
    printf("number of prime = %d\r\n", num_ans);
    printf("sum of prime = %d\r\n", sum_ans);
}


これで終わりです。

kusakaさんのC言語 シンプルですね。


c0335218_13073923.jpg

以下わたしが HP32S で組んだものです。
私の答えは 
素数の数   168
素数の加算値 76127

kusakaさんの値より、なぜかどちらも 1つ小さいです。
演算時間は丁度30分かかりました。
えーと ソフトを作った時間は、ないしょ
フローチャートなど事前に作らないとソフトを組むことできないですね。

全プログラムリスト (HP32S を使用)

変数名
A:   調査する数      初期値1として+2づつ増やし 奇数のみ調査する。
B: 調査する数を割る数  初期値1として+2づつ増やす、奇数でのみ調査する。
C: 素数を加算した合計  最初の素数2は初期値として置いておく
D: 素数の累積の数    1を最初とする。(素数2を置いてあるから)



A01 LBL A   *******

A02 3
A03 STO A   調査する数 素数2は既知とし3から調べる
A04 STO B   調査する数を割る数
A05 2
A06 STO C   素数を加算した合計 最初の2のみ手で入れておく
A07 1
A08 STO D   素数

B01 LBL B   *******
B02 RCL A   調査する数
B03 RCL B   調査する数を割る数
B04 X=Y
B05 GTO F   値が一致していれば素数なので G へ行く

C01 LBL C   *******
C02 ÷     調査する数を順次割って割り切れるかチェックする
C03 FP   (少数以下を取り出す)
C04 X=0
C05 GTO G   少数以下ゼロ、(り切れた)なら素数ではないので次の数値を調べに行く
C06 2
C07 STO +B  割る数を2増やしてチェックし直す 
C08 GTO B

F01 LBL F   ********
F02 RCL A   素数だったので今の値を素数の積算値の足す
F03 STO +C
F04 1
F05 STO +D  素数だったのでカウンターに1を足す 

G01 LBL G   *******
G02 3
G03 STO B   割る数を出発点の3に戻す
G04 2
G05 STO +A  調べる数を2増やす。
G06 1000   上限値の1000
G07 RCL A   調べる数を読み込む
G08 X>Y    調べる数が上限値を越えたか調べる
G09 GTO H   上限値を越えたのでHへ行く
G10 GTO B   まだ上限値でないのでさらにチェックを続ける

H01 LBL H   *******
H02 RCL C   素数積算値を表示する
H03 STOP   停止して終わり

これで終わりです。



C言語だとフローチャートなどなくてもリストだけで全体の動きが見られますね。
これ 図形としてプログラムの形も表現されているからでしょうか。

HP電卓の方は、コメントがあったとしても、一つづつの動作を追っていかなければ理解が難しいですね。
ましてや コメントのないリストは知恵の輪を解くようなものですか。 
これが 結構楽しいのですけけれどね。


追記
プログラムを作っていて頭が混乱してきたのでフローチャートを作りました。
これ 最初にやるべきでしたね。

c0335218_20210497.jpg

素数かいなか調査するときの数値を追って考えました。
この絵を書いたことにより頭がスッキリしました。
やはり絵で表現すると脳が理解しやすいのでしょうか。


c0335218_20213508.jpg

上の続きです。


c0335218_20221011.jpg


by telmic-gunma | 2017-10-23 14:56 | HP電卓 | Trackback | Comments(4)

”すがわら”さんから HP35Sの遅い理由を教えていただいたのでここに載せます。

35sのバッテリーについてはやはり「持たない!」と海外でも騒いでいるようです。それと速度ですけど、35sのCPUは液晶駆動用LSIにCPUが内蔵された形のもので、SPLB31Aという台湾のGeneraplusという会社の物とのこと。
で内蔵されているCPUですが、MOS Technologyの8502です。
ここでヌヌヌと思われたかもしれませんが、8502は「あの」6502のI/O内蔵版である6510の改良品だそうです。
しかしながら8bitであり、低消費電力のためクロックもそれほど高くできないので、それほど早く無いとなります。
オリジナルの8502は2MHzクロック。SPLB31Aはデーターシート上ではVDD 3.6V時にMax 5MHzです。
チップのデーターシートではVDDの最大値が5.5Vとなっていますので、35sについてはバッテリーはパラ接続と思われます。というか、実際に片方外しても動きました... なので、消費電流計測も失敗なさったのだと思います。
hpmuseumというところのフォーラムには10uAだったてな話も出ていますが、もっと暗電流がありそうな気がします。
対して15C-LEにはAtmelのAT91SAM9というCPUが使用されていて、動作クロックも200M~400MHzと桁違い。CPU coreも32bitですし。なのでこれだけの速度差が出るのですね。
英語版のWikipediaにはいろいろと興味深いことがかいてあります。35sのご先祖様であるHP35はMostek製の1bit CPU(シリアル処理CPUですね。MC14500みたいな)で構成されているとか。
それにしてもこんなところで6502にお目にかかるとは思っても見ませんでした。8bitの名CPUって結構しぶとく生き残っているものですね。
知っている範囲では、パチンコ台の出玉制御のZ80(コアのみですけど)、古いタイプになりますがPS/2キーボードの8051、某ICカードの68HC11...

”すがわら”さんからの情報は以上です。 ありがとうございました。
HP35Sの消費電流 ますます計ってみたくなりましたね。 



c0335218_18081020.jpg












by telmic-gunma | 2016-11-25 06:42 | HP電卓 | Trackback | Comments(0)

HP電卓の演算速度 HP35S, HP41CV を計測しました。
HP35SはHP15C_LEよりも十倍以上遅いのは不思議です。
測定プログラムは前回使用し他の機種に使ったものと同じです。
そもそもこういう仕様なのか、私の計測ミスなのか、もし原因判ったら教えてください。

HP41CVのプログラムはカウント終了比較のところが Xキ0 から X=0でやるために
ループのステップ数が6から7に増えています。

HP41CVのテストプログラムです。

LBL ”AA"
200
STO 00
LBL "BB"
1
STO -00
RCL 00
X=0?
R/S
GTO "BB"


HP35Sはしまっておくだけで電池がなくなるので、消費電流計ろうとしたのですが、まだ上手くいってません。
c0335218_19010913.jpg














c0335218_18081020.jpg
































by telmic-gunma | 2016-11-24 19:00 | 基板製作 | Trackback | Comments(0)

HP電卓の機種事の演算速度の比較をしてみました。
方法は下記のごく単純な同一プログラムを入れてプログラムが停止するまでの時間を測定してみました。
機種によってラベル名や変数名がアルファベットや数値なったりします。
また HP32S,HP32Sⅱ,HP4Sでは初期設定の200が1ステップで済みますが、
影響は微小なので無視します。
さすが新しいHP15C_LEは旧HP15Cに比べて150倍はすごいですね。
命令の種類によって1ステップの処理時間は当然変わってくるはずですが、
機種事の比較だけならこれでよいとおもいます。

追記 2016-11-24 HP35S、HP41CVの測定結果を載せたものをこの後のブログで出しています。

テストプログラム

LBL A
2
0
0
STO 0
LBL B
1
STO -0
RCL 0
Xキ0
GTO B
 

c0335218_05582268.jpg
















c0335218_19565409.jpg



by telmic-gunma | 2016-11-17 06:20 | HP電卓 | Trackback | Comments(4)

HP電卓の機種により消費電流が大幅に違うように感じたので比較測定をしてみました。
測定したのは、電池がLR44(アルカリボタン電池)のものだけです。
他の充電式やHP28S,HP41C,HP48Gなどは電池が大きいので消費電流が大きくても持ち時間は気にならないと思い測定してありません。
電流測定は、三和計測器のデジタルテスター PC5000を使用しました。
いつも気になっていたのは、HP42Sの電池がすぐ無くなってしまうことでした。

電源OFFの状態では、全機種とも測定限界以下なので問題ないと思います。
プログラム実行中は各機種とも電流が多いですが、通常の使い方では、キー入力待ちの状態で放置されているのが多いと思います。
やはりHP42SはHP15C(旧)に比べて10倍以上電流が多いですね。
電池の消耗を防ぐには、こまめにON-OFFを実行することでしょうか。
LR44アルカリ電池の値段をアマゾンで調べたら、今では1個10円程度で購入できるのですね。
これならまとめ買いをしておけば、さほど消耗を気にすることないのでしょうか。

追記 2016年12月2日のブログ にHP15C-LE と HP35S の消費電流のデータを追加して載せてあります。
c0335218_17304883.jpg










by telmic-gunma | 2016-11-11 17:56 | HP電卓 | Trackback | Comments(0)

ネットで逆ポーランド法のことを検索していたら「逆ポーランド記法」というのがほとんどであることに気が付きました。
私は「逆ポーランド法」と思い込んでいたので手元にある日本語マニュアルを調べてみました。(HP35S以外はYHP横河ヒューレットパッカードの製作)

HP25のカタログーーー 逆ポーランド法
HP15C-------- 逆ポーランド法
HP28S-------ー逆ポーランド記法
HP29C-------- 逆ポーランド記法
HP32S-------- 逆ポーランド記法
HP35S--------逆ポーランド方式(発行者記載なし)
HP42S--------???
HP48SX------- 記載なし?(見つからない)
HP97--------- 逆ポーランド記法
(本)カッコのない国ーー後置記法(中置記法との対比のため?)
その他 「逆ポーランド表記法」 なんていうのもネットで見ましたね。

まあ 国家試験では、「逆ポーランド記法」になるのでしょうが、
普通には 意味が通じれば、どうでもいいのじゃないですか。

c0335218_08494459.jpg





by telmic-gunma | 2016-11-03 08:51 | HP電卓 | Trackback | Comments(0)