数式処理


微積分や方程式の求解などさまざまな計算が可能です. たとえば Integrate[expr, x] は式 expr を変数 x の 元で積分し,D[expr, x] は偏微分します. Simplify[expr] は式 expr を簡単化した結果を返します.

In[7]:=
Integrate[ x^2 Sin[x]^2, x ]
Out[7]=
   3                                  2
4 x  - 6 x Cos[2 x] + 3 Sin[2 x] - 6 x  Sin[2 x]
------------------------------------------------
                       24
In[8]:=
D[%, x]			(* 上の結果の偏微分 *)
Out[8]=
    2       2
12 x  - 12 x  Cos[2 x]
----------------------
          24
In[9]:=
Simplify[%]		(* 上の結果の簡単化 *)
Out[9]=
 2       2
x  Sin[x]
計算した結果は = により変数に代入することができます. 変数には数値,数式,グラフィックなど Mathematica で取り扱える 任意のオブジェクトを代入できます. 変数の値は =. により消去できます.

In[10]:=
exp1 = Expand[(a+b)^4]
Out[10]=
 4      3        2  2        3    4
a  + 4 a  b + 6 a  b  + 4 a b  + b
In[11]:=
Factor[exp1]		(* exp1の因数分解 *)
Out[11]=
       4
(a + b)
関数を定義する場合は := を使います. 左辺に現れる変数には,_ (下線)を付けなければなりません.

In[12]:=
f[x_] := x^3-7x^2+3a x
In[13]:=
f[1]
Out[13]=
-6 + 3 a
関数Solveにより方程式の解を求めることができます. 同等関係を表すには = ではなく == を使います.

In[14]:=
sol = Solve[ f[x]==0, x ]	(* f(x)=0 の解をsolに代入 *)
Out[14]=
                 7 - Sqrt[49 - 12 a]
{{x -> 0}, {x -> -------------------}, 
                          2
 
        7 + Sqrt[49 - 12 a]
  {x -> -------------------}}
                 2
3つの解が求められています. 解全体が変数solに代入されているとき, n番目の解を式exprに適用した結果を求めるには,expr /. sol[[n]] と入力します.

In[15]:=
Expand[ x^2 /. sol[[2]] ]
Out[15]=
49   7 Sqrt[49 - 12 a]
-- - ----------------- - 3 a
2            2
In[16]:=
% /. a->2		(* さらにaを2とおく *)
Out[16]=
1
以下のようにして,連立方程式もSolveで解くことができます. 微分方程式にはDSolveを使います. 解析的に解を求められない場合は,NSolveNDSolveにより 数値的に解を求めることができます.

In[17]:=
Solve[ {x^3+y^3==1, x+y==2}, {x,y} ]
Out[17]=
              I          12 + 2 I Sqrt[6]
{{x -> 1 - -------, y -> ----------------}, 
           Sqrt[6]              12
 
               I          12 - 2 I Sqrt[6]
  {x -> 1 + -------, y -> ----------------}}
            Sqrt[6]              12
In[18]:=
DSolve[ y''[x]-k y[x]==1, y[x], x ]
Out[18]=
            1       C[1]       Sqrt[k] x
{{y[x] -> -(-) + ---------- + E          C[2]}}
            k     Sqrt[k] x
                 E
DSolveの結果中,C[1], C[2]は積分定数です.

ラプラス変換やフーリエ変換は組込関数としては用意されていませんが, 標準で添付されているパケージを読み込むことで利用できます. パッケージを読み込むには以下のようにNeedsを用います (あるいは Function Browser から読み込むこともできます).

In[19]:=
Needs["Calculus`LaplaceTransform`"]
Calculus`LaplaceTransform`がラプラス変換のためのパッケージの名前です.
` はシングル・クォーテンションではなく バック・クォーテンションですので注意して下さい.

In[20]:=
LaplaceTransform[ t^2 E^(a t), t, s ]
Out[20]=
    2
---------
        3
(-a + s)

最初に戻る 前へ 次へ
Dept. CS / Faculty of Eng. / Kobe Univ. / Naoyuki Tamura / tamura@kobe-u.ac.jp