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 に収束するという、泣けてくるオチまで用意して、このネタを終わりにしたいと思います。

0 件のコメント: