mathematica の覚え書き

最終更新  2024.09.27


◆◆ Raspberry Pi ◆◆


インストール

# apt install wolfram-engine

起動

GUI版  $ mathematica
CUI版  $ wolfram

● pi 以外のユーザーで mathematica を使う

root, pi 以外のユーザーが mathematica を起動すると、
アクティベーションを要求してくる。
Activate online というウィンドウが開く。

これを回避するには、

/etc/group

を root 権限で開き、グループ video にユーザー名を
追加する。

video:x:44:pi,user-name

のように書く。一旦ログアウトし、再ログインすると
使えるようになっている。


◆◆ コメント文 ◆◆


(*    *)
式の途中に入れてもよい

◆◆ 変数名 ◆◆


変数名にアンダースコアを使ってはいけない!
アンダースコアが付いた変数は展開されない。

◆◆ 命令の書き方 ◆◆


a = b * c;

のように式の末尾に ; をつけておくと、

Out[1] = 10

のように Out[1] の行を表示しない。

Enter は単なる改行
Shift + Enter で演算や定義を実行

命令をファイルに書いておいて一気に実行する方法
命令ファイルが a.m のとき

$ wolfram < a.m

起動中のとき

In[1]:= << a.m


◆◆ 普通の計算 ◆◆


値を計算

L  = 0.239 * 10^-3
Ca = 0.166 * 10^-6      C は予約語らしい。使えない

w  = 1 / Sqrt[L Ca]
f  = w / 2 / Pi

◆◆ 数式を計算 ◆◆


x = a * b
y = c * d
z = x * y


◆◆ 微分方程式を解く ◆◆


(注意!)

== を使うこと。
= を一度使って y[0] = 1 とやってしまうと、次に == を使ってもだめである。

DSolve[ y'[x] - x y[x] == x, y[x], x]

DSolve[ y''[x] + 3 y'[x] + 2 y[x] == Exp^(2 x ), y[x], x]

Simplify[%]    % は前の結果
Expand[%]

初期値を入れるときは

DSolve[ { y''[x] + 4 y[x] == 0, y'[0] == 1, y[0] == 0}, y[x], x]


◆◆ 積分 ◆◆


不定積分  Integrate[ Exp[x^2], x]
定積分    Integrate[ Exp[x],{x,0,Infinity}]

◆◆ 微分 ◆◆


D[ Log[3 x], x]

◆◆ 関数名 ◆◆


Cos, Sin, Exp, Abs, Sqrt
Re, Im, Conjugate


◆◆ 行列 ◆◆


m = { {1,2,3},{4,5,6},{7,8,9} }

Det[m]
Inverse[m]
Eigenvalues[m]
Eigenvectors[m]

行列の積  m2 = m.m

要素を取り出す  a = m2[[2,1]]

◆◆ 関数定義 ◆◆


定義    func[x_] := Exp[ -x^2]
確認    func[x]

定義    func2[x_] := D[func[x],x]
積分    Integrate[func2[x], {x,0,Infinity}]

クリア  Clear[func]


◆◆ 数値に変換 ◆◆


N[%,10]   10 は桁数

◆◆ 虚数単位 ◆◆


大文字の I

◆◆ 方程式 ◆◆


Solve[ x^2 + ax + 1 == 0, x ]

◆◆ 連立 1 次方程式 ◆◆


3 x + 4 y = a
4 x +   y = b

Solve[ { 3x + 4y , 4x + y} == {a,b},{x,y} ]

◆◆ 式の整理・展開など ◆◆


Wolfram のリファレンス

Expand[ ]   カッコで括っている部分を展開する
ExpandNumerator[  ]  分子だけ
ExpandDenominator[  ]  分母だけ
ExpandAll[  ]  分子分母を完全に展開する

Simplify[ ]
FullSimplify[ ]
Reduce[ ]
FortranForm[ ]

Factor[ ]   因数分解に使うが、分数の中に分数があるのを解消するときにも使う
FactorTerms[poly, {x, y}]

Collect[poly, {x, y}]


◆◆ 変数の表示 ◆◆


プログラム中で変数を表示する方法はよくわからない。
プログラムの実行終了後、プロンプトから変数名を
打ち込む、あるいは Simplify[変数名] と打ち込むと、
変数の内容を表示する。


◆◆ 複素数 ◆◆


虚数単位は I で表す

x = 3 + 4 I
y = a + b I

関数(最初の一文字が大文字なのに注意! 小文字だと動かない)

Re[z]   Im[z]   Abs[z]   Arg[z]   Conjugate[z]

mathematica は変数は複素数とみなすので、
Re[y] は a とはならない。

変数を実数として扱いたい場合

ComplexExpand[ Re[y] ]

と記述する。