オレンジとグレープフルーツ
ここまで、フーリエ分析を理解するために必要な数学の復習を行ってきましたが、数学に苦手意識がある人は「どうしてここまでコンピュータが発達しているのに、数学(計算)を学ばなければならないんだ!」と思っている方もいるかもしれません。
その疑問(叫び?)に対する私の返答はいくつかあるのですが、ここでは代表的な答えを一つだけ書きましょう。それは「言語化できない知識を、論理的に思考・伝達することは不可能だから」です。
具体的な例を出しましょう。『オレンジとグレープフルーツが1つずつ置いてある』という文章を読めば、(日本語の知識がある限り)その文章が意味するところを理解する事は容易で、誰にでも誤解なく情報が伝わります。そこにレモンや夏みかんなどが入り込んでくる隙はありません。
ではこれが、文字・文章を使わずに表現してくださいと言われればどうなるでしょう。イラストにせよ写真にせよ、誤解が生じる可能性が生まれてきます。オレンジとレモンの違いくらいは描き分けることができるかもしれませんが、グレープフルーツと夏みかんの違いとなるとなかなか難しくなります。
『マンダリンオレンジとネーブルオレンジとバレンシアオレンジ』などと言われたらもう絶望です。よほど果物に精通した専門家でない限り、写真であってもそれらを識別することは難しいでしょう。
数学になるとそれがさらに難しくなってしまいます。なぜならば、数学で扱う「抽象的な思考」は、写真でもイラストでも文章でも正確に表現することができないからです。そのため人類は、古代から現代までの長い時間をかけて、「数字」から「数式」という、抽象概念を表現するための新たな言語を生み出してきたのです。思考を明確にし、表現して共有するためのツールとして、数式を扱うスキルは必要なのです。
数式処理ソフトに触れよう
とはいえ、数式がどうしても苦手だという人に「歯を食いしばってでも耐えろ!!」というのはあまりにも酷なわけで…何とかコンピュータで学習のサポートはできないものでしょうか。
コンピュータ(パソコン)で計算をするソフトウェアとして、一般に広く使われているのは、OSに付属の「電卓」や、Microsoft Excelに代表される「表計算ソフト」でしょう。しかし、本連載で扱うような数学計算(積分や行列計算)を行うためには不便です。電卓ではもともと機能不足ですし、Excelの場合は頑張ればやれない事もないのですが、かなりの工夫と知識が必要です(積分などやろうと思ったら、数値計算法というまた別の数学知識が必要になったりもします)。そして無理数のような割り切れない値が計算途中に出てくると正確な答えが出せない(近似計算しかできない)事もあります。
何より、電卓もExcelも「具体的な値が示された計算しかできない」という致命的な問題を持ちます。xやyといった変数の混じった計算(方程式など)を解いたり、三角関数や平方根といった値を、sinや√という記号表記の〈まま〉計算する(専門用語でいうと「厳密解を求める」)ということができません。このような計算をコンピュータで行うためには「数式処理ソフト」という、特殊なソフトウェアを使用する必要があります。
数式処理ソフトは専門家が使用するソフトで、市販されているものは大変高価です。しかし現在では無償で使用できるソフトウェアも公開されており、手軽にチャレンジすることができます。
本記事では無償で使用できる数式処理ソフトとして、ブラウザ上で動作するオンラインツール「Wolfram Alpha」と、ダウンロード・インストールして使用する「Maxima」の2つを紹介します。
Wolfram Alpha
Wolfram Alphaとは
Wolfram Alphaは、著名な市販数式処理ソフトMathematicaから派生して生まれたサービスです。ブラウザでアクセスするだけで使用できる手軽さと、人工知能により自然言語(日本語でも英語でも)でかなり柔軟に指示を出せることが特徴です。拡張機能は有料ですが、無料で使用できる範囲でも十分に活用できます。
Wolfram Alphaの始め方
Wolfram AlphaのWebサイト( https://www.wolframalpha.com/)にアクセスするとすぐに使い始めることができます。
式(命令)の入力欄の下に充実したヘルプがあり、用途に応じてどのような命令が使えるのか探すことができます。(主要な部分は日本語に翻訳されていますが英語しか表示されないページも存在します)
式の入力は「自然言語」を選んで、自然な日本語や英語で質問を記入することもできますし、「数学入力」を選べば、かなり複雑な数式もマウス操作で直観的に入力することができます。この記事では「自然言語」モードを使用した操作方法を説明します。
Wolfram Alphaを使ってみる(行列の計算)
前回の記事で紹介した行列の計算をWolfram Alphaを使ってやってみましょう。
行列をWolfram Alphaに入力する時は、中カッコ{}を使用します。行列の全体を中カッコで囲み、さらに行列の各行を中カッコで囲みます。各行と成分はカンマで区切ります。
この書き方で行列を表記すれば、簡単に足し算、引き算ができます。入力欄に
{{3,1,4},{1,5,9},{2,6,5}}+{{2,7,1},{8,2,8},{1,8,1}}
と記入してEnterを押すと、答えが出てきます。単純に指示された答えだけでなく、関連しそうな補足情報も自動的に表示してくれます。
面倒な行列のかけ算も、同様にかけ算記号(アスタリスク*)を書くだけです。
{{3,1,4},{1,5,9},{2,6,5}}*{{2,7,1},{8,2,8},{1,8,1}}
と書いてEnterを押せば答えが得られます。
Wolfram Alphaを使ってみる(積分の計算)
積分をするためには、積分の命令Integrateを使用し、積分の対象となる数式と変数(定積分の場合にはさらに積分範囲の下限と上限の値も)を指定してEnterキーを押せば積分を計算してくれます。
上記の不定積分を計算すると図のようになります。計算結果に「+定数」と書かれているのは、積分定数を意味します。
手計算するとちょっと面倒だった
も、一瞬で計算できます。
Maxima
Maximaとは
Wolfram Alphaは手軽で大変便利ですが、式の変形を何度も繰り返したり、複数の式を定義しておいて後からそれをまとめるような複雑な計算になってくるとパワー不足になってきます。
そのような時は、オープンソースで開発されていて、無償で使用できるMaximaが便利です。無償で使用できるとはいえ、市販の数式処理ソフトウェアであるMathematicaやMapleと比べても遜色ない機能を搭載しています。
Maximaの始め方
Maximaの公式Webサイト( https://maxima.sourceforge.io/)にアクセスします。右側のメニューにある「Downloads」をクリックします。
ここからOSごとに操作が変わりますが、ここではWindowsにインストールする場合を想定して説明します。
本文中のWindowsというセクションに、「Read the section: Installation of Maxima in Windows」という表記があるので、リンクをクリックします。
少しわかりにくいのですが、本文の中に書かれた最新のソフトウェアバージョンが、インストーラへのリンクになっていますので、そこをクリックします。
ダウンロードページ(SOURCEFORGE)に飛ぶので、必要なインストーラを選びダウンロードします。
リンクをクリックした後、数秒待つとインストーラのダウンロードが始まります。ダウンロードが完了したら、ブラウザは閉じて構いません。
ダウンロードしたインストーラを開き、通常のアプリケーションをインストールする容量でインストールを行います。特に変更しなければならない設定項目はありません。
セットアップの完了画面が出て、スタートメニューの中に「Maxima Computer Algebra System」という項目ができていれば、インストール成功です。
Maximaは「コマンドラインから使用する方法(GUIを使用しない)」「XMaximaを使用する方法(シンプルなGUI)」「wxMaximaを使用する方法(リッチなGUI)」という3種類の使いかたがありますが、初心者が使用する際は「wxMaxima」を使うのが良いでしょう。
Maximaの使いかたはマニュアルを見て学ぶことができます。Maximaの公式Webサイトにアクセスし、右側のメニューにある「Documentation」をクリックすると最新のマニュアルを入手できますが、英語で書かれています。日本語マニュアルについてはMaxima日本語ドキュメントから、「ドキュメント」→「Maximaマニュアル」とリンクをたどって下さい。(翻訳に時間がかかるため、若干バージョンが古い情報になっていますが、操作方法は大きく変わらないので問題なく参照できます。)
Maximaを使ってみる(行列の計算)
前回の記事で紹介した、行列の計算をMaximaを使ってやってみましょう。
行列をMaximaに入力する時は、角カッコ[]を使用します。行列を示すキーワードmatrixの後に、行列の全体を角カッコで囲み、さらに行列の各行を角カッコで囲みます。各行と成分はカンマで区切ります。
この書き方で行列を表記すれば、簡単に足し算、引き算ができます。入力欄に
matrix[[3,1,4],[1,5,9],[2,6,5]]+matrix[[2,7,1],[8,2,8],[1,8,1]]
と記入してShift+Enterを押す(Enterだけでは入力の改行が行われるだけで、式は実行されません)と、答えが出てきます。(式の最後にはセミコロン;が必要ですが、Shift+Enterを押すと最後の1行には自動的にセミコロンが入ります)
面倒な行列のかけ算も、同様にかけ算記号(アスタリスク)を書いてShift+Enterを押すだけです。なお、Maximaではキーボードからアスタリスク(*)を入力すると、画面表示は自動的に中黒(・)として表示されます。
Maximaを使ってみる(積分の計算)
積分をするためには、積分の命令integrateを使用し、積分の対象となる数式と変数(定積分の場合にはさらに積分範囲の下限と上限の値も)を指定してEnterキーを押せば積分を計算してくれます。
上記の不定積分を計算すると図のようになります。積分定数は省略されているので注意して下さい。
手計算するとちょっと面倒だった
も、一瞬で計算できます。
準備は万全!
ここまでで、本連載の「準備編」は終わり、準備は万全になりました!次からいよいよフーリエ分析の第一段階である「フーリエ級数編」に入ります。
こちらも是非
“もっと見る” ブログ
センサーのすべてがわかる!組み込み技術者のための基礎知識
私たちの生活を豊かにするために欠かせないセンサー。そんなセンサーの仕組みや種類について、分かりやすく解説していきます。
ブラシレスモーター制御用MCUをささっと動かしてみよう!【RL78編】
私の主観としては、”モーター制御用途でも十分使用可能な超汎用MCU”です。現状最も人に勧められるMCUの1つです。2つめのリンク stmcu.jpは、ログインする事でリファレンスマニュアルやペリフェラルの使い方に関する日本語資料が閲覧できますので、ユーザー登録をおススメします。
【フーリエ級数編3:フーリエ級数展開】イメージでしっかりつかむ信号処理〜基礎から学ぶFFT〜
いよいよ、フーリエさんの発見したフーリエ級数展開を学んでいきます。『全ての周期信号は三角関数(サイン波・コサイン波)の足し合わせで表現できる』と言葉ではすでに説明しましたが、これを数式を使って定義すると、図のようになります。