忘却の微分方程式(14) 変数と関数の入力、MathematicaとMaxima

Joseph Halfmoon

そのうち微分方程式など苦にならなくなるかと儚い期待をいだきつつ勉強させていただいておりますのは、Raspberry Piを利用したWolfram言語プロジェクト により無償でMathematicaが使えるお陰です。とはいえ、今のところ不届きにもMaximaでも似たことをやって比べておる、と。急急如律令!

※「忘却の微分方程式」投稿順 index はこちら

前回も書きましたが、学生でも無いのに以下のチュートリアルにお世話になっております。すみません。

MathematicaとWolfram言語 数学を学ぶ学生のための入門チュートリアル 変数と関数

今回、一番戸惑ったのは、Mathematicaが「スペース(空白文字)」を掛け算とみなしてくれることです。まあね、数学で2xとか書いたら2倍のxの意味だよね、と。流石 Mathematica は数学通りの記法で書けるのであります。しかし、半世紀近くも * (アスタリスク)記号を掛け算だと思って過ごしてきた年寄りはなれませぬ(まあ、書いてもいいんだけどね。)

「スペース」は掛け算、に戸惑う

Mathematicaで、頭文字を英字にすれば変数を作れます。しかし、頭文字を数字にしてその後に英字を書くと、数学です。数字掛ける変数とぞなりにけり。

こんな感じ。wolfVF002

流石に、複数文字をスペース抜きでつなげると1個の変数名と認識されます。掛け算の度に * を書くという醜さを嫌いな人はMathematica一択かと思います。

一方、Maximaでスペース使ってみると、以下のように怒られました。ちゃんと「オペレータ」としての * を書かねば。この方が慣れているのだよね。遥かな昔、学校でFortran習って以来の習慣だから(Fortranのべき乗は ** だけれども。)

maxVF002

変数と代入

Mathematicaは、変数に代入するのに = が使えます。ここは普通のプログラム的な。よって、xに数値を代入した後、x(スペース)xなどとすれば、その数値の二乗が返ってまいります。xと数値との束縛関係を解除するのは Clear、例によって引数は角カッコで囲むのであります。

wolfV002一方、Maximaはというと、= 記号はあくまで「イコール」という関係演算子?代入はしてくれないです。値を代入する場合には、: (コロン)を使用です。また、変数と数値との束縛関係を「殺す」には kill()関数を使用。こちらは丸カッコです。

maxV002

式への代入、評価、どちらもクセが強いのう

「式 x * x の x に 10 を代入したらいくらになる?」とMathematicaに問いかけるときは以下のような感じ。式を記した後に, /. (スラッシュとピリオド)を押すとことさらなフォントに変換してくれます。そして x と打ってから -> (マイナスと「大なり」)打つと今度は右矢印に変換してくれます、そこでおもむろに値を入力。ご回答いただけました。

wolfEV002同じことをMaximaでやると、こんな感じでしょうか? ev()関数の第一引数に式を与え、第2引数以降に評価の条件を加えるとお答えいただけます。しかし、実はコマンドプロンプトに入力している状態すなわち、ev()関数の引数そのもの的な感じ。ev(など書かなくても良いのかも。

maxEV002なお、, (カンマ)で接続して評価した場合、そのev関数の中だけの仮初の関係でした。グローバル変数?としてのxに10が代入されるわけではありませぬ。そこはコマンドプロンプト直後に x:10と代入してしまうのとは挙動が異なります。

関数の定義、似ているっちゃ似ているのだけれど、「仮引数」の記法の違いに何か深い闇を感じる。知らんけど。

関数の定義、アンダーバーをつけるかつけないか、それが問題だ

Mathematicaは「仮引数」の変数名の後に _ (アンダーバー)を添付? 勿論角カッコ。関数定義のときは := (パスカル式代入記号?) を利用。数値を代入すれば評価されて返ってくるし、文字変数を使った式を代入しても展開されました。

wolfFunc002Maximaの関数定義も似ています。けれど、仮引き数にアンダーバー無です。同じように定義したつもりなのに、評価された後のMathematicaとMaximaの項の表示順序が逆。このあたり、似ているようで違いを感じるのでありますが。

maxFunc002進み方微妙。微分方程式まで先は長いですな。

忘却の微分方程式(13) 分数、小数の入力、MATHEMATICAとMaxima へ戻る

忘却の微分方程式(15) 因数分解、方程式、MethematicaとMaxima へ進む