2024年04月26日

wxMaxima 級数和でこんな現象が 高速化のコツがあるぞ なんですとぉ

image

これは 1/n を 1 ~ 100000 まで足す計算である。その計算で時間差が激しい事に気づいたワタクシである。
最も速い記述 sum(1.0/x,x,1,n);     0.0094 sec
次が                sum(x^-1.0,x,1,n);   0.156  sec
もっとも遅い    sum(1/x, x, 1, n);     7.187  sec

   なんでだろう、なんでだろう、なんでなんで。な―んでか? それはねえ・・・ワカラン(´・ω・`)

そこでCopilot先生に訊いてみた

image

この説明で理解できるワタクシではないのである。1/n の場合にはき記号計算をしようとして遅くなるって趣旨だが、それはなんなのさって(´・ω・`)
image

まあそういうわけなので数式は整数で書くな(笑) 係数も小数点ありで書け。そしたらwxMaximaは初めから数値計算をするって話だぞの。

いやー、ま~いいか。wxMaximaってLISPというコンピュータ言語で書かれているらしいということは知っているがここらの話は知らんのである。
何かやると何か起きる。弊害か副作用か予想外か。そういうものがあるから面白い。なにも問題がないのであれば、それはなにもやっとらんというだけの話だ(あくまでも個人の感想であり)

ただ、今回の問題に関してはCopilot先生に訊くと直ぐに回答があって良かった次第である。これをGoogle等で自分で検索するとワタクシはGoogle検索10段(自称)であるが解答までにもっと時間がかかったであろう。

こうなつたらワカラナイ事はCopilot先生やGemini先生に訊きまくる!!  それでいいのだ。バカボンのパパなのだ。

蛇足 つまり蛇の足
wxMaximaで初めから数値計算しろという指令はできますか ワタクシの質問

Copilot先生の回答

はい、wxMaximaでは数値計算を行うための指令が用意されています。
具体的には、numer:true;というコマンドを使用することで、wxMaximaに数値計算を行うよう指示することができます。このコマンドは、以降の計算が数値的に行われるように設定します。

これは 1.0/n と書けば良いので使うことはなかろうワタクシの場合には。

今日はwxMaximaについての雑学が増えたのである。良きかな良きかな。

posted by toinohni at 08:42| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください