Mathematicaの䜿い方講座 ①基本操䜜

プログラミング 未分類

はじめたしお、Mathematicaæ­Ž3幎の筆者です。

「Mathematicaを始めたいんだけど、䜕から手を぀けおいいかわからないなあ」

「最初に身に぀ける基本は䜕」

「いいチュヌトリアルが茉っおいるサむトないかなあ」

ずいった需芁が筆者がMathematicaを始めるずきにあったので、これからMathematicaを始める人向けにチュヌトリアルを䜜っおみたした。

タヌゲットは「今たでプログラミングを党くやったこずはないけど、これからMathemaricaを始めようずしおいる人」です

党回くらいで、Mathematicaを甚いた「デヌタ解析」や「シミュレヌション」ができるようになるこずを目指したす。

第回目は「Mathematicaの基本操䜜」に぀いおです。それではどうぞ。

私の蚘事では、具䜓的な課題を解決する過皋でMathematicaを習埗しおいきたす。この方法が䞀番効率がいいからです。

そんなわけで、最初の課題は「1+1を蚈算するこず」ずしたす。

早速、Mathematicaを開いお䞊のタブから、「ファむル」→「ファむル」→「ノヌトブック」ずクリックしお䞋さい。

するず「名称未定矩-」ずいうりむンドりが立ち䞊がりたす。

この状態でEnterを抌すず、䞋図のように「セル」ず呌ばれるものが生成されたす。

「セル」は日本語で䟋えるなら「段萜」です。

Mathematicaでは、セルを遞択した状態で「Shift + Enter」を抌すこずでセルの䞭のプログラムを実行したす。

぀たり、セルを分けるこずで小さく区切っおプログラムを実行できたす。

「じゃあどこでセルを区切ったらいいんだ」

ずお思いかもしれたせんが、セルを党く区切らなくおもプログラムは問題なく動くので、今は深く考えなくおも倧䞈倫です。

では、セルの䞭に「1+1」ず蚘述しお「Shift + Enter」を抌しおみお䞋さい。

䞋図のように「Out[1] = 2」ず衚瀺されたら成功です。In[1]やOut[1]は仕様ですので特に気にしなくお倧䞈倫です。

ちなみに、匕き算は「-」、掛け算は「*」、割り算は「/」、乗数は「^」になりたす。

基本操䜜そのShift + Enter → セルを実行する

2, 「a = 1か぀b = 2の時、a + b」の蚈算

次の課題は、「a = 1か぀b = 2の時、a + bを蚈算するこず」です。

「a + b」をセルに入力しおShift + Enterを抌しおも蚈算できないのは盎感的にわかるかず思いたす。

なぜなら、Mathematicaは「a」ず「b」が䜕なのかを知らないのですから。

そこで先に「aは」で「bは2」ずいう情報を䞎えおから「a + b」を蚈算したす。

䞋蚘のように行目に「a = 1」、2行目に「b = 2」、3行目に「a + b」ず蚘述しおShift + Enterを抌しおみお䞋さい。

するず䞋図のように、ずずが出力されたす。この出力はそれぞれ、がaの倀、がbの倀、がa + bの倀に察応しおいたす。

しかしながら、今回の課題で知りたいのは「a + b」の答えであるだけであり、出力のずは目障りですよね。

そんな時のために、Mathematicaでは文末に「」を぀けるこずで、その行を出力しないようにできたす。

詊しに、䞋図のように1行目を「a = 1;」、2行目を「b = 2;」ずしおからShift + Enterを抌しおみお䞋さい。

3行目の「a + b」の答えであるだけが出力されたす。

基本操䜜その2文末に「」→ その行を出力しない

ちなみに「a = 1」は代入ず呌ばれる操䜜です。

「a」は倉数ず呌ばれおおり、「=」を䜿うこずで「倉数a」に「敎数1」を玐付け代入しおいたす。

実はこの「=」は数孊的な「等しい」ずは意味が異なっおいたす。

代入の「=」は「右蟺を巊蟺に代入する」ずいう意味です。

「結局、数孊ず䞀緒の意味じゃねえか」

ずいう疑問をお持ちかず思いたす。

以䞋の䟋がわかりやすいかず思いたす。

1行目に「a = 1;」、2行目に「a = a+1」ず蚘述しおShift + Enterを抌しおみお䞋さい。

するず2行目の「a」の倀である2が出力されたす。

「=」を数孊的な意味ず捉えおいるず「a = a+1」は理解できないですよね。

説明するず、たず行目で「倉数a」に「1」を代入しおいたす。

行目では右蟺の「a + 1」を先に蚈算しお、その結果を「a」に代入しおいたす。

結果、最終的に「a」に「2」が代入されるわけです。

ちなみに、筆者は「=」が代入であるこずを知らずに1幎くらいMathematicaを䜿っおいたので、すぐに理解できなくおも倧䞈倫です。

数孊の「=」ずは違うんだなあくらいに知っおおいお䞋さい。

3, 「 1から100たでの敎数の和」の蚈算

さお、少し実践的な問題を解いおみたしょう。

今回の課題は「1から100たでの敎数の和」です。

パッず思い぀くのは「1 + 2 + 3 + ・・・・+ 100」ず蚘述しおShift + Enterを抌すこずです。ですが、この方法はもちろん今回はダメです。

そこで「関数」ずいうものを䜿っおみたいず思いたす。

関数ずは「平均を求める」や「合蚈倀を求める」ずいった数孊でよく行われる操䜜を簡単に蚘述する方法です。

䟋えば「平均を求める」ずいう操䜜は「Mean」ずいう関数によっお簡単に実行できたす。

実際に「からたでの敎数の平均」を「Mean」を䜿甚しお蚈算しおみたしょう。

行目に「a = {1, 2, 3, 4, 5};」ず蚘述しお䞋さい。

これによっお「倉数a」に「からたでの敎数のリスト」が代入されたす。

リストに぀いおは埌で解説したす。

次に行目に「Mean[a]」ず蚘述しおShift + Enterを抌しお䞋さい。

ず出力されれば成功です。

「Mean」によっお「リストa」の䞭身のからたでの敎数の平均が蚈算されたす。

「関数が䟿利なのはわかったけど、たくさん関数を芚えないずMathematicaは䜿えないのか、、、、」

ず思った方もいらっしゃるかず思いたすが、ご安心ください。

実は関数を芚える必芁は党くないのです。

なぜなら関数はググっお䜿甚するものだからです。

筆者自身もググらずに完璧に䜿甚できる関数は10個くらいだず思いたす。

Mathematicaに限ったこずではないですが、プログラミングではググるずいうこずが非垞に重芁です。

あなたが盎面する問題のほずんどは、以前に誰かが盎面しお解決方法を考えおくれおいるものです。

わからないこずがあったらすぐにググるこずを培底しお䞋さい。

基本操䜜そのずにかくググる

先皋の平均を求める関数は、「Mathematica 平均」ずでもググれば簡単に芋぀けられたす。

䞋図䞀番䞊の公匏サむトWolfram蚀語ドキュメントがわかりやすくたずたっおいたす。

公匏サむトをクリックするず、䞋図のように関数の詳しい解説が茉っおいたす。

特にわかりやすいのが、䞋にある「䟋」です。

公匏サむトでは、「䟋」にあるコヌドをクリックするだけでコピヌできる仕様になっおいたす。

ですので、「䟋」の䞭で関係がありそうなコヌドを自分のセルにコピペしお、必芁な箇所だけ倉曎しお䜿甚するのがおすすめです。

さお、関数の説明に話を戻したしょう。Mathematicaの関数を䜿甚する際には以䞋の3぀のルヌルを守る必芁がありたす。

ルヌル関数名の先頭は倧文字にする

ルヌル関数名の埌ろに倧括匧を぀ける

ルヌル倧括匧の䞭に適切な型を入れる

先皋のMean[a]がこの぀のルヌルを守っおいるこずを確認したしょう。

ルヌルずルヌルに埓っお、「Mean」の先頭の文字は確かに倧文字になっおおり、Meanの埌ろには倧括匧が぀いおいたす。

ここで、ルヌルの「適切な型」ずは䜕だろうずいう疑問にお答えしたす。

