体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

プログラミング言語Egisonによるガロア理論入門 (1) ―2次方程式の解の導出

プログラムで代数方程式を解く

数式処理システムの機能を持つプログラミング言語Egisonでは、√2や√3のような数を浮動小数点数として近似することなくプログラム上で扱うことができます。

この機能を用いると、2次方程式、3次方程式、4次方程式を始めとする代数方程式の解を求めるプログラムを記述することができます。

実は、2次方程式、3次方程式、4次方程式や、x^n – 1 = 0のような様々な種類の代数方程式を解くアルゴリズムには、一般的な法則が潜んでいることが知られています。

本記事では、まず、最も単純な代数方程式である2次方程式の解を導出するプログラムをEgisonで書いてみます。

数式処理システムとは

数式処理システムとは、シンボリックな計算を実行することができる言語処理系のことをいいます。

シンボリックな計算とは、例えば、x + x = 2xや(x + y)^2 = x^2 + 2 x y + y^2のようにxやyのような変数をシンボルとしてプログラム上で数と同様に扱い計算することです。

Egisonでは未定義の変数は全てシンボルとして扱われるようになっています。

シンボリックな計算をサポートしている既存の数式処理システムとしては、Mathematicaや、Maxima、Pythonの拡張ライブラリとして実装されているSymPyなどが有名です。

その中でEgisonは微分幾何学の計算を簡潔に表現することに特化した数式処理機能を持っています。 特にテンソル計算を簡潔に記述するための添字記法をプログラムでも自然に使うことができるのが大きな特徴です。

公式ウェブサイトには、学部レベルの数学の計算から、最近発表された数学論文でなされている特性類の計算までを含むEgisonの数式処理機能を用いたデモを公開しています。 ぜひこちらもご覧になってみてください。
Egison数学ノート

代数的な数をコンピューターで扱ってみる

シンボリックな計算は、代数的数を浮動小数点数で近似することなく、扱うことを可能にします。

以下の例では、平方根を浮動小数点数で近似することなく扱っています。

例えば、√3は、二乗したら整数3になる数としてプログラム上でも表現することができます。

sqrt関数は、引数で与えられた数の平方根を返す関数です。

sqrt関数の引数に4を渡すとその平方根である2を返します。

sqrt関数の引数に3を渡すと、この式はこれ以上簡単にできないので(sqrt 3)をそのまま返します。

(sqrt 3)を2つ掛け合わせると、3になります。

(sqrt 2)と(sqrt 3)を掛け合わせると、(sqrt 6)となります。

1 2 3 4次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。
GetNews girl / GetNews boy

オスカー2018年晴れ着撮影会