2017-03

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

数式の処理

数値解析

 数式を入力して、それを計算するソフトウェアは、非常にたくさんある。
多くの人になじみのある例では、Windowsに搭載されている電卓。
本物の電卓や関数電卓の感覚でボタン操作だけで結果を得られるが、メモ帳などでショートカットキーを羅列(式を書く)して電卓に貼り付け(Ctrl+V)て計算することもできる。
たとえば、「(1@+2@)I@」で 12+22 の平方根(√)が求められる(電卓のヘルプ参照)。

 Googleでも、検索フォームに数式を入れれば、計算してくれる。しかも複素数を扱える。

 また、OfficeのExcelでも、セルに式を書けば計算してくれる。セルに「=SQRT(1^2+2^2)」といった式を書けば、先ほどと同様な結果を得られる。また、「=SQRT(A1^2+A2^2)」のように、セルの値(変数)を参照することもできる。

 ほかには、グラフ表示ソフトであるgnuplotでも、

a=1
b=2
print(sqrt(a**2+b**2))
というように、変数を使ったりして式の計算を行ってくれる。
また、MatLabは上述のものとは違ってベクトルや行列としてのさまざまな計算に非常に長けている。

数式処理

 前置きが少々長いが、上に述べた各種のシステムはあくまでも「数値計算(数値解析)」であって「数式処理」ではない。 つまり、何らかの実数値(複素数値)を関数に当てはめて結果を得ることしかできない。
例えば、「a2 + 2 a b + b2」を計算するとき、aとbに適当な数値を代入して数値を得ることができても、「=(a + b)2」というように因数分解などの「数式としての計算」ができないのである。それに、2.23606798といった小数を扱えても、√5のような値は扱えない。
数式処理ができるソフトとしては、Mathematicaなどがある。例えば、「Factor[a2+2a*b+b2]」で「(a+b)2」が得られる。

 世の中で数値計算ソフトが圧倒的に多いのには、主に2つの理由があると考えられる。
一つは、実装が簡単だということである。数値計算ソフトは、入力式から"どの数値をどの関数に放り込むか"ということを読む仕組みさえ作れば、あとはプログラミング言語で用意されている関数に流すだけでほとんどプログラムの主要部分が完成する。
一方、数式処理ソフトは、数学の教科書に載っている「a2+2ab+b2を因数分解せよ」みたいな問題を生徒が解くのと同じようなアルゴリズムを載せなければならないので、究極的には人工知能の域に到達するような難しさなのである。
また、もう一つの理由として、多くのユーザーは数値計算だけで事足りるのである。"2次元座標の点の原点からの距離を計算させる"というケースがあったとしても、単に座標を表す実数値2個を与えて近似値を得るだけで充分なのだろうし、"結果が整数になるか"とか"値が無限大に発散するか"とかいったことを必要とするケースがほとんどないのである。

講演会

 プライベートな話題であるが、一昨日、「記号表現と情報処理」という演題の講演を聴いた。
バイトで、入力数式が登録されている数式と同値かどうかを判定するシステムを作れないかと頼まれていたので、ここ最近は数式処理についてかなり考えていたのだけれど、たまたま一昨日の講演で聴いた話題がそのシステムのことと一致してくることに驚いた。
講演会ではあまり触れられていなかったが、なんと、Mizarというプログラムは、数学の定義与えて、さまざまな定理を間違いなく証明するのだという。つまり、生徒が教科書で読んだ公式などを基に演習問題を解くようなことをしているのだという(恐らく)。
数式処理というのがここまでの領域にあるものだとは。Mathematicaや形式言語論すら知らなかった中で代数計算を行うプログラムを作ろうと試み、多項式演算とかだけで挫折した2年前からすると、かなりのことを学んだと感銘を受ける。

 ちなみに、この前考えていた平方根の整数部分を求めるアルゴリズムとかを講演会の先生が当たり前のように話しているのを聞いて、やっぱりアイデアの殆どは"カス"なのだとつくづく思った。

スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://butchi.blog42.fc2.com/tb.php/45-154d8dac
この記事にトラックバックする(FC2ブログユーザー)

«  | HOME |  »

プロフィール

ぶっち

Author:ぶっち
面白法人に勤める男。

趣味: 数学、コンピュータ、CG鑑賞・制作、アカペラ(ベース、パーカッション)
自分をモノにたとえると、"次世代OS搭載の旧世代PC"
http://butchi.jp/

Twitter

最近の記事

カテゴリー

月別アーカイブ

最近のトラックバック

ブログ内検索

RSSフィード

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。