• 検索結果がありません。

としてもよいし,* を省略し, その代わりにスペースを空けてもよい. In[5]:= 2 3 Out[5]= 6 数値計算 厳密な代数計算 整数および有理数については, 厳密な計算がなされます. In[6]:= Out[6]= In[7]:= Out[7]= 2^

N/A
N/A
Protected

Academic year: 2021

シェア "としてもよいし,* を省略し, その代わりにスペースを空けてもよい. In[5]:= 2 3 Out[5]= 6 数値計算 厳密な代数計算 整数および有理数については, 厳密な計算がなされます. In[6]:= Out[6]= In[7]:= Out[7]= 2^"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

Mathematica

入門

はじめに

Mathematica は極めて高度かつ有用な機能を有する研究支援統合ソフトウェアです.理工系学生にとって(それど ころか研究者にとっても)非常に便利なツールですから,基本的な操作方法に慣れておくと,いざというときに とても重宝します.

入力方法

!

キーボードからの入力

Mathematica では,数式はすべてキーボードから入力できるようになっています.例えばベキ乗 「2の37乗」 は次のように入力します. 2 ^ 37

この状態で Shift + Return(Shift キーを押しながら Return)と押せば,計算結果を表示してくれます. In[1]:= 2 ^ 37 Out[1]= 137 438 953 472 2 Control ^ 37 として入力することもできます. In[2]:= 237 Out[2]= 137 438 953 472

!

パレットからの入力

メニューから Palettes > BasicInput と選ぶと,様々な数学記号が現れます.この中からまず !! を選び,初めに大きい方の (黒くなっている) ボックスに 2 を入力: 2!

引き続き tab キーで小さい方のボックスに移動して,そこに 37 を入力,その後 Shift + Return と押せば: In[3]:= 237 Out[3]= 137 438 953 472

!

かけ算記号の省略

「2かける3」 を計算するには In[4]:= 2 " 3 Out[4]= 6

(2)

としてもよいし,* を省略し,その代わりにスペースを空けてもよい. In[5]:= 2 3 Out[5]= 6

数値計算

!

厳密な代数計算

整数および有理数については,厳密な計算がなされます. In[6]:= 2 ^ 512 Out[6]= 13 407 807 929 942 597 099 574 024 998 205 846 127 479 365 820 592 393 377 723 561 443 721 764 030 073 546 ! 976 801 874 298 166 903 427 690 031 858 186 486 050 853 753 882 811 946 569 946 433 649 006 084 096 In[7]:= 2 ^ 10! 10^3 Out[7]= 128 125

!

近似計算

厳密な値でなく,小数表示(もしくは近似的な値)が知りたい場合は,関数 N を用います. In[8]:= N"2^10 ! 10^3# Out[8]= 1.024 あるいは,一旦 In[9]:= 2 ^ 10! 10^3 Out[9]= 128 125 と計算しておいて,次のようにしてもよい. In[10]:= N"## Out[10]= 1.024 Tips: ここで用いた % は「すぐ前の結果」 を意味します.同様に,2つ前の結果は %% ,3つ前は %%% など. 同様なことが関数についても当てはまります. In[11]:= Sin"1# Out[11]= Sin!1" これでは具体的数値は得られないので In[12]:= N"Sin"1## Out[12]= 0.841471 とします.さらに正確な値が知りたければ,

(3)

In[13]:= N"Sin"1#, 200# Out[13]= 0.84147098480789650665250232163029899962256306079837106567275170999191040439123966894863! 974354305269585434903790792067429325911892099189888119341032772921240948079195582676660! 699990776401197840878273257 とすれば,200桁まで計算してくれます.

!

複素数

Mathematica では複素数も扱うことができます.虚数単位は I で表します. In[14]:= $1 $ 2 I%^2 Out[14]= "3 # 4 $

記号計算

!

多項式

