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

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

数式処理システムとしてのプログラミング言語Egisonの紹介

シンボリックな計算とは

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

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

最新のEgisonは以下のようにシンボリックな計算をサポートしています。

i^2を-1に変換するような書き換え規則は、Egisonのパターンマッチを用いてライブラリで定義されています。

ユーザーが新たに書き換え規則を追加することも可能です。

シンボリックな計算を用いることにより、代数的数を浮動小数点数で近似することなく、扱うことができます。

例えば、以下のように、二次方程式の解の公式を用いて、二次方程式の解を計算することができます。

この発展的な例として、幾つかのnについて1のn乗根を計算したプログラムを用意しています。
1の5乗根の計算
1の7乗根の計算
1の9乗根の計算
1の17乗根の計算

パターンマッチによる微分の定義

Egisonによる数式処理システムの一番大きな特徴は、Egison独自のパターンマッチを数式に対して適用できることにあります。

例えば、微分はEgisonのパターンマッチにより以下のように数十行のプログラムで定義できます。

この微分関数は以下のように動作します。

ここで、上記に現れるf|1、f|2は、それぞれ関数fを1つめ、2つめの引数で微分することによって得られる関数を表しています。

この微分関数を利用して、入力された関数のテイラー展開を計算するプログラムは以下のように定義できます。

このプログラムを利用してオイラーの公式を確かめることができます。

またもう少し複雑な微分の計算例として、極座標のラプラシアンの検算と導出をしています。
2次元極座標のラプラシアンの計算
3次元極座標のラプラシアンの計算

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