プロが教えるわが家の防犯対策術!

数式処理ソフト、maximaのウィンドウズ版13.04.2で、以下のような計算をしました。
簡単な3次代数方程式の解とその解の和です。式が何をしているかも説明しました。

ax:solve(x^3-1=0,x); x^3-1=0の解を求め、結果をaxに入れる。
s:makelist(rhs(ax[i]),i,1,length(ax)); axの右辺だけが答えとしての値なのでそれを取り出し,リストsとする。
sum:0; 和をとる変数の初期化
for i:1 thru length(ax) do(sum:sum+s[i]); リストsの各成分の和を取る。
sum; 出力結果を見る。

ここで、予想される結果はゼロですが、-(√3i+1)/2 + (√3i-1)/2 + 1 までしか計算しません。
これをゼロと出力しないのはなぜでしょうか。見ただけでゼロは確認できるのですが。

maximaに限らず数式処理は明らかに簡単になるのにそれをしてくれない場合があるような気がします。sin^2+cos^2=1などもですが。実数を厳密に調べて打ち切り誤差が違うので相殺してくれないというようなこともあるのでしょうか。
よろしくお願いします。

A 回答 (1件)

内部を知っているわけじゃないけど, おそらく「分数をばらすリスク」を考慮してこうなってるんじゃないかなぁ. 今の場合は分数をばらし

て整理すると簡単になるけど, 一般にそうであるとは限らない. であるなら, 「言われない限り分数は分数のままにしておく」という方針もありだと思うよ.
    • good
    • 0
この回答へのお礼

回答ありがとうございます。簡単化できるものはフルにそうしてくれ、という設定はあるのでしょうか。

お礼日時:2017/09/05 11:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!