テキスト(PDF

第1章
Mathematica の基本操作
- 3 -
1.Mathematica の基本操作(1)
1-1
基本計算/代数
Mathematica とは
1-1-1 Mathematica の特徴
Mathematica(マセマティカ)は,数値計算と数式処理のエンジン,グラフィックスのシステム,プログラ
ミング言語,ドキュメントシステム,他のアプリケーションとの高度な接続性をシームレスに統合したソフ
トウェアです。
主な特徴としては,次の点があげられます。
・ 数学,科学,工学用の広範な関数を標準で装備
・ 関数やデータの,2Dや3Dのインパクトの強い動的可
視化を自動作成
・ グラフィックス,数式などを操作できる動的なインター
フェースをすばやく簡単に作成
・ 一貫した高レベルの言語で手続き型,関数型,ルールベ
ースなどのプログラミングに対応
・ 何百もの標準データ形式の自動統合と,オンデマンドで
提供されるリアルタイムデータ
・ 論文やレポートの作成にも適した,統合された技術的ワ
ードプロセッサ
1-1-2 Mathematica の起動
「スタートメニュー」→「プログラム」→「数学ソフト」→「Mathematica」
起動すると右のような画面が現れる。
この画面は Mathematica の入出力を行う編集画面で,
「ノートブック」
と呼ばれている。数式は,通常ノートブックのエリ
アにキーボードから入力するが,右側に現れる「パ
レット」から記号を選んで入力することもできる。
1-1-3 入力の仕方
まず最初に,9+9 と入力して,[Shift]+[Enter]
を押してみよう。
計算式を入力したあとには,[Shift]+[Enter](ま
たは,テンキー側の[Enter])を押して,計算式を実
行させる。[Enter](英文字キー側)だけを押した場
合は,入力式が改行される。
なお,起動後最初の計算のときだけ少し時間を要
するが,これはカーネルと呼ばれる実行処理を行う
プログラム部分を起動しているためである。
In[1]:= 9+9
Out[1]:=18
というように表示されればOKである。
また,In[1],Out[1]のように[ ]内に記される番号は,計算の順番
を意味し,同じ番号は input と output の対応を表す。
- 4 -
1-1-4 セルとセルブラケット
ノートブックの右端に ]がつけられているが,これをセルブラケットと呼び,ブラケットで分別されて
いる行をセルと呼ぶ。
例えば右の例で,In[1],Out[1]の2つのセルが大きなセルブラケットで囲まれているが,これはこの2つ
が同じグループに属していることを示している。
また,Out[1]のセルの下に横線が引かれているのは,次の入力が可能であることを示している。
範囲指定印刷の場合やセルをコピーする場合などは,このブラケットをクリックして範囲指定する。複数
のセルを選択するときは,[Ctrl](または,[Shift])を押しながらクリックする。
1-1-5 ノートブック(ファイル)の保存
① メニューバーの「ファイル」から「Save」を選択する。
② 初めて保存する場合は,保存する場所やファイル名を聞
いてくるので,保存する場所を各自のネットワークドラ
イブ(Zドライブ)に,ファイル名を英数字8文字以内
(例:math01)でつけて 「保存」をクリックする。
③ ノートブックを編集または修正して再度上書き保存し
たいときには,「ファイル」メニューから「Save」を選
ぶ。
1-1-6 印刷
① 印刷したいセルのセルブラケットを選んで反転表示さ
せる。
② 「ファイルメニュー」から「Print」を選ぶ。
③ 印刷のダイアログの「選択した部分」のボタンを選ぶ。
(これを怠ると,ノートブックの全部が印刷されてしま
う。)
④ 印刷のダイアログの「OK」をクリック。
1-2
基本的な計算と操作
1-2-1 四則演算とベキ乗,階乗
演算
記号
演算
記号
加算
減算
乗算
+
-
*(または半角スペース)
除算
ベキ乗
階乗
/
^
!
[例題1] 次の計算を実行せよ。
① 1+2
② 3-4
④ 7÷8
⑤ 910
③ 5×6
⑥ 11!
[練習問題1] 次の計算を実行し,結果を記入せよ。
① 2005-5002
② 2005×5002
③ 10001÷73
④ 1÷2+1÷3
⑥ 12!
⑤ 200510
- 5 -
<参考>
・ パレットを使うと,×や÷の記号や,累乗の小さな文字も使えます。
・ ④の答えが分数(有理数)になることに注目しよう。
Mathematica では,分数を近似値に直さないで有理数のまま正確に扱っています。
1-2-2 パレットの使い方
[例題2] パレットを使って 200510 を入力し計算をせよ。(練習問題1の⑤)
(手順)
① 2005 を入力する。
② マウスで 2005 を選択し反転表示させる。
③ パレット上のボタン「■□」を選ぶ。
④ 10 を入力する。
⑤ [Shift]+[Enter] を押す。
<参考>
・ 分数や累乗,πやΣの数学記号など,日頃使っている形式で表現できることは,自分だけでなく人に
見せるときにもわかりやすくて便利です。レポートや教材を作成する場合には,この形式を使うよう
にしよう。
・ ■□ のように複数の入力ポイントがあるとき,入力ポイント間の移動は,Tab キーで行うか,マウス
でクリックします。
・ このような形式は,パレット以外に,キーボードからも入力が可能です。
たとえば,「π」は,[Esc]→pi→[Esc],「÷」は,[Esc]→div→[Esc],など。
・ √記号の入力は,[Ctrl]+2 で,累乗の上付数字の入力は,[Ctrl]+^ で,行える。また,分数の入力
は,[Ctrl]+/ で行うことができる。
・ 入力した数式のセルを選択して,メニューバーの「セル」→「変換形式」→「TraditionalForm」を
クリックすることにより,数学的な表現に変換する方法もある。
[練習問題2] パレットを使って次の通りに入力し計算をせよ。結果を記入せよ。
①
②
③
④
1-2-3 直前の値の利用
Mathematica では,直前またはそれ以上前の計算結果がメモリに記憶されているので,結果の値を再利用
することができる。
直前の値は,「%」を使って表す。
[例題3] 次の計算を実行してみよ。
①3*4+5
②%^2
③%1^2
[練習問題3] 次の計算を実行してみよ。結果を記入せよ。
① 3+4*5
② %^2
- 6 -
③
%^2
<参考>
上のような場合,②の「%」は,①の値すなわち 17 を表し,%^2 は 17 の2乗を意味している。
・ 一般に,直前の結果を利用する場合は「%」を用い,2つ前の結果に対しては「%%」を用いる。
・ 「%」が相対的な指定を行うのに対して,Out[k](k 番目の結果)の内容を利用したいときは,
「%k」
とすれば絶対指定が可能となる。
・
1-2-4 基本的な組み込み関数(分数と近似値)
Mathematica にはいろいろな関数が組み込まれている。また,組み込み関数は大文字で始まり,括弧は[ ]
を使うことになっている。
関数の書式
N[x]
意味
関数の書式
近似値
N[x,n]
〃
Rationalize[x]
Abs[x]
(n は有効桁数)
分数表示
絶対値
意味
Sqrt[x]
平方根
Floor[x]
x 以下の最大の整数
(ガウスの記号)
Mod[a,b]
a を b で割った余り
[例題4] 次の計算を実行せよ。
① N[1/13]
② N[1/13,20]
④ Sqrt[2]
⑤ Floor[13/5]
③ Rationalize[1.234]
⑥ Mod[31,4]
[練習問題4] 次の計算を実行し,結果を記入せよ。
① N[65/3]
② N[1/17,10]
③ Rationalize[3.1416]
④ Abs[-23.4]
⑤ Sqrt[3]
⑥ Floor[10/3]
1-2-5 慣用定数
数学でよく使われる定数も組み込まれています。
数学記号
Mathematica で使う記号
e(自然対数の底)
(e=2.71828・・・)
E (または,
)
i(虚数単位)
(i2=-1)
I (または,
)
π(円周率)
(π=3.14159・・・)
Pi (または,
)
なお,大文字小文字を区別するので注意すること。
[例題5] 次の計算を実行してみよ。
①
N[Pi,30]
② N[E,100]
③
[練習問題5] 次の計算を実行し,結果を記入せよ。
① N[Pi,100]
② N[E,1000]
③
④
- 7 -
1-2-6 いろいろな組み込み関数
関数の書式
意味
x
関数の書式
意味
Exp[x]
指数関数 (e )
Cos[x]
三角関数
Log[x]
自然対数
Tan[x]
三角関数
Log[b,x]
b を底とする対数
GCD[a,b]
a と b の最大公約数
Sin[x]
三角関数
LCM[a,b]
a と b の最小公倍数
[例題6] 次の計算を実行してみよ。
① Exp[3]
② Log[E^2]
④ Sin[Pi/3]
⑤ GCD[12,18]
③ Log[2,8]
⑥ LCM[12,8]
[練習問題6] 次の値の近似値を調べ,結果を記入せよ。
① Exp[2]
② Log[10,2]
③ Cos[Pi/4]
④ Tan[Pi/6]
1-3
整式の計算
1-3-1 文字式の計算
数値の計算と同じように文字式による計算が可能である。
[例題7] 次の計算を実行せよ。
① a+a
③ Sqrt[4a]
[練習問題7] 次の計算を実行せよ。
① 3x*5x
③ Sqrt[4(a + b)^2]
② x*x
④ (a+c)*(b+c)/(a+c)
②
④
2a+5b+4a+3b
(2x^2+3x)/x
1-3-2 代入
変数に値や式を代入するには次のように等号を使う。
また,変数の値をリセットするには Clear[ ]関数を使う。
書式
意味
変数名=値
代入
Clear[変数名]
代入値を消す
[例題8] 番号の順番に入力したときの出力結果を確認せよ。
① a=5
② 2a
③ Clear[a]
④ a
- 8 -
[練習問題8] 次の計算を実行せよ。
1)番号の順番に入力したときの出力結果を確認せよ。
① a=5
② a^3
③ Clear[a]
④ 2a+a
2)また,変数に式を代入することもできる。
① z=a+2
② z^3
③ Clear[z]
④ z^3
1-3-3 整式の因数分解
書式
Factor[式]
意味
因数分解
[例題9] 次の整式の因数分解を実行せよ。
( )内は Mathematica の入力方式。
2
( Factor[x^2 - 2x] )
① x -2x
( Factor[2x^2 - 3x y - 2y^2 + x + 3y - 1])
② 2x2-3xy-2y2+x+3y-1
<参考>
例題9②で,xy と x y では意味が違うことに注意。xy は 1 つの変数を表し,x y は x*y を表す。
降べきの順に並べたいときは,Output セルを選択して,メニューバーの「セル」→「形式変換」→
「TraditionalForm」を選ぶとよい。または,[Ctrl] + [Shift] + T でもよい。
・ Factor や Expand などの代数計算のコマンドは,メニューバーの「ファイル」→「パレット」→
「AlgebraicManiputlation」を選択することで,代数パレットを使うことが可能になる。
・
・
[練習問題9] 次の整式の因数分解を実行し,結果を余白に記録せよ。
① x2-16
② 2x3-7x2+9
③ x4- 4x + 3
④ x4 - 1
⑤ x7 - 1
1-3-4 整式の展開
書式
Expand[式]
意味
式の展開
[例題10] 次の整式を展開せよ。( )内は Mathematica の入力方式。
( Expand[(x+1)^2] )
① (x + 1)2
3
( Expand[(x+2y)^3] )
② (x + 2y)
[練習問題10] 次の整式を展開せよ。
① (x+1)(x+2)(x-3)
② (x+y)5
- 9 -
1-3-5 整式の簡素化
書式
意味
因数分解やさまざまな変形を試み,その都度最も簡単な形が得
られるようにする。
Simplify[式]
[例題11] 次の整式を簡素化せよ。
① Simplify[x^2 + 2 x + 1]
② Simplify[1/(x+1)-1/(x-1)]
[練習問題11] 次の整式を簡素化せよ。
① Simplify[1/(1 + 2x) - 1/(1 - 2x)]
② Simplify[1/(Sqrt[3]-1)+2/(Sqrt[3]+2)]
1-3-6 整式の割り算
書式
意味
PolynomialQuotient[式 1,式 2,変数]
式 1÷式 2 の商
PolynomialRemainder[式 1,式 2,変数]
式 1÷式 2 の余り
[例題12] 次の整式の割り算を行い,商と余りを求めよ。
① PolynomialQuotient[x^2-4,x-2,x]
② PolynomialRemainder[x^2-4,x-2,x]
[練習問題12] 次の整式の割り算を行い,商と余りを求めよ。
① PolynomialQuotient[x^3-4x+1,x-2,x]
② PolynomialRemainder[x^3-4x+1,x-2,x]
③ Expand[(x-2)(2x+x^2)+1]
1-3-7 分数式の計算
書式
意味
Apart[分数式,変数]
分子の次数を分母より小さくする
Cancel[分数式]
分数式を約分する
Togeher[分数式]
2 つの分数式を通分する
[例題13] 次の分数式の計算を実行せよ。
① Apart[(2x-1)/(x+1)]
② Cancel[(x^2-1)/(x-1)]
③ Together[1/x + 1/y]
[練習問題13] 次の分数式の計算を実行せよ。
① Apart[1/(3+x)/(1+x)^3]
② Cancel[(x^3-1)/(x-1)]
③ Together[1/(x+1)+1/(x-1)]
④ Simplify[1/(x+1)+1/(x-1)]
- 10 -
<参考>
・ Apart[]は,分数関数のグラフを描くときに便利である。
・ Simplify で簡素化しても通分されるが,分母の式が展開される。
1-3-8 方程式の解法
書式
Solve[方程式,変数]
意味
方程式の解
[例題14] 次の方程式を解け。( )内は Mathematica の入力方式。
( Solve[x^2==9,x])
① x2 = 9
②
⎧2 x + y = 5
⎨
⎩x + 2 y = 4
( Solve[{2 x+y==5,x+2 y==4},{x,y}] )
[練習問題14] 次の方程式を解け。
① Solve[x(x-1)+(x-1)(x-2)+(x-2)x==0,x]
② Solve[{x^2+y^2==89,x y+x+y==-37},{x,y}]
③ Solve[a x^2+b x+c==0,x]
<参考>
・ ②は連立方程式。また, x y(間に半角スペース)は x と y の積を表しており,xy とは違うものを指
すので注意。
・ ③についても,a と x の間,b と x の間に半角スペースが必要。
1-4
整数の性質を調べる関数
1-4-1 偶数・奇数・素数の判断など
関数の書式
意味
関数の書式
意味
EvenQ[x]
x が偶数であるか判断
Prime[x]
x 番目の素数を表示
OddQ[x]
x が奇数であるか判断
IntegerQ[x]
x が整数であるか判断
PrimeQ[x]
x が素数であるか判断
[例題15] 次の計算を実行せよ。
① EvenQ[7]
② OddQ[7]
④ Prime[10]
⑤ IntegerQ[Sqrt[25]]
[練習問題15] 次の計算を実行せよ。
① PrimeQ[10001]
② FactorInteger[10001]
③ Prime[{1,2,3,4,5,6,7,8,9,10}]
- 11 -
③ PrimeQ[10001]
1-4-2 素因数分解・約数・倍数など
関数の書式
意味
関数の書式
意味
FactorInteger[x]
x を素因数分解
DivisorSigma[1,x]
x の約数の和
Divisors[x]
x の約数を表示
GCD[x,y]
x と y の最大公約数
DivisorSigma[0,x]
x の約数の個数
LCM[x,y]
x と y の最小公倍数
[例題16] 次の計算を実行せよ。
① FactorInteger[60]
③ DivisorSigma[0,6]
⑤ GCD[36,54,108]
② Divisors[6]
④ DivisorSigma[1,6]
⑥ LCM[7,8,21]
[練習問題16] 次の計算を実行せよ。
① FactorInteger[400]
② Divisors[400]
③ DivisorSigma[0,400]
④ DivisorSigma[1,400]
⑤ (4+1)(2+1)
⑥ (1+2+2^2+2^3+2^4)(1+5+5^2)
1-5
ヘルプについて(付録)
1-5-1 関数の使い方のヘルプ
「関数」の使い方を簡単に説明してくれる便利なヘ
ルプがある。関数の意味を知りたいときは,右図のよ
うに,関数名の頭に?をつけて,[Shift]+[Enter] を
押す。
さらに詳しい説明が必要なときは,??をつけて関数
名を記述する。
右図は例として Log[ ]と Solve[ ]について調べた結
果である。
1-5-2 ヘルプブラウザ
メニューバーの「ヘルプ」→「ヘルプ」で,右のよ
うなヘルプブラウザが現れる。
キーワード入力欄に調べたいコマンド名などを入力
するか,下のメニュータグから,必要な項目を探すこ
とができる。
関数の使用例などが下のエリアに表示され,コピー
&ペーストを行うことも可能だ。
- 12 -
2.Mathematica の基本操作(その2)
2-1
2-1-1
リスト/集合/統計
リストとは
リストの基本
数や式を「 ,
(コンマ)
」で区切って横に並べ,
{ }でくくったものをリストという。集合や統計的なデー
タ,ベクトルや行列などは,すべてリスト処理で扱うことができ,数学の様々な分野に広く応用できる。
たとえば,{1,2,3,4,5}や{x,2x,x^2}や{{1,2},{2,3}}はすべてリストである。
2-1-2 リストをつくる便利な関数
Range[ ]または Table[ ]という関数を使って,リストを構成することができる。
書式
意味
Range[a,b,刻み幅]
A から b まで刻み幅で構成するリスト
刻み幅を省略すると 1 刻みとなる
Table[f[j],{j,最小値,最大値}]
集合の要素 f[j]で構成するリスト
[例題17] 次のリストを作成せよ。
( )内は Mathematica の入力方式。
① 1 から 10 までの整数のリスト。
(Range[1,10])
② 1 から 10 までの平方数のリスト。
(Table[j^2,{j,1,10}])
[練習問題17] 次のリストを作成せよ。
① 10 から 20 までの偶数のリスト。
② 10 から 20 までの 3 の倍数のリスト。
③ 0 からπまで,π/6 刻みのサイン関数の値のリスト。
④ 1/k! の第 0~n 項までの数列の和を f[n]として,f[n]の第 0~12 項までのリスト。
f[n_]:=N[Sum[1/k!,{k,0,n}]]
Table[{n,f[n]},{n,0,12}]
<参考>
・ ④では関数を定義しています。x_のアンダースコア(_)と:=に注意。
・ ④で出力するリストが 2 つの数値の組になっているのに注意。
2-1-3 リストを縦に並べる
横に並んで見にくいときには,TableForm[ ]を使うと見やすくなる。
書式
TableForm[リスト]
意味
リストの要素を長方形の配列にして出力する
[例題18] 次のリストを作成せよ。
( )内は Mathematica の入力方式。
1 から 20 までの整数とその階乗のリスト。
(TableForm[Table[{n,n!},{n,1,20}]])
[練習問題18] 練習問題17④を縦型のリストに変えよ。
- 13 -
2-2
集合
2-2-1 和集合・共通部分・補集合の計算
書式
意味
Union[集合 1,集合 2]
2 つの集合の和集合(結び)
Intersection[集合 1,集合 2]
2 つの集合の共通部分(交わり)
Complement[全体集合,集合 1]
集合 1 の補集合
Length[リスト]
成分の個数(リストの長さ)
Sort[リスト]
要素を小さい順に並べる
Reverse[リスト]
要素を逆順に並べる
[例題19] 次のような集合 A,B,U に対して,以下のものを求めよ。( )内は Mathematica の入力方式。
A={b,c,a,g,e,f}
B={a,h,d,f,c}
U={a,b,c,d,e,f,g,h,i,j}
① 集合 A の成分の個数
(Length[A])
② A∪B
(Union[A,B])
③ A∩B
(Intersection[A,B])
④ 全体集合 U における B
(Complement[U,B])
⑤ A∩B
(Intersection[Complement[U,A],Complement[U,B]])
⑥ A∪B
(Complement[U,Union[A,B]])
⑦ 集合 A のアルファベット順
(Sort[A])
⑧ 集合 U の逆アルファベット順 (Reverse[U])
[練習問題19] 1~10000 までの整数を全体集合 U とし,そのうち,3 の倍数の集合 A,4の倍数の集合 B,
5 の倍数の集合を C とするとき,次の問いに答えよ。
① Table を使って集合 A を作れ。
② Table を使って集合 A を作れ。
③ Table を使って集合 A を作れ。
④ A∩B の個数を求めよ。
⑤ B∩C の個数を求めよ。
⑥ C∩A の個数を求めよ。
⑦ A∩B∩C の個数を求めよ。
⑧ A∪B∪C の個数は,A+B+C-A∩B-B∩C-C∩A+A∩B∩C の個数であることを使って,A∪B∪C の個数を
求めよ。
2-2-2 集合の要素の追加など
書式
意味
Append[リスト,a]
AppendTo[リスト,a]
リストに要素 a を追加
リストに要素 a を追加(リストを変更)
Join[リスト 1,リスト 2]
リスト1とリスト2を合成
Apply[Plus,リスト]
成分の総和
Apply[Times,リスト]
成分の積
Map[f,リスト]
各成分に関数 f を適用する
- 14 -
[例題20] 次のように入力,実行して,リストの処理を確認せよ。
① A={a,b,c}
② Append[A,d]
③ A
④ AppendTo[A,d]
⑤ A
⑥ B={e,f}
⑦ Join[A,B]
[練習問題20] 次のように入力,実行して,リストの処理を確認せよ。
① A={1,2,3,4}
② Append[A,5]
③ A
④ AppendTo[A,5]
⑤ A
⑥ B={3,4,5,6}
⑦ Apply[Plus,A]
⑧ Apply[Plus,B]
⑨ Map[Sqrt,A]
⑩ Apply[Times,A]
⑪ 2B+1
(各要素に対して2倍して1を加える)
⑫ A^2
(各要素に対して2乗する)
⑬ A.A
(内積する)
2-2-3 集合の要素の取り出しなど
書式
意味
Take[リスト,番号]
リストの先頭から n 個の要素を取り出す
Select[リスト,条件]
リストの中から条件を満たすものを取り出す
Delete[リスト,番号]
リストから指定番号の要素を取り除く
First[リスト]
先頭の要素を取り出す
Last[リスト]
末尾の要素を取り出す
MemberQ[リスト,指定要素]
指定した要素が含まれているかどうかを判定
[例題21] 次のように入力,実行して,結果を確認せよ。
① Take[{a,b,c,d},2]
② Seloct{0,1,2,3},EvenQ]
③ Delete[{a,b,c,d},2]
④ First[{a,b,c,d}]
⑤ Last[{a,b,c,d}]
⑥ MemberQ[{a,b,c},d]
[練習問題21] 次のように入力,実行して,結果を確認せよ。
① A = {a, b, c, d, e}
② Take[A, -2]
③ Take[A, {2, 4}]
④ Select[{8Pi, aa, α, 30.5, 23/5}, NumericQ]
<参考>
・ Take[リスト, -n]は,リストの末尾から n 個の要素を与える。
・ Take[リスト, {m, n}]は,リストの m から n 番目の要素を抽出する。
・ EvenQ[式]は,式が偶数である場合に,NumericQ[式]は,式が数値的な量を表す場合に,True を返し,
そうでなければ False を返す。
- 15 -
2-3
場合の数と確率
2-3-1 順列
書式
意味
Permutations[リスト]
リストの要素すべての並べ方
Permutations[リスト,個数]
要素の一部を取出して並べる
n! (n には整数が入る)
n の階乗(n 個の順列)
[例題22] 次のように入力,実行して,結果を確認せよ。
① A = {さ, な, え}
② Permutations[A]
③ Permutations[A,2]
④ 5!
<復習>
・ 異なる n 個のものをすべて1列に並べる順列は,n! 通り。
・ 異なる n 個のものから r 個を取り出して1列に並べる順列は,n P r 通り。
・ n P r の計算については,組み込み関数は存在しないので,次のように定義して問題を解いてみましょ
う。
[練習問題22] 次のように入力,実行して,結果を確認せよ。
① P[n_,r_]:=n!/(n-r)!
② P[10,3]
③ Permutations[{さ,な,え}] ← 自分の名前でやってみてください
2-3-2 組合せ
書式
意味
Binomial[n,r]
n 個から r 個を取り出す組合せ
KSubsets[リスト,個数]
要素の一部を取出す組合せ
[例題23] 次のように入力,実行して,結果を確認せよ。
① Binomial[10,3]
② KSubsets[{a,b,c,d},2]
[練習問題23]
① C[n_,r_]:=Binomial[n,r]
② C[10,3]
③ <<DiscreteMath`Combinatorica`
KSubsets[{さ,な,え},2]
← 先にこれを実行すること!
← これも自分の名前でやってみてください
<参考>
・ DiscreteMath`Combinatorica` は,組み合わせ論とグラフ理論を拡張するパッケージ。
・ KSubsets[リスト, a]は,リストの中の部分集合でちょうど a 個の要素を含むものを辞書式順序で与え
るものである。
- 16 -
2-4
統計処理(データ処理とその図式化)
2-4-1 利用する関数
書式
意味
ListPlot[リスト]
リストをグラフにプロットする
Fit[リスト,{1,x},x]]
1次関数で近似する
Fit[リスト,{1,x,x^2},x]]
2次関数で近似する
Plot[x の式,{x の定義域}]
y=f(x)(x の式)をグラフに表示
Needs["Graphics`Graphics`"]
BarChart 関数を使うときに必要
BarChart[リスト]
棒グラフを表示
PieChart[リスト]
円グラフを表示
[例題24] 次のように入力,実行して,結果を確認せよ。
① ListPlot[{1,2,4,8,16}]
② Fit[{1,2,4,8,16},{1,x},x]
③ Fit[{1,2,4,8,16},{1,x,x^2},x]
④ Plot[2^x,{x,0,4}]
⑤ Needs["Graphics`Graphics`"]
⑥ BarChart[{1,2,4,8,16}]
⑦ PieChart[{1,2,4,8,16}]
[練習問題24] 次のように入力,実行して,結果を確認せよ。
① ListPlot[{1, 2, 4, 8, 16}, PlotStyle -> PointSize[0.02]]
② Plot[Sin[x], {x, 0, 2Pi}]
③ p = Table[Prime[n], {n, 10}]
④ PieChart[p]
<参考>
・ PlotStyle -> スタイル は,線や点の属性を指定する。PointSize[半径] で点の大きさを指定する。
(デフォルトは 0.01)
2-4-2 リストの作図と近似曲線
[例題25] バネばかりの実験(1次関数での近似)
長さ 10cm のバネにおもりをつるしてその長さを測ったら,次のような結果を得た。
おもりの重さ(g)
0
20
40
60
80
100
バネの長さ(cm)
10.0
12.8
16.2
18.5
21.8
25.0
① Excel からの数値データの読み込みをする。Excel で,右図のように入力する。
② D ドライブに「Book1.txt」の名前で保存する。ファイルの種類で,
「テキスト(タブ区切り)
」
- 17 -
③
Mathematica で,次のようなコマンドを入力する。
ReadList["D:Book1.txt",Number,RecordLists->True]
④
これを「data1」という名前でリストとして代入しておくため,次の式を入力。
data1=% (%は,直前の結果のことで,これを data1 に格納している。)
これをグラフ上にプロットしてみよう。またこれに「ten1」という名前をつける。
ten1 = ListPlot[data1, PlotStyle -> PointSize[0.02]]
(ListPlot は,データをグラフ化する。)
実験データの点がおよそ直線上にのることを予測して1次関数で表すことを考える。
Fit[data1,{1,x},x]
(「Fit[data1,{1,x},x]」は,data1 というデータに対して,y=ax+b という1次関数(直線)で近似
をするという意味。
)
これにより,近似した直線(回帰直線)の式を得る。→ 式(
)
それをグラフに表して「sen1」という名前をつけておく。
sen1=Plot[%,{x,0,100}]
(Plot は,与えた直線(曲線)の式をグラフ化する。)
上で表した直線(sen1)とデータの点(ten1)の両方をグラフに表すには次のようにする。
Show[ten1,sen1]
(右図参照)
※グラフを少し大きめに拡大して,点と直線のズレを確認しておこう。
⑤
⑥
⑦
⑧
[練習問題25] 落下の実験(2次関数での近似)
ボールを投げ上げたときの水平方向の距離(x m)と,垂直方向(y m)の位置関係を表にし たところ,次
のようになった。
水平方向(m)
垂直方向(m)
0
0.0
1
15.0
2
20.5
3
16.0
4
1.6
5
-22.3
6
-56.2
① Mathematica で,次のようなコマンドを入力する。(Excel を使わないで直接入力)
data2={{0,0},{1,14.7},{2,20.9},{3,16.1},{4,1.7},{5,-22.3},{6,-56.2}}
② これをグラフ上にプロットしてみよう。これに「ten2」という名前をつけておく。
ten2=ListPlot[data2, PlotStyle -> PointSize[0.02]]
③ 実験データの点がおよそ放物線上にのることを予測して,2次関数で表すことを考える。
また,それをグラフに表して「sen2」という名前をつけておくことにする。
Fit[data2,{1,x,x^2},x]
sen2=Plot[%,{x,0,6}]
(%は直前の値,すなわち,近似曲線の式のこと。
)
2
※「Fit[data2,{1,x,x^2},x]」は,data2 というデータに対して,y=ax +bx+c という2次関数(放物線)
で近似するという意味。
④ 上で表した直線とデータの点の両方をグラフに表すには,次のようにする。
Show[ten2,sen2] (右図参照)
- 18 -
2-4-3 棒グラフと円グラフ
[例題26] 棒グラフの作成
6 人の数学テストの点数が 10 点,20 点,45 点,25 点,32 点,18 点であったとする。
①
リストの作成。
data3={10,20,45,25,32,18}
② これを棒グラフに表すには,次のようにパッケージを読み込
んだあと,BarChart[ ]を使う。
Needs["Graphics`Graphics`"]
BarChart[data3]
[練習問題26] 円グラフの作成
例題26のデータを用いて,次の手順で円グラフを作成せよ。
① 6人の点数の割合を見やすくするために円グラフで表すとすれば,
PieChart[ ]を使う。
PieChart[data3]
② 1人目の 10 点の部分を強調するために,次のようにすることもで
きる。
PieChart[data3,PieExploded->{{1,.2}}]
(右図参照)
3.Mathematica の基本操作(その3)
3-1
関数/数列
関数の定義
3-1-1 関数の定義
自分で考えた関数を定義することもできる。
書式
関数名[x_]:=式
意味
式の定義
[例題27] 次のように入力,実行して,結果を確認せよ。
① sanae[x_] := x^3
② sanae[3]
[練習問題27]
1)次の関数を定義して,計算およびグラフ化せよ。
① f[x_]:=Exp[x]/x
② f[5]
③ Plot[f[x],{x,-2,5}]
- 19 -
④ g[x_]:=Sin[x]/x
⑤ g[2 Pi]
⑥ Plot[g[x],{x,-2 Pi,2 Pi}]
2)次の数列について,第 5 項と第 100 項を以下のようにして求めよ。
① a[1]=3
a[n_]:=a[n-1]+2
② a[5]
③ a[100]
3-2
数列
[例題28]
①初項 3,公差 2 の等差数列を第1項~第 20 項まで表示させるには,次のようにする。
a[1]=3
a[n_]:=a[n-1]+2
Table[a[n],{n,1,20}]
②次に,数列の各項を棒グラフで表してみる。
<<Graphics`Graphics`
(BarChart[ ]を使うには,パッケージ「Needs["Graphics`Graphics`"]」を実行しておく必要が
ある。
)
p=Table[a[n],{n,1,20}]
BarChart[p]
③これらを分散図で表してみよう。
ListPlot[p]
④点をつないで折れ線グラフで表す。
ListPlot[p,PlotJoined->True]
⑤上記の数列について,その和を求めるには,Sum[ ]を用いる。
Sum[a[n],{n,1,200}]
Sum[a[n],{n,50,100}]
Sum[a[n],{n,1,k}]
⑥第 k 項までの和といったような,k という文字を用いた一般式で求めるには,漸化式の形のままでは
計算ができない。そこで,次のように,一般項の形(ここでは,初項 3,公差 2 の等差数列であるか
ら,「2n+1」 と表せる)に直してから計算させることになる。
Sum[2n+1,{n,1,k}]
⑦求めた式をできるだけ簡単な形に整理するには,Simplify を用いる。
Simplify[%]
[練習問題28]
次の数列について,第1項~第 20 項を求め,さらに棒グラフに表せ。
また,第 1 項~第 20 項までの和と,第 1 項~第 k 項までの和を求めよ。
① {bn = 15n - 3}
② {cn = 2n}
3
⎧
⎫
③ ⎨d1 = 3, d n = d n −1 + 1⎬
2
⎩
⎭
<参考>
・ 第 k 項までの和を求めるには,手計算で,漸化式から一般項を求めなくてはならない。
・ 一般項を求めたら,
「Sum[一般項の式,{n,1,k}]」の形で k 項までの和を求める。
- 20 -
課題研究
次の課題を Mathematica を用いて行い,プログラムリスト,出力結果などを印刷して提出しなさい。最初
に番号,氏名を忘れずに入力すること。
[課題1] 素数の表れ方(素数列)について,次の手順で近似曲線(直線)を求めよ。
①
Table を用いて n 番目までの素数を表示させる。
②
N=30 として,素数を 30 個表示させる。
③
ListPlot を用いて,素数列をグラフにプロットする。
④
Fit を用いて,1次関数および2次関数で近似する。
⑤
素数列の点と近似曲線2つを同時に表示する。
[課題2] 数列 {an} = {1, 2, 8, 22, 47, 86, ・・・} の一般項を次の手順で求めよ。
①
{1, 2, 8, 22, 47, 86, ・・・} をリストに格納する。
②
ListPlot を用いて,グラフにプロットする。
③
BarChart を用いて,棒グラフで表示する。
④
Fit を用いて,3次関数で近似する。
⑤
ぴったりと点が重なっていることを確かめたら,その曲線の表す式が数列の一般項になる。そこで元
の点列と近似曲線を表示する。
⑥
Rationalize を用いて,Fit で求めた曲線の式を分数の係数で再度求める。
[課題3] 素数の表れ方(分布)について,回帰直線(近似曲線)を求める。
①
Table を用いて,100 までの素数の個数,200 までの素数の個数というように,100 刻みに 10000 まで
の素数の個数をリストで表す。
②
ListPlot を用いて,グラフにプロットする。
③
Fit を用いて,回帰直線の式を求める。
(自分で近似式を考える)
④
ガウスは少年時代に自然数 n までの素数の個数は
この関数のグラフを重ねてみる。
- 21 -
x
で近似されると予想した。上のグラフに,
log x
[課題4] 8元の連立方程式を解くことで,次の魔方陣を解け。
(1) 右の正方形のマス目に 1~9 の異なる数字を並べ,縦横斜めのどの方向に合計しても
1
同じ数になるようにせよ。ただし,1 の位置はすでに決めている。
(2) 右の正方形のマス目に 36 の約数を全て当てはめ,縦横斜めのどの方向に合計しても
同じ数になるようにせよ。ただし,1 の位置はすでに決めている。
[課題5] 次の因数分解を行い,その結果について考察されることを NoteBook に記入せよ。
(1) xn - 1
(2) xn - yn
(3) xn + yn
[課題6] 次の問に答えよ。
(1) ある金貸し屋では「1 万円を借りたら 1 年後には 1 万円の利息をつけて返す」という約束で商売をし
ていた。ところが「利息は 50%以下に制限せよ」とのお達しがあり,この金貸しは「1 万円を借りたら
半年後には 5 千円の利息をつけて返す」という仕組みを考えた。利息は一見安くなったように思えたが
実際には違っていた。1 年後にはいくらになっただろうか。
※
金利を半年で 50%の複利として計算する。
(2) しばらくして「利息は 25%以下に制限せよ」との決まりが設けられたが,金貸し屋はまた考えて「1
万円を借りたら 3 ヶ月で 2500 円の利息」という約束で商売を始めた。利息は安くなったように思えたが
やはり実際にはそうではなかった。1 年後にはいくらになっただろうか。
※
金利を 3 ヶ月で 25%の複利として計算する。
(3) このあとは,同じ繰り返しを続け,利息の制限をすり抜けて,1 年間を n 回に分割して,
をつけて商売をした。では,1 年を 12 回に分割して
1
の利息
n
1
の利息をつけたとすると,1 年後にはいくらにな
12
るだろうか。
(4) このようにして 1 年間を n 回に分割して,
1
の利息をつける,という金貸しのやり方は,分割の回
n
数が増えれば増えるほど 1 年後の利息もまた増加を続けていく。
では n をどんどん大きくしていったとき,借金の額はどこまで大きくなるのであろうか。あるいはある
値に近づいていくのであろうか。次の手順でこの値を求めていこう。
①
②
③
④
Table を用いて n = 1 から n = 50 までの利息をリストにする。
ListPlot を用いてグラフにする。
Limit を用いてこの値の極限を求めてみる。
N を用いてその値の近似値を求めてみよう。
- 22 -
第2章
数学を分析する
- 23 -