2024年11月26日火曜日

fx-CG50 の X post が増えていたので

 fx-CG50 の X post がやたらと増えていたのですが、殆どが、以下の記事を引用したものでした。

ref. 第1回 Python電卓を使ってみよう Pythonが動くリアル電卓「fx-CG50」
https://news.mynavi.jp/techplus/article/calcpython-1/

大手web媒体の連載で、読み応えもありそうですが ... 残念な事に、メール登録しないと読めない。「一見さん、お断り」なのネ。どうせ広告なんだから、吝い事を言いなさんな。

そんな"広告"の中でも、以下のpostは、やす親分の引用でしたネ。シロン ( @_Chiron__ ) 様、多謝であります !

ref. https://x.com/_Chiron__/status/1860534381561151816

で、CG50の後継機種と目されている、fx-CG100の話は、日本では全く聞かれないのでありますが、最近、妙な事を考えておりまして。
fx-CG100では、Add-Ons や CASIO BASIC などが、対応しなくなりそうという事らしい。ストレージも削減されているとかで、どちらかと言うとfx-CG100より「後退」していそうな印象。

他方で、(Sentaro様曰く、CASIOが追っかけている ?) TI の電卓では、upython 対応が徐々に進められていて、最近では、micro:bit を接続して使用する、などの機能が提供されていると。
この micro:bit 接続機能ですが、TIの電卓では以前から、センサーキットやRoverキットなどの接続機能があって、そうしたハードウェア拡張の一環、という位置付けらしい。

実は、fx-CG50でも、センサーキットと接続して、センサー入力したデータを分析するアプリケーションが用意されておりました。センサーキット自体が入手困難な上、手頃ではなさそうなのですが、この辺りは、TIの電卓を追いかけていた様で、まさに、Sentaro様の言う通りであります。
ちなみに、データ分析アプリでは、FFTなどの機能があったりします。結構実用的な感じですが、データを取得し、分析する機能がアプリ側で閉じられているので、外部からデータを放り込んで分析をする、という芸当が出来ない辺り、ショボーンな訳ですネ。
尤も、FFTを使う、という事であれば、XCASに機能があるので、Add-OnsでXCASを使えば、勉強になるんじゃろか ?

で、TI電卓 の micro:bit 接続機能なんかでも、micro:bit に接続したセンサーなどのデータを読み込むみたいな作業が出来るとかで、そうして取得したデータをグラフ表示する、という作例が、以下で紹介されておりました。

ref. TI-Python と micro:bit の連携について
https://qiita.com/inachi/items/8306c73a9ed76e72b28e

原理的には、fx-CG50でもできそうな気がするのですが、目下の所、fx-CG50 の upython 機能は、イマイチ足りない。
fx-CG100辺りでは、upythonの機能を拡充するらしい、という観測もあって、例えばUSB port 経由で通信機能などを充実する事で、micro:bit 接続機能に類似した事が可能になってくれると、TI の追っかけ風で、チョット面白いかなぁ、などと不埒な事を妄想してしまったのであります、ハイ。

2025年、「CASIOがきっと、何かやる」事を期待しつつ。

2024年11月16日土曜日

「fx-CG50 でもやってみた」チャレンジ ?

 先日、つぎの post を見かけました。

https://x.com/RR_Inyo/status/1853820210874376698

実機が手元にないのでオンラインシミュレータですが,0になりました!
NumWorksは根号などをある程度そのまま扱うようです。

(sqrt(2)-1)^10 - (3363-2378*sqrt(2)) = 0
Numworks の話題でしたが、それでは、我らが fx-CG50 ではどうなのかと試した所、残念ながら fx-CG50 では、累乗の計算について、整式での計算は行いませんでした。

「くやしいのう、くやしいのう」

しかし、諦めが悪いので、どうにかして、同様の計算結果が得られないモンか、と、考えてみましたヨ。

この整式の計算自体は、2項定理の計算を行えば出来そうです。
(sqrt(2)-1)^n の計算でありますから、sqrt(2) の累乗部分を、うまく括りだすことが出来れば、当初の目的は達する筈であります。

そこで、2項定理の計算で用いる「組み合わせ」の機能をもつ BASIC で、かんたんなプログラムを作成しました。

```
For 0->N To 20

0->A
0->B

For 0->K To N
If MOD(N-K,2)=1
Then
N nCr K*2^((N-K-1)/2)*(-1)^K+A->A
Else
N nCr K*2^((N-K)/2)*(-1)^K+B->B
IfEnd

Next

A->List 11[N+1]
B->List 12[N+1]

Next
```
これを実行すると、20次までの累乗について、List11, List 12 に、係数の数列が保存されます。
この数列は、(sqrt(n)-1)^n = A*sqrt(2) + B と展開した場合、
List 11 ; A
List 12 ; B
が保存されます。

例えば、(sqrt(n)-1)^10 = -2378*sqrt(2) + 3363 でしたが、
List 11[11] = -2378
List 12[11] = 3363
となる寸法。(残念ながら、リストの添字は1始まりなので、10乗の場合には、添字11に保存される具合)

ここまで苦労したものの、fx-CG50 には XCAS が作られております。これを使えば「答えイッパーツ !」でしたね。

(sqrt(2)-1)^10 と入力し、simplify() を適用する事で、所望の結果が得られましたヨ。さすがは XCAS。

で、延々作業したものの、n->inf の極限では、(sqrt(2)-1) < 1 なので (sqrt(2)-1)^inf -> 0 に収束するという、泣けてくるオチまで用意して、このネタを終わりにしたいと思います。