数式処理入門(平賀 譲)



計算機上で微分・積分の計算をしたり、関数のグラフを描いたりする
「数式処理ソフト」として、dream 上には matlab, mathematica などがあります。
このうち簡単なほうの matlab の「ごく簡単な」使い方の説明をします。
	# 「ごく簡単」なので、これだけでは使いこなすのは難しいかもしれない。

matlab には「数値モード」と「数式モード」の2種類があります。
数値モードというのは具体的な数値に対する計算やグラフ作成を行うもので
あるのに対し、数式モードは文字式のままでの計算を行うものです。
数式モードでは式の微分、積分、数列や関数の極限などの計算が行えます。
	# 正確に言えば、数式モードは matlab そのものの機能ではなく、
	# そこで組み込まれて使われる maple という別の数式処理ソフト
	# の機能が使われている。

以下は数式モードの解説です。


* 変数の宣言
  最初に
	>> syms x y
  と打つ。これは以下で x,y を変数に使うという宣言である。
  宣言は、必要な変数について、matlab に入った最初に1回だけ行えばよい。

  注意:a, b など定数として使う記号と x, y など変数として使う記号は
  区別されないので、すべてを変数宣言する必要がある。

* 関数の定義
	>> y = x^2 + 2*x;
  のように、関数の定義式を打つ。
  これは「x 2乗足す 2 倍の x」という関数を表している。
  なお、最後の ";"(セミコロン)を省略すると、
  入力された式が表示される。
	>> y = x^2 + 2*x

	y =

	x^2 + 2*x

  となる。また単に式を書くと:
	x^x

	ans =

	x^x

  のように表示される。ans は特別の変数で、直前の式の値を値とする。
  この直後でなら、
	>> diff(ans)
  のように式の中で使うことができる。
  この結果、ans の値は新しい式(上の diff(ans) の結果)になることに注意。
  結果を保存しておくには、
	y = ans
  のように別の変数に代入しておけばよい。

  なお実際の表示は上のように行間が空くが、以下ではスペースの節約のため、
  単に
	ans = x^x
  のように記していく。

  関数式には次の記号類が使える。
	+	足し算
	-	引き算
	*	掛け算
	/	割り算
	^	べき乗。例えば (x+1)^2 は「x+1 の 2 乗」、2^x は「2 の x 乗」
	exp(X)	「e の X 乗」:X は任意の式。e^x ではうまくいかないので注意。
	sin(X)	sin 関数。sin x ではなく、sin(x) のようにカッコが必要なのに
		注意(以下同様)。
	cos(X)	cos 関数
	tan(X)	tan 関数
	log(X)	log 関数
	その他

  カッコは普通の数式と同様に使えるが、()(丸カッコ)だけで、
  {}, [] などは使えない。


* 関数のグラフ
  上で定義した関数について、
	>> ezplot(y)
  とすればグラフが表示される。
  ただし、x の範囲は -2π から 2π (-6.28... -> 6.28...) で、
  y 軸方向の縮尺は適当に設定される。
  例えば x を -5 から 10 の範囲で表示するには
	>> ezplot(y, -5, 10)
  とすればよい。
  y 軸方向の範囲指定はできない(私の知る限り)。


* 関数の微分
  上で定義した関数について、
	>> diff(y)
  とすれば微分した結果の式が表示される。
  導関数のグラフを描くには、
	>> ezplot(diff(y))
  とすればよい。
	# このように、ezplot の中には任意の式が書ける。
	# また diff のところにも式を書いてよい。

  微分する変数を明示する場合には、
	>> diff(y,x)
  のように変数名を2番目に書く。
  たとえば
	>> syms x, y, a;
	y = a*x^2;

	>> diff(y)	-> 答えは 2*a*x
	>> diff(y,x)	-> 答えは 2*a*x (上と同じ)
	>> diff(y,a)	-> 答えは x^2 (a で微分し、x は定数と見なした)


* 関数の積分
	>> int(y)
  とすれば y の不定積分が示される。積分変数を明示する場合には
	>> int(y,x)
  とする。定積分を行う、たとえば 0 から 1 までの定積分は:
	>> int(y,x,0,1)
  のように後ろに下端・上端の順で記す。これは x を省いて
	>> int(y,0,1)
  でもよい。


* 関数の極限
	>> limit(y)
  		x->0 での y の極限値
	>> limit(y, a)
  		x->a での y の極限値
	>> limit(y, inf)
  		x->∞ での y の極限値
  など。

* 例
	>> syms x y		# これは最初の1回だけ宣言すればよい。
  	>> y = sin(x);
	>> diff(y)
	ans = cos(x)
		sin(x) を微分すると cos(x) になるという意味。
	>> ezplot(y)
		これで y=sin(x) の グラフが表示される。
	>> int(y)
	ans = -cos(x)
		sin(x) を不定積分すると -cos(x) になるという意味。
	>> int(y, 0, pi/2)
	ans = 1
		sin(x) の 0 から π までの定積分
		pi はπを指す。

	>> y = exp(-x^2);
	>> ezplot(y)
		これは偏差値などで使われる、いわゆる「誤差曲線」である。
		これも単に ezplot(exp(-x^2)); と打つだけでもよい。
	>> diff(y)
	ans = -2*x*exp(-x^2)
		y を微分した結果。

	>> y = x^x;
	>> diff(y)
		これでレポート問題の解答が表示される。
	>> ezplot(y, 0. 1)
		x が [0,1] の範囲でのグラフを表示。
	>> int(y)
	ans = int(x^x,x)
		x^x は初等関数の範囲では不定積分できない。
		そういった場合、上のように何も計算されず、
		入力式(と等価な式)が表示される。

	>> limit(sin(x)/x)
	ans = 1
		sin(x)/x -> 1 (x->0)
	>> limit(1/x)

	ans = NaN
		NaN は not a number の意味。
		x->0 のとき 1/x は発散するのでこういう表示になる。

式は結果だけが表示されるし、グラフには座標軸もなく、
また極値、変曲点、漸近線などもわからない。


なお、簡単な使い方の説明は、
	>> helpwin
とすれば説明ウィンドウが表示されるので、それで必要な項目を
マウスで選択・ダブルクリックすればよい。

あるいは
	>> help <項目名、関数名など>
で、その項目、関数等の説明が画面に表示される。
この場合、1画面分ごとに表示を停止させるには、あらかじめ
	>> more on;
としておく。
ただし、diff や int の説明は単に help diff などでなく、
	>> help sym/diff
	>> help sym/int
などとする(数値モードにも diff, int があるため、それとの区別が必要)。
また
	>> demo
とすれば、matlab の基本機能のデモが起動される。
	# ゲームなどもある。

symbolic mode の初歩(グラフは ezplot)


2001年06月14日 21時12分46秒