2
1. 数式処理言語Mathematica入門
1.1 はじめに
1.2 数式の入力と計算
1.3 計算結果の可視化
1.4 記号処理と数値計算(数値近似と精度指定)
3
4
Mathematicaを勉強する理由
• 数式処理とは?
– 記号を含む数式の代数的な展開や操作⇒記号計算
– 電卓のように計算するもの ⇒数値計算
– 例としては,微積分がわかりやすい
• 記号処理と数値計算
– 強力な可視化(visualization)機能をもった,
計算の道具,プログラミング言語として...
– 単に計算の道具,プログラミング言語として,
Mathematicaを勉強するだけでなく,
記号処理と数値計算のそれぞれの得失を
理解して欲しい
5
Mathematicaの起動と終了
アイコンをダブル・クリック
Windows
[ファイル]メニューから
[終了]を選択
書き込み可能な
Mathematicaノートブックを
ダブル・クリック
Quitコマンド
mathコマンド
UNIX
終了
起動
注意:起動には少し時間がかかる
Mathematica.exe
6
Mathematicaの画面
ノートブック
パレット
7
授業用にノートブックの字を大きくする
• [編集]メニュー
⇒[環境設定]
⇒ [書式設定]
⇒ [フォント設定]
⇒ [サイズ]
8
参考書(1)
10分間チュートリアル
(Mathematica4.2に付属)
0
はやわかりMathematica(第二版)
Mathematica
その無限の可能性・基礎編
Mathematicaによる工科系数学
書名
共立出版
実教出版
共立出版
出版社
2000
榊原進:著
3
2001
小島,川瀬,松本,武沢,
大橋:共著
2
1996
ロバートソン:著
(下地・永田・菱田:共訳)
1
出版年
著訳者名
今回の内容は,文献[1]と[2]に負うところが多い
1994
近代科学社
Mathematicaプログラミング
R.J. ゲイロード,他:共著
(榊原進:訳)
4
2002
ピアソンエデュ
ケーション
理工系の教養としての情報科学
―Mathematicaによる入門(新装版)
R. E.. メーダー:著
(時田節:訳)
5
プログラミングMATHEMATICA
―バージョン3&4対応
書名
ピアソンエデュ
ケーション
出版社
1999
R. E.. メーダー:著
(時田節:訳)
6
出版年
著訳者名
9
参考書(2)
〈基礎プログラム編〉
〈グラフィックス編〉
〈数学編〉
1995
森北出版
例題で学ぶMathematica
白石修二
7
1996
8
書名
出版社
2000
9
出版年
著訳者名
Mathematica関連の和書は(絶版書も含めて)約100冊出版されている
1999
牧野書店
Mathematicaで楽しむ数理科学
山田 修司
10
書名
出版社
出版年
著訳者名
数学・物理・複雑系,電気工学,画像処理,金融工学など,
個々の応用分野向けの書籍も多数出版されている
10
文字表記上の注意(1)
中括弧
角括弧
丸括弧
{ と }
[ と ]
( と )
小文字で始まる
大文字で始まる
{1, 2, 3}
リスト
(1 + 2) * 100
式の中の括弧,
優先順位の制御
括弧
Sin[0]
Cos[Pi]
関数の引数
f[x_] := x / (x^2 + 1)
f[2]
利用者定義関数
Sin[0]
組み込み関数
大文字と
小文字の
区別
例
関数
演算
文献[1]より
11
文字表記上の注意(2)
方程式や,右辺と左辺が等しいことを判定する
際につかう,数学で使う等号
==
等値性判定
参照時に評価する.内容の変化する変数が使わ
れている関数の定義などに使われる.
:=
遅延代入(遅延定義)
Set[〈左辺〉, 〈右辺〉]
Equal[〈左辺〉, 〈右辺〉]
SetDelayed[〈左辺〉, 〈右辺〉]
右辺の内容を左辺に代入する,普通の代入
=
代入(即時定義)
例
関数
演算
文献[2]より
12
参考:遅延代入(遅延定義)
• a=Table[Ramdom[], {3}]
• b:=Table[Ramdom[], {3}]
文献[2]より
呼ぶたびに値が異なる
13
オンライン・ヘルプ(1)
?? Factor
?? 〈関数名〉
? Factor
? 〈関数名〉
関数のヘルプ
例
操作
機能
Factor
@
poly
D
は,整数について多項式を因数分解する.
Factor
@
poly,
Modulus
- >
p
D
は,素数
p
を法として多項式を因数分解する.
Factor
@
poly, Extension
- >
8
a1, a2, ...
<
D
は,代数的数
ai
の有理的組合せからなる係数を使い,多項式を因数分解„
する.
詳細
Attributes
@
Factor
D
=
8
Listable, Protected
<
Options
@
Factor
D
=
8
Extension
®
None,
GaussianIntegers
®
False, Modulus
®
0, Trig
®
False
<
?
14
オンライン・ヘルプ(2)
[ヘルプ]メニューで[ヘルプ]項目を選択する
ヘルプ・ブラウザ
操作
機能
15
16
式の入力
(3 + 5)^2
式を入力したらshift-Return
Windows
(3 + 5)^2
式を入力したらReturn
UNIX
例
操作
Return
shift-Return
※^ はべき乗
ノートブック
shift-Return
文献[1]より
17
式の実行(評価)
Expand[(x+y)^2]
⇒ x
2+ 2 x y +y
2数式処理(数式の変形…
簡約化や展開,因数分解)
(3 + 5)^2
⇒ 64
数値計算
記号の含まれて
いない式
x=3; y=4; (x+y)^2
⇒ 49
記号に値が
代入されると計算
変数への代入
(x+y)^2
⇒ (x+y)
2式の入力(入力するだけ
で,計算はしない)
記号の含まれて
いる式
例
shift-Return
shift-Return
shift-Return
shift-Return
電卓のように使える
•数値計算
•数式処理(記号計算,記号処理)
18
以前に入力した式(計算結果)の参照
In[1]:= (x+y)^2
Out[1]= (x+y)
2In[2]:= x=3;
In[3]:= y=4;
In[4]:= %1
out[4]= 49
Out[3]の結果が参照される
%3
数式番号での参照
%%
二つ前の式の参照
(x+y)^2
Expand[%]
%
直前の式の参照
例
記号
演算
;をつけると出力を表示しない
19
基本的な演算子
x ^ 3
^
べき乗
x * y
*
x / y
/
除算
x y
空白
乗算
x – y
–
減算
x + y
+
加算
例
関数
演算
•(x+y)^2
文献[1]より
20
数式の操作(展開と因数分解)
Simplify[〈式〉]
簡約化
% - 4 x y
Factor[%]
Forctor[〈式〉]
因数分解
Expand[%]
Expand[〈式〉]
展開
例
関数
演算
•Expand[%]
•% - 4 x y
•Factor[%]
Expand[%]
Factor[%]
因数分解
展開
文献[1]より
21
関数の定義
X_
引数
f[x_] := x / (x^2 + 1)
:=
式の定義
例
関数
演算
•f[x_] := x / (x^2 + 1)
文献[1]より
22
関数の微分
D[f[x], x]
D[〈式〉, 〈変数〉]
(偏)微分
例
関数
演算
•D[f[x], x]
文献[1]より
23
積分と数値計算(1)
Integrate[f[x], {x, 0, 4}]
Integrate[〈式〉,〈積分区間〉]
定積分
Integrate[f[x], x]
Integrate[〈式〉,〈変数〉]
不定積分
例
関数
演算
•Integrate[f[x], x]
•Integrate[f[x], {x, 0, 4}]
文献[1]より
24
積分と数値計算(2)
(※実行時間が速い、誤差は心配)
N[%%]
N[〈式〉] (※ 〈式〉は積分に限らない)
数値評価
NIntegrate[f[x], {x, 0, 4}]
NIntegrate[〈式〉,〈積分区間〉]
数値積分
例
関数
演算
•NIntegrate[f[x], {x, 0, 4}]
•N[%%]
Integrate[〈式〉,〈積分区間〉]
Integrate[f[x], {x, 0, 4}]
文献[1]より
25
基本入力パレットからの数式入力
• パレット内のボタンを押して,
プレースホルダーを埋める
•
Tabキーでプレースホルダー
の移動
•
矢印キーも使える
26
27
可視化:2次元グラフィックス
( ※Pi は π を表す定数)
Plot[Cos[x], {x, Pi/2, 5 Pi/2}]
Plot[Sin[x], {x, 0, 2 Pi}]
Plot[〈式〉,〈区間〉]
2次元グラフ
例
関数
演算
•Plot[Sin[x], {x, 0, 2 Pi}]
•Plot[Cos[x], {x, Pi/2, 5 Pi/2}]
28
可視化:2次元グラフィックス
Show[%11, %12]
Show[〈式〉, 〈式〉,...]
計算済みの結果表示
例
関数
演算
•Show[%11, %12]
文献[1]より
29
可視化:グラフのオプション
Show[atanplot, Axes -> False,
Boxed -> False]
Axesオプション
Boxedオプション
軸や箱の消去
Show[atanplot, ViewPoint -> {2.8, 0, 2}]
ViewPointオプション
視点の指定
atanplot = Plot3D[1/(1 – ArcTan[x y]), {x, 0, 4},
{y, 0, 4}, PlotPoints -> 35]
例
関数
演算
0 1 2 3 40 1 2 3 4 -10 -5 0 5 10 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 -10 -5 0 5 10 -10 -5 0 5 10atanplot = Plot3D[1/(1 - ArcTan[x y]), {x, 0, 4}, {y, 0, 4},
PlotPoints -> 35]
30
可視化:3次元グラフィックス
Show[ContourGraphics[%15]]
ContourGraphics[〈式〉]
等高線表示
Show[DensityGraphics[%14]]
DensityGraphics[〈式〉]
密度をプロット
デフォールト値は15×15
PlotPointsオプション
サンプル点の
個数を指定
Plot3D[Sin[y/2], {x, 0, 4 Pi}, {y, 0, 4 Pi},
PlotPoints -> 30]
Plot3D[Cos[x] Sin[y], {x, 0, 4 Pi}, {y, 0, 4 Pi},
PlotPoints -> 30]
Plot3D[〈式〉,
〈変数の範囲〉,...,
〈オプション〉,...]
3次元グラフ
例
関数
演算
31
3次元グラフィックス:例
• Plot3D[Cos[x] Sin[y], {x, 0, 4 Pi}, {y, 0, 4 Pi},
PlotPoints -> 30]
32
3次元グラフィックス:密度グラフと等高線グラフ
• Show[DensityGraphics[%14]]
• Show[ContourGraphics[%15]]
33
3次元グラフ:複数のグラフを同時表示
• Plot3D[Sin[y/2], {x, 0, 4 Pi}, {y, 0, 4 Pi}, PlotPoints -> 30]
• Show[%14, %17]
34
媒介変数表示:2次元グラフ(1)
• ParametricPlot[{Sin[2 t], Cos[3 t]}, {t, 0, 2 Pi}]
35
媒介変数表示:2次元グラフ(2)
文献[2]より
ParametricPlot[
{Sin[4 t], Cos[3 t]},
{t, 0, 2 Pi},
AspectRatio -> Automatic]
36
媒介変数表示:3次元グラフ
文献[2]より
ParametricPlot3D[
{(2 - s) Cos[t], (2 - s) Sin[t], s},
{s, 0, 2}, {t, 0, 2π}]
37
グラフパラメータ:グラフの色
文献[2]より
Plot[{x, x^2}, {x, -1, 1},
AspectRatio -> Automatic,
PlotRange -> {-1, 1},
PlotStyle ->
{ RGBColor[0, 1, 0],
RGBColor[1, 0, 0] }]
38
グラフパラメータ:点線
文献[2]より
Plot[x^Sin[x], {x, 0, 10},
PlotStyle ->
{Thickness[0.01],
Dashing[{0.05, 0.03}]}]
39
グラフパラメータ:SurfaceGraphics
Plot3D[Sin[x
2
+ y
2
],
{x, -π, π},
{y, -π, π},
Mesh -> False,
PlotPoints -> 50,
Axes -> False,
Boxed -> False]
文献[2]より
40
1.4 記号処理と数値計算
(数値近似と精度指定)
41
式の実行(評価)
Expand[(x+y)^2]
⇒ x
2+ 2 x y +y
2数式処理(数式の変形…
簡約化や展開,因数分解)
(3 + 5)^2
⇒ 64
数値計算
記号の含まれて
いない式
x=3; y=4; (x+y)^2
⇒ 49
記号に値が
代入されると計算
変数への代入
(x+y)^2
⇒ (x+y)
2式の入力(入力するだけ
で,計算はしない)
記号の含まれて
いる式
例
shift-Return
shift-Return
shift-Return
shift-Return
電卓のように使える
•数値計算
•数式処理(記号計算,記号処理)
42
記号処理と数値計算(数値近似と精度指定)
• 19^50
• 19. ^50
小数点を付けると
数値近似
長精度数値計算
文献[0]より
43
記号処理と数値計算(数値近似と精度指定)
• 125!
• N[%]
数値近似
長精度数値計算
文献[0]より
44