プログラムな日常>ウェブプログラム作品集>
多項式の展開
(expanding literal polynomials)
query
exec
log
results
math HTML text C# javascript
order of settlement




 多項式の展開ができます。加減乗と、非負整数による指数の計算ができます。割算は実装していません。
 式の連立が可能ですが、同一変数が左右両辺に来る場合を禁止しているため、消去法はほぼ無理で、代入のみ可能です。

使い方: 
解説:
 数値計算している「式の評価」、因数分解の「一変数多項式の因数分解(実係数)」「二変数多項式の因数分解(実係数)」、一般の連立方程式数値解を(これから)目指す「Tiles」 などと姉妹関係にあると言えるかも。
 このページが目指すような数式処理の手段が絶対に必要かと言うと、そうでもなく、これの必要性はどちらかと言うと検証であり、それについては数値計算でもそこそこできます。
 私の経験で申すと、三点の座標で定義される三角形の外心と垂心を求める式は私が発見。これが「初」発見かということには確証はないが、多分そうだと思う。 根拠は、Wikipedia の英語版にアップしたときに、 「こんな式は見たことがない。お前が考えただろう。Wikipedia は独自研究のアップを禁止している。」として、一年間位、アップを取り下げさせられていた経緯が。 実際そういう規則は Wikipedia にあった。 しかし、それを守ると分野に最も詳しい人がアップできないという矛盾を生じることになり、最近は緩和されているようだが、そんなことで他人のアップを阻止するのはやはり大人げないと思う。 私自身が数学者というわけでないだけに、たまたま変な人が数学者だと数学者全体が変と思ってしまいかねない。 これは国民性とか県民性とかの評価の際にもあるのだろう。異質な(そうかも知れない)人と接する時は特に、紳士、淑女であることを心がけなければならない。
 これは余談だったが、外心の式を導くのに、目標を定めてから2週間位かかり、これにはコンピュータも利用したが、それはこのページのような数式処理を使ったわけでは「ない」。 そうでなく、数値計算によって、式展開が間違っていないことを確認しながら進んだ。 間違った展開に気づかないまま進むことが最も時間の浪費であり、それを避けることは数値計算でもできた。
 数値計算によるやり方は、正当性の事実上の確認にはなるが、数学上の「証明」でない。 しかし、数式処理は証明と言えると思う。万全を期すなら、計算機のステップをなぞって記録すれば良い話だ。

 プログラムがデフォでするのは数値計算だ。へえ、と思う人も居るかも知れないが、昔はコンピュータを「電子計算機」と言った。文字通り計算する目的のものだったのだ。
 数式の(数値)計算方法としては、「逆ポーランド」に変換するというやり方を聞いたことがある。 「式の評価」のやり方は、普通の式の最初からきちんと変換しているように見えるが、 実はスタック構造のデータを仮置き利用しているので、機能上は「逆ポーランド」と同じだ。 こうした方法の特徴は、例えば括弧は、その最も内側から計算するということだ。
 今回の数式処理はこれとは全く違う。変換の順序は括弧の内外に必ずしも拘らない。効能が限られた色々なワクチンを、次々、繰り返して投与している感じだ。 考えてみれば無駄なことをしていると思う。 どの変数が数値として与えられ、どの変数がそうでないかは、計算の最初から明らかで、それをバッチ処理するわけだから、やはり内側からの処理が効率良かった。
 しかし、無駄なことをしたおかげで、例えば、 q=(a^2-2a)*2^(b+1); a==2; のようなものでも計算できてしまう。この辺が本プログラムの愛嬌だ。 ただ、これを含む色々な理由で、現状、あらゆる問題に最適化しているとは言えない。 例えば、二項展開の (x+1)^13 は計算できるが、14乗になるとキビシイみたい。工夫の余地は多々あるかも。

 改定(2023/6/8):結果表示は、定義と同じ順番(デフォ)に加え、確定順('order of settlement')を選べるようにしました。