第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 -
© Copyright 2024 Paperzz