In[15]:= $a $ b $ c%^5 Out[15]= #a # b # c$5 これを展開したければ,関数 Expand を使います. In[16]:= Expand"## Out[16]= a5# 5 a4b # 10 a3b2# 10 a2b3# 5 a b4# b5# 5 a4c # 20 a3b c # 30 a2b2c # 20 a b3c # 5 b4c # 10 a3c2# 30 a2b c2# 30 a b2c2# 10 b3c2# 10 a2c3# 20 a b c3# 10 b2c3# 5 a c4# 5 b c4# c5 あるいはもちろん In[17]:= Expand"$a $ b $ c%^5# Out[17]= a5# 5 a4b # 10 a3b2# 10 a2b3# 5 a b4# b5# 5 a4c # 20 a3b c # 30 a2b2c # 20 a b3c # 5 b4c # 10 a3c2# 30 a2b c2# 30 a b2c2# 10 b3c2# 10 a2c3# 20 a b c3# 10 b2c3# 5 a c4# 5 b c4# c5 としてもよい.逆に,この式を因数分解するには関数 Factor を用います. In[18]:= Factor"## Out[18]= #a # b # c$5

Tips: 与えられた式を簡単にしたい場合,一般には関数 Simplify あるいは FullSimplify を用います.後者の方が単 純化能力は高いですが,計算時間がかかります. In[19]:= Simplify"### Out[19]= #a # b # c$5 In[20]:= FullSimplify"#### Out[20]= #a # b # c$5

!

方程式

方程式 x3# x2" 3 x # 1 % 0を解くこともできます.

(4)

In[21]:= Solve"x^3 $ x^2 % 3&x $ 1 '' 0, x# Out[21]= %&x & 1', %x & "1 " 2 (, %x & "1 # 2 ((

Tips : 方程式を意味する等号は = ではなく = = (イコールが2つ)を用います.

解が代数的に求まらないような方程式に対しても,関数 FindRoot を用いて数値的な近似解を求めることができま す.例えば方程式 Sin[x] + 1 = x は(下のグラフからも分かるように) x = 2 の近くに解を持ちます.

In[22]:= Plot"&Sin"x# $ 1, x', &x, %Pi, Pi', PlotStyle ( &Red, Blue'#

Out[22]= !3 !2 !1 1 2 3 !3 !2 !1 1 2 3 しかし方程式 Sin[x] + 1 = x の解は代数的には求められません. In[23]:= Solve"Sin"x# $ 1 '' x, x# Solve::tdep" :"本質的に非代数的な方法で解かれる変数が方程式に含まれているようです. #

Out[23]= Solve!1 # Sin!x" ' x, x"

そこで,数値による解を求めてみましょう. In[24]:= FindRoot"Sin"x# $ 1 '' x, &x, 2'# Out[24]= &x & 1.93456'

ここでは,x = 2 から出発して近似数値解を求めています.

!

微分

微分操作は関数 D を用います. In[25]:= D"x^Sin"x#, x#

Out[25]= xSin!x" Cos!x" Log!x" # Sin!x" x

パレット BasicInput を用いて次のように入力し,計算することもできます. In[26]:= )x xSin"x#

Out[26]= xSin!x" Cos!x" Log!x" # Sin!x" x

!

積分

(5)

In[27]:= Integrate"$x^3 % 2&x $ 5% ! $x^3 % 1%^2, x# Out[27]= 1 18 12#"3 # x$ x "1 # x3 # 22 3 ArcTan) 1 # 2 x 3 * " 14 Log!"1 # x" # 7 Log+1 # x # x2, パレット BasicInput を用いて次のように入力し,計算することもできます. In[28]:= ( x3% 2&x $ 5 )x3% 1*2 &* x Out[28]= 1 18 12#"3 # x$ x "1 # x3 # 22 3 ArcTan) 1 # 2 x 3 * " 14 Log!"1 # x" # 7 Log+1 # x # x2,

グラフィクス

様々な関数やデータを視覚化することができます.

! 2 D

グラフィックス

関数 Sin[x] のグラフを描いてみよう.

In[29]:= Plot"Sin"x#, &x, 0, 2&Pi', PlotStyle ( Red#

Out[29]= 1 2 3 4 5 6 !1.0 !0.5 0.5 1.0 この例では, Sin[x] のグラフを区間 [0, 2 Π] で表示しています.Pi は円周率 Π です. ここで,Plot というコマンドがどのようにグラフを生成しているか簡単に説明しておきます.次の計算結果を見 てください.(意味が分からなくても気にしないで! なお,この計算は Mathematica Version 6 で行っていま す.Version 5 以前でこれと同じグラフを描くには,test[[1]][[1]][[3]][[2]][[1]]] の部分を test[[1]][[1]][[1]][[1]] で置き 換えてください.)

