|
1.4.5 発展:式の変形
複雑な代数式はいろいろな形で表すことができる. Mathematicaには数式を1つの形から別の形に変形するための関数がいろいろ用意されている.
普通の計算では, Expand,Factor, Simplifyの一般的な機能で十分事足りるが,有理式においては他の関数を使った方がより効果的に簡約できる場合がある.

代数式の変換関数
いろいろな形に書き換えることが可能な有理式を入力する.
In[1]:= e = (x - 1)^2 (2 + x) / ((1 + x) (x - 3)^2)
Out[1]= 
Expandは,分子だけを展開する.分母は因数分解された形のまま残される.
In[2]:= Expand[e]
Out[2]= 
ExpandAllは,分母を含むすべての項を展開する.
In[3]:= ExpandAll[e]
Out[3]= 
Togetherは,共通分母ですべての項をまとめる.
In[4]:= Together[%]
Out[4]= 
Apartは,式を簡単な分母を持つ部分分数にする.
In[5]:= Apart[%]
Out[5]= 
Factorはすべての項を因数分解する.この場合,もとの形の式が得られる.
In[6]:= Factor[%]
Out[6]= 
Simplifyでは ,これが式の取り得る最も簡単な形である.
In[7]:= Simplify[e]
Out[7]= 
最終的にほしい形に式を持っていくのはある種,芸のようなものである.多くの場合,実験してみるというのが最良の方法である.ほしい形になるまでいろいろ変形を試してみることだ.これを行うのにパレットを利用すると便利である.
式の変数が1つだけならば,式を項の和や積の形やその他の形で表すことができる.式に変数が複数ある場合は,式を表せる形はさらに多くなる.そのようなときは,例えば,主要な変数を選んでおき,その変数を中心に式の項をグループ化することが可能である.

多変数の式の整理
2変数の代数式を入力する.
In[8]:= v = Expand[(3 + 2 x)^2 (x + 2 y)^2]
Out[8]= 
vの項を,同じ xのベキ乗項のグループにまとめ直す.
In[9]:= Collect[v, x]
Out[9]= 
yのベキ乗項を同様にしてまとめる.
In[10]:= Collect[v, y]
Out[10]= 
yに依存しない部分を分離する.
In[11]:= FactorTerms[v, y]
Out[11]= 
以上の例から分かるように,多項式や有理式だけに限っても,非常に多くの形で1つの式を表すことができる.さらに複雑な式の場合,例えば,高等数学の関数を使う場合,可能な形はさらに広がる.しかし,すべての可能な式に対応できるように,限りなく Mathematicaの変換関数を増やすことは不可能である.そこで, Mathematicaでは,ユーザ自身で必要な特殊変換規則を定義できるようにしてある.多くの Mathematicaパッケージでは,この形式による変換規則が使われる.定義の手順に関しては 2.5の説明を参照してほしい.
上記の組込み関数の他にも,式の変形のためにさらにいくつかの組込み関数が提供されている.

式の変形に使う特殊関数
三角関数は,すべての関数が引数 xを持つように展開される.
In[12]:= TrigExpand[Tan[x] Cos[2x]]
Out[12]= 
三角関数の恒等式が使われ,因数分解された形の式が生成される.
In[13]:= TrigFactor[%]
Out[13]= 
整数倍の角度を使った式に変形される.
In[14]:= TrigReduce[%]
Out[14]= 
正弦関数は, xと yがともに実数であるとの前提の上に展開される.
In[15]:= ComplexExpand[ Sin[x + I y] ]
Out[15]= 
こうすると, xと yが複素数であっても展開してくれる.
In[16]:= ComplexExpand[ Sin[x + I y], {x, y} ]
Out[16]= 
Expandや Factor等の関数が返してくる変形は,式中の変数がどんな値を取ろうが常に正しい.しかし,場合によっては,変数が特定の値を取るときだけに有効となるような式の変形が行えると便利である.このような変形を得るための関数の1つに PowerExpandがある.
指数が整数でない積のベキ乗は,自動的には展開されない.
In[17]:= Sqrt[x y]
Out[17]= 
PowerExpandを使えば展開される.
In[18]:= PowerExpand[%]
Out[18]= 
|