Mathematicaでは倉数を型ずしお区別しおいたす。

初心者が芚えおおくべき型を以䞋に挙げたす。

敎数型小数を扱わない数字は敎数型です。負の数も含みたす。四則挔算できたす。

䟋1、11、-など

小数型小数点以䞋たで扱うものは小数型です。四則挔算できたす。

䟋1.5、 1/3、πなど

文字列型文字の列を文字列型ず蚀いたす。ダブルクオヌテヌションで挟むこずで文字列型に倉換できたす。文字列型は数字ではないので四則挔算はできたせん。

䟋 ”abc”、”11″、”+”など

リスト型䞭括匧の䞭に数字や文字列をカンマで区切っお矅列したものはリスト型です。Mathematicaではリストをいかに操䜜するかが重芁です。リストの䞭身を芁玠ず呌びたす。䞋の最埌の䟋のようにリストの䞭にリストを入れるこずも可胜です。

䟋{1,2,3}、{“1”, “2”, “a”}、{{1, 2, 3}, {3, 4, 5}, {6, 7, 8}}など

ブヌル型TrueずFalseの぀しかないです。䞀芋䜿いにくそうですが、䞍等匏「1 > 0」が「True」を出力するなど、実は䜿う堎面は倚々ありたす。

䟋True、False

他にもいろいろな型がありたすが、䞊の぀を意識しお䜿い分けるだけで数倀解析やシミュレヌションたで実行可胜です。

では、関数「Mean」の適切な型ずは䜕でしょうか

先皋のググった結果をよく芋るず、䞋蚘のように「list」= リスト型ず曞いおありたすね。

そしお「a」は「{1, 2, 3, 4, 5}」のリスト型でした。

したがっおルヌルも守られおいるこずがわかりたした。

ちなみに倧括匧の䞭身を匕数ひきすうず呌びたす。

よく䜿う専門甚語ですので芚えおおいお䞋さい。

さお前眮きが長くなりたしたが、いよいよ「1から100たでの敎数の和」を蚈算しおみたいず思いたす。

今たでの話の流れから、おそらく以䞋の2぀のステップで蚈算できそうですよね。

ステップ1から100たでの数字のリストを䜜る

ステップリストの䞭身を合蚈する

それぞれの関数をググっおみたしょう。

ステップにおいおは、筆者が「Mathematica 等差数列」ず怜玢したずころ「Table」ずいう関数を発芋したした。

「Mathematica Table」ずググり盎しお、公匏サむトに行っお䟋を芋るず以䞋のコヌドが䜿えそうでした。

このコヌドの「i^2」の郚分を「i」にしお、「10」を「100」に倉曎すれば良さそうですね。

実際に確認しおみたずころ、䞋図のように確かに「からたでの敎数のリスト」を生成できおいたした。

次に、ステップの「リストの䞭身を合蚈する関数」を調べたしょう。

筆者は「Mathematica 合蚈」ずググりたした。

するず「Total」ずいう関数を芋぀けたした。

「Total」は匕数であるリストの合蚈を返す関数です。

よっお、先皋の「からたでの敎数のリスト」を「Total」の匕数にすれば「からたでの敎数の合蚈」を蚈算できるはず。

結果、䞋図のように答えが5050ずいうこずがわかりたした。

別の曞き方ずしお、䞋図のように「a」を䜿甚しない曞き方もありたす。

たたググっおいる過皋で「Sum」ずいう関数を芋぀けたした。この関数を䜿甚するず䞋図のように蚈算できたす。

このように色々な曞き方がありたすが、正盎どれでもいいず思いたす。

数倀解析やシミュレヌションではコヌドが短いため、蚈算の速さはそれほど重芁ではない堎合が倚いです。

ずにかく初心者のうちは、コヌドが長くなろうが汚かろうがググっお自分で曞けるスキルを身に぀けるこずが重芁です。

たくさんコヌドを曞いおいく過皋で、速くお綺麗なコヌドが自然ず曞けるようになりたす。

長くなりたしたが第回はここで終了ずしたす。お疲れ様でした

第回は「For構文」ず呌ばれる繰り返し凊理を䜿っお問題を解いおいきたいず思いたす。