In[30]:= test ' Plot"Sin"x#, &x, 0, 2&Pi', DisplayFunction ( Identity#;

Show"Graphics"&Thickness"0.001#,

Map"Line"&&+""1##, 0', +'# &, test""1##""1##""3##""2##""1### '#, Axes ( Automatic # Out[31]= 1 2 3 4 5 6 !1.0 !0.5 0.5 1.0 Plot は,縦の棒の部分での Sin[x] の値を計算して,その結果をつないでグラフを作ります.グラフの曲がってい るところは細かく,直線的なところは荒くサンプリングしています.Mathematica はかなり賢いですね!

(6)

パラメタ表示された曲線も描くことができます.試しにリサジュー図形を描いてみましょう. In[32]:= ParametricPlot"&Cos"3&t#, Sin"5&t#', &t, 0, 2&Pi'#

Out[32]= !1.0 !0.5 0.5 1.0 !1.0 !0.5 0.5 1.0

! 3 D

グラフィックス

関数 (x, y) --> x2"y! "x4% y2# を描くには関数 Plot3D を用います.

In[33]:= Plot3D"x^2 y ! $x^4 $ y^2%, &x, %1, 1', &y, %1, 1'#

Out[33]= !1.0 !0.5 0.0 0.5 1.0 !1.0 !0.5 0.0 0.5 1.0 !0.5 0.0 0.5 しかしこれでは情報が荒すぎて,原点付近での挙動が良く分かりません.そんなときは,関数の値を計算するグ リッド数を大きくします.(ついでに網の目も消してみましょう.)

In[34]:= Plot3D"x^2 y ! $x^4 $ y^2%, &x, %1, 1', &y, %1, 1', PlotPoints ( &120, 120', Mesh ( False# データサイズが大きいので,グラフィクス結果を表示することは(この資料では)やめておきますが,だいぶマ シになったことと思います.マウスでつかんでグルグル廻してみると,もっと様子が分かります.

(7)

In[35]:= ContourPlot"x^2 y ! $x^4 $ y^2%, &x, %1, 1', &y, %1, 1'# Out[35]= !1.0 !0.5 0.0 0.5 1.0 !1.0 !0.5 0.0 0.5 1.0 高いところほど白く,低いところほど暗く表示されています. パラメタ表示された曲線や曲面も描くことができます.試しにアステロイド的球面を描いてみましょう. In[36]:= ParametricPlot3D"&Cos"s#^3 Cos"t#^3, Sin"s#^3 Cos"t#^3, Sin"t#^3',

&s, 0, 2&Pi', &t, 0, 2&Pi', PlotRange ( &&%1, 1', &%1, 1', &%1, 1''#

Out[36]= !1.0 !0.5 0.0 0.5 1.0 !1.0 !0.5 0.0 0.5 1.0 !1.0 !0.5 0.0 0.5 1.0

(8)

リスト

中括弧 { } で囲まれたデータをリストと呼びます.例えば HCl 水溶液の氷点降下の実験データは,平面座標の リストとして次のように与えます.

In[37]:= myList '&&0.627, 0.228', &1.179, 0.434', &1.245, 0.455', &1.474, 0.542',

&2.228, 0.815', &3.526, 1.286', &4.520, 1.644', &6.879, 2.494', &10.633, 3.843''

Out[37]= &&0.627, 0.228', &1.179, 0.434', &1.245, 0.455', &1.474, 0.542',

&2.228, 0.815', &3.526, 1.286', &4.52, 1.644', &6.879, 2.494', &10.633, 3.843''

Tips : Mathematica の組み込み関数はすべて 「大文字」 で始まります.ですから,自分で定数・変数・関数などを 定義する場合は 「小文字」 で始まる名前をつけることをお勧めします.

これをグラフで表示するには次のようにします.

In[38]:= ListPlot"myList, AxesOrigin ( &0, 0', Joined ( True, Mesh ( All,

MeshStyle (&Red, PointSize"Medium#', PlotStyle ( Blue#

Out[38]= 2 4 6 8 10 1 2 3 あるルールに従ってリストを自動生成するには Table という関数を用います.例えば,数列 a(n)=(1+1/n)^n が Napier の数 &=2.71828... に収束する様子を視覚化したい場合には,次のようにします.

In[39]:= napier ' Table"$1 $ 1 ! n%^n, &n, 1, 50'#;

Show"ListPlot"napier, PlotStyle ( Red#, Plot"Exp"1#, &x, 0, 50', PlotStyle ( Blue#, PlotRange ( &2, 2.85', AxesLabel ( &"n", "a$n%"'#

Out[40]= 0 10 20 30 40 50 n 2.2 2.4 2.6 2.8 a$n% 上の例では関数 Table を用いて繰り返し計算を行いましたが,同様なことを,コマンド Do を用いて行うことも可 能です.

In[41]:= Do"$1 $ 1 ! n%^n, &n, 1, 50'#

これを実行しても何も表示してはくれませんが,計算はちゃんと実行してくれています.結果を表示させるに は,次のようにします.(n=50 まで表示すると大変なので,ここでは n=10 までにしておきます.)

(9)

In[42]:= Do"Print"$1 $ 1 ! n%^n#, &n, 1, 10'# 2 9 4 64 27 625 256 7776 3125 117 649 46 656 2 097 152 823 543 43 046 721 16 777 216 1 000 000 000 387 420 489 25 937 424 601 10 000 000 000 Do は次のような使い方もできます. In[43]:= t ' x; Do"t ' n ! $1 $ t%, &n, 1, 5'#; t Out[45]= 5 1 # 4 1# 3 1# 2 1#1 1#x

行列

上で述べたリストの多次元版を考えることにより,行列も表現できます.例えば In[46]:= Table"a^i b^j, &i, 1, 3', &j, 1, 2'#

Out[46]= --a b, a b2., -a2b, a2b2., -a3b, a3b2.. は次のように,3 ' 2 行列と同一視されます. In[47]:= MatrixForm"## Out[47]//MatrixForm= a b a b2 a2b a2b2 a3b a3b2 行列の積はドット記号 . もしくは関数 Dot で行います.例えば In[48]:= matA '&&1, 2, 3', &4, 5, 6'';

(10)

はそれぞれ行列 In[50]:= MatrixForm"matA# MatrixForm"matB# Out[50]//MatrixForm= 1 2 3 4 5 6 Out[51]//MatrixForm= a x b y c z を表していて,これらの積は In[52]:= matA.matB MatrixForm"##

Out[52]= &&a # 2 b # 3 c, x # 2 y # 3 z', &4 a # 5 b # 6 c, 4 x # 5 y # 6 z'' Out[53]//MatrixForm= a # 2 b # 3 c x # 2 y # 3 z 4 a # 5 b # 6 c 4 x # 5 y # 6 z および In[54]:= matB.matA MatrixForm"##

Out[54]= &&a # 4 x, 2 a # 5 x, 3 a # 6 x', &b # 4 y, 2 b # 5 y, 3 b # 6 y', &c # 4 z, 2 c # 5 z, 3 c # 6 z'' Out[55]//MatrixForm= a # 4 x 2 a # 5 x 3 a # 6 x b # 4 y 2 b # 5 y 3 b # 6 y c # 4 z 2 c # 5 z 3 c # 6 z となります.

ヘルプ

新しい関数の使い方を調べたい,あるいは関数の使い方を忘れてしまった,といった場合には,Help 機能を使い ましょう.Mathematica では極めて充実したヘルプ機能が利用できます. 例えば Expand の使い方を忘れてしまったら: In[56]:= ? Expand Expand&expr' 式expr における積と正の整数ベキを展開する.

Expand&expr,patt' パターンpatt にマッチする項を含まない式expr の要素の展開を避ける.#

関数の名前がうろ覚えの場合,任意の長さの文字列を表す * を使って,候補となる関数のリストを表示すること もできます.

(11)

In[57]:= ? Plot"

"System`

Plot PlotLabel PlotRangePadding

Plot3D PlotMarkers PlotRegion

Plot3Matrix PlotPoints PlotStyle

PlotDivision PlotRange

PlotJoined PlotRangeClipping

参照

関連したドキュメント

このアプリケーションノートは、降圧スイッチングレギュレータ IC 回路に必要なインダクタの選択と値の計算について説明し

委 員:重症心身障害児の実数は、なかなか統計が取れないという特徴があり ます。理由として、出生後

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

都調査において、稲わら等のバイオ燃焼については、検出された元素数が少なか

この場合,波浪変形計算モデルと流れ場計算モデルの2つを用いて,図 2-38

神はこのように隠れておられるので、神は隠 れていると言わない宗教はどれも正しくな

(注)