Mathematica 入 門 Mathematica入門 0.目次 1.はじめに 2.数値計算 2.1 四則演算と定数 2.2 組み込み関数 2.3 数の表示 2.4 代入 2.5 Print文 2.6 Do文 2.7 For文 2.8 While文 2.9 If文 2.10 和と積 2.11 関数の定義 [ 例 2 . 1 ] 1+1/2+1/3+… +1/n+… の 計 算 [例2.2]πの計算 [例2.3]2^n−1の素数 3.ファイル処理 3.1 ファイルからコマンド入力 3.2 ファイルへ結果の出力 [例3.1]ファイル処理の例 4.数式処理 4.1 4.2 4.3 4.4 方程式 式の展開、因数分解、部分分数展開、簡約化 級数、微分、定積分 漸化式 5.リスト処理 5.1 リスト 5.2 素数 5.3 集合 [例5.1]素数に関する問題 [例5.2]ピタゴラス数 [例5.3]リスト処理 6.グラフィックス 6.1 関数のグラフ 6.2 データのグラフ 6.3 データファイルの読込み [例6.1]グラフィックスの例 7.課題 7.1 7.2 7.3 7.4 課題1 課題2 課題3 課題4 - 1 - Mathematica 入 門 1.はじめに Mathematicaは 、 数 式 計 算 、 数 値 計 算 、 グ ラ フ ィ ッ ク ス 処 理 等 を 実 行 す る 数 式 処 理支援ソフトウェアである。例えば、分数での計算、因数分解、方程式の解、微 積分等が誤差なく厳密に計算できる。もちろん、数値計算も行える。簡単な使い 方を示す。 % math ( 起 動 ) In[1]:= 1+2*3 Out[1]= 7 In[2]:= 1/2+1/3 5 Out[2]= 6 In[3]:= Sqrt[8] Out[3]= 2 Sqrt[2] In[4]:= N[Sqrt[8]] Out[4]= 2.82843 In[5]:= %4/2 Out[5]= 1.41421 In[6]:= Solve[x^2-2==0,x] Out[6]= {{x -> -Sqrt[2]}, {x -> Sqrt[2]}} In[7]:=Quit % (停止) ① In[k]は 、 起 動 時 か ら k番 目 に 入 力 し た 数 式 を 意 味 し 、 Out[k]は 、 In[k]に 対 応 し た 出 力 を 意 味 す る 。 Mathematicaを 起 動 し て か ら の 累 計 番 号 ( kは 1か ら 始まる)で自動的に表示される。 ② In[1]:= と 表 示 さ れ て い る と き 、 1+2*3 と 入 力 し 、 Enterキ ー を 押 す 。 Out[1]= 7 と 表 示 さ れ る 。 ③ Out[k]の 結 果 を 再 利 用 す る と き は 、 %k と す る 。 %は 直 前 の 結 果 を 意 味 す る 。 ④ 計 算 の 中 断 は 、 C-c( Ctrlキ ー を 押 し な が ら cを 押 す ) を 入 力 す る 。 Interrupt>と 表 示 さ れ た ら 、 aを 入 力 す る 。 ⑤式の最後にセミコロンをつけると、計算はするが結果は出力されない。 - 2 - Mathematica 入 門 2.数値計算 数値計算に必要な基本的書き方、実行文を示す。 2.1 四則演算と定数 加法 減法 乗法 除法 ベキ乗 階乗 a+b a−b a*b a/b a^b n! Pi E (または、a b) % math In[1]:= 123 + 45 Out[1]= 168 In[2]:= 1/2 + 1/3 5 Out[2]= 6 In[3]:= 123 - 45 Out[3]= 78 In[4]:= 1/2 - 1/3 1 Out[4]= 6 In[5]:= 123 * 45 Out[5]= 5535 In[6]:= (1/2) * (1/3) 1 Out[6]= 6 In[7]:= 123 / 45 41 Out[7]= -15 In[8]:= (1/2) / (1/3) 3 Out[8]= 2 In[9]:= 2 ^ 10 Out[9]= 1024 In[10]:= 10 ! Out[10]= 3628800 In[11]:= Pi Out[11]= Pi In[12]:= E Out[12]= E In[13]:= Quit - 3 - 円周率 自然対数の底 Mathematica 入 門 2.2 組み込み関数 絶対値 剰余 平方根 指数関数 三角関数 対数関数 2項係数 Abs[x] Mod[x,k] 整 数 x を 整 数 k で 割 っ た 余 り Sqrt[x] Exp[x] Sin[x] Cos[x] Tan[x] ArcTan[x] Log[x]( 底 は e) Log[a,x]( 底 は a) Binomial[n,r] % math In[1]:= Abs [123] Out[1]= 123 In[2]:= Abs [-123] Out[2]= 123 In[3]:= Mod [10,3] Out[3]= 1 In[4]:= Sqrt [2] Out[4]= Sqrt[2] In[5]:= Exp [1] Out[5]= E In[6]:= Sin [Pi] Out[6]= 0 In[7]:= Cos [Pi] Out[7]= -1 In[8]:= Tan [Pi/4] Out[8]= 1 In[9]:= Log [E] Out[9]= 1 In[10]:= Log [2,4] Out[10]= 2 In[11]:= Binomial [10,5] Out[11]= 252 In[12]:= Quit 2.3 数の表示 N[x] N[x,k] x//N xを小数表示にする。 xをk桁まで正しく小数表示する。 xを仮数部と指数部で表示する。 In[1]:= Out[1]= In[2]:= Out[2]= In[3]:= N [Sqrt[2]] 1.41421 N [Sqrt[2],10] 1.414213562 2^100 //N 30 Out[3]= 1.26765 10 - 4 - Mathematica 入 門 2.4 代入 x=値 Clear[x] In[1]:= Out[1]= In[2]:= Out[2]= In[3]:= In[4]:= Out[4]= 2.5 x = 123 123 x 123 Clear [x] x x Print文 Print[S] In[1]:= Out[1]= In[2]:= a bc In[3]:= Out[3]= In[4]:= 123 2.6 変 数 xに 値 を 代 入 す る 。 後 で 参 照 で き る 。 変 数 xに 割 り 当 て ら れ て い る 値 を 消 去 。 文字列Sが出力される。 空 白 は 、 二 重 引 用 符 ( ") で 必 要 な 空 白 文 字 を 囲 む 。 x = "a bc" a bc Print [x] x = 123 123 Print [x] Do文 Do[X(n),{n,a,b,c}] a≦ n≦ bに つ い て 、 増 分 cで X(n)を 評 価 し た 結果を出力する。 In[1]:= Do [Print[i],{i,1,3}] 1 2 3 2.7 For文 For[i=a,i<=b,i=i+c,X(i)] a≦ i≦ bに つ い て 、 増 分 cで X(i)を 評 価 した結果を出力する。 In[1]:= For [i=1,i<=3,i=i+1,Print[i]] 1 2 3 - 5 - Mathematica 入 門 2.8 While文 While[条 件 ,処 理 ] 条件が真の間、処理を繰り返す。 In[1]:=i = 1 Out[1]= 1 In[2]:= While [i<=3,{Print[i]; i=i+1}] 1 2 3 ( 注 意 ) 処 理 が 複 数 の 文 か ら 構 成 さ れ る と き 、 {と }で 囲 む 。 条件を関係演算子、論理演算子で表す。 関係演算子 x == y xと yが 等 し い x != y xと yが 等 し く な い x < y xが yよ り 小 さ い x <= y xが yよ り 小 さ い か 等 し い x > y xが yよ り 大 き い x >= y xが yよ り 大 き い か 等 し い 2.9 論理演算子 x ¦¦ y xま た は y x && y xか つ y !x xで な い If文 If[条 件 ,処 理 1 ,処 理 2 ] 条件が真ならば処理1を実行し、偽な らば処理2を実行する。 In[1]:= If [1<2,Print["1"],Print["2"]] 1 In[2]:= If [1>2,Print["1"],Print["2"]] 2 2.10 和と積 Sum[f[n],{n,a,b}] Product[f[n],{n,a,b}] In[1]:= Out[1]= In[2]:= Out[2]= f(a)+f(a+1)+・ ・ ・ +f(b-1)+f(b) f(a)・ f(a+1)・ ・ ・ f(b-1)・ f(b) Sum [n,{n,1,10}] 55 Product [n,{n,1,10}] 3628800 - 6 - Mathematica 入 門 2.11 関数の定義 関 数 名 [引 数 _]:=定 義 式 関 数 名 [引 数 1 _,引 数 2 _]:=定 義 式 ( 引 数 が 2 個 以 上 の 場 合 も 同 様 ) ?関 数 名 関数定義の確認。 Clear[関 数 名 ] 関数の定義削除。 関 数 名 [引 数 _]:=定 義 式 /; 条 件 条件が満たされたとき定義される 関 数 名 [引 数 _]:= (コ マ ン ド ; … ; コマンド) 複数のコマンドをまとめてひとつ の手続きとする。丸かっこで囲む 関数の値は、最後のコマンドの結 果となる。 関 数 名 [引 数 _]:= Module[{u,v}, コ マ ン ド ; … ;コ マ ン ド ] 手 続 き 内 で 使 う 局 所 変 数 u,vを 定 義 できる。 Return[値 ] 値を返す。 % math In[1]:= f[x_,y_]:= x*x + y*y In[2]:= ?f Global`f f[x_, y_] := x*x + y*y In[3]:= f[3,4] Out[3]= 25 In[4]:= Clear [f] In[5]:= ?f Global`f In[6]:= f[x_]:= 1 /; x>=0 In[7]:= ?f Global`f f[x_] := 1 /; x >= 0 In[8]:= f[3] Out[8]= 1 In[9]:= f[-3] Out[9]= f[-3] (続く) - 7 - Mathematica 入 門 In[10]:= d[x_,y_]:=(z=x*x+y*y; z=Sqrt[z]) In[11]:= d[2,3] Out[11]= Sqrt[13] In[12]:= a = 3 Out[12]= 3 In[13]:= e[x_]:=Module[{u},u=a*a+x*x; a=-a; u=Sqrt[u]] In[14]:= e[4] Out[14]= 5 In[15]:= a Out[15]= -3 In[16]:= u Out[16]= u In[17]:= Quit (参考)ヘルプ機能 ?関数名 ??関数名 ?文字列* ?*文字列* 関数の簡単な説明 関数の詳しい説明 文字列で始まる関数の一覧 文字列を含む関数の一覧 - 8 - Mathematica 入 門 [ 例 2 . 1 ] 1+1/2+1/3+… +1/n+… の 計 算 % math Mathematica 3.0 for Digital Unix Copyright 1988-97 Wolfram Research, Inc. License valid through 24 May 2003. -- Terminal graphics initialized -一般項の定義 In[1]:= a[k_]:=1/k; In[2]:= b[n_]:=Sum[a[k],{k,1,n}]; In[3]:= a[3] 1 Out[3]= 3 In[4]:= b[3] 11 Out[4]= -6 分数表現 In[5]:= b[100] 14466636279520351160221518043104131447711 Out[5]= ----------------------------------------2788815009188499086581352357412492142272 小数表現 In[6]:= b[100]//N Out[6]= 5.18738 In[7]:= b[1000]//N Out[7]= 7.48547 In[8]:= b[10000]//N Out[8]= 9.78761 In[9]:= Quit - 9 - Mathematica 入 門 [例2.2]πの計算 π /4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 … % math Mathematica 3.0 for Digital Unix Copyright 1988-97 Wolfram Research, Inc. License valid through 8 Apr 1999. -- Motif graphics initialized -一般項の定義。 In[1]:= f[k_]:=(-1)^(k+1)/(2*k-1); 50番目の項までの部文和。 In[2]:= 4*Sum[f[k],{k,1,50}] 3400605476464206445954873476681150352328 Out[2]= ---------------------------------------1089380862964257455695840764614254743075 数値化。 In[3]:= N[%,20] Out[3]= 3.1215946525910104785 In[4]:= g[n_]:=4*Sum[f[k],{k,1,n}]; 10番目のまでの項の部文和、20番目までの項の部文和、・・・、50番目ま での項の部文和を求める。 In[5]:= Do[Print["g(",n,")=",N[g[n],20]],{n,10,50,10}] g(10)=3.0418396189294022111 g(20)=3.0916238066678386317 g(30)=3.1082685666989461300 g(40)=3.1165965567938323178 g(50)=3.1215946525910104785 収束が遅いことがわかる。 In[6]:= Quit - 10 - Mathematica 入 門 [例2.3]2^n−1の素数 % math Mathematica 3.0 for Digital Unix Copyright 1988-97 Wolfram Research, Inc. License valid through 24 May 2003. -- Terminal graphics initialized -関 数 の 定 義 ( PrimeQ[x]は xが 素 数 な ら 真 、 素 数 で な い な ら 偽 と な る 関 数 ) In[1]:= p[m_]:=For[n=1,n<=m,n++, If[PrimeQ[2^n-1],Print["2^",n,"-1 is prime"]]]; 関数の確認 In[2]:= ?p Global`p p[m_] := For[n = 1, n <= m, n++, If[PrimeQ[2^n - 1], Print["2^", n,"-1 is prime"]]] 1000以 下 に つ い て 実 行 。 In[3]:= p[1000] 2^2-1 is prime 2^3-1 is prime 2^5-1 is prime 2^7-1 is prime 2^13-1 is prime 2^17-1 is prime 2^19-1 is prime 2^31-1 is prime 2^61-1 is prime 2^89-1 is prime 2^107-1 is prime 2^127-1 is prime 2^521-1 is prime 2^607-1 is prime Timing[処 理 ]で 処 理 の 所 要 時 間 を 求 め る こ と が で き る 。 In[4]:= Timing[PrimeQ[2^607-1]] Out[4]= {0.149994 Second, True} In[5]:= Timing[PrimeQ[2^1000-1]] Out[5]= {0. Second, False} In[6]:= Quit - 11 - Mathematica 入 門 3.ファイル処理 ファイルからコマンドを入力する方法、ファイルへ実行結果を出力する方法を 示す。 3.1 ファイルからコマンド入力 フ ァ イ ル ( fib.m) fib[0]:=1; (* コ メ ン ト *) fib[1]:=1; fib[n_]:=fib[n-1]+fib[n-2]/; n>1 こ の フ ァ イ ル を 読 み 込 む と 、 fibと い う 名 前 の 関 数 が 使 え る よ う に な る 。 (*と *)で 囲 ま れ た 部 分 は コ メ ン ト と 見 な さ れ 、 計 算 の 対 象 と な ら な い 。 !!fib.m Get["fib.m"] ?fib fib[10] 3.2 フ ァ イ ル ( fib.m) の 表 示 。 フ ァ イ ル ( fib.m) を 読 み 込 む 。 fibと い う 関 数 が 定 義 さ れ て い る か 確 認 す る 。 fib[10]を 計 算 す る 。 ファイルへ結果の出力 Put[式 ,"output"] PutAppend[式 ,"output"] Save["func.m",fib] 式 の 結 果 を 出 力 フ ァ イ ル (output) へ 保 存 。 式 の 結 果 を 出 力 フ ァ イ ル ( output) へ 追 加 保 存 フ ァ イ ル ( func.m) に 関 数 fibを 保 存 す る 。 こ の フ ァ イ ル を 読 み 込 め ば 、 関 数 fibが 使 え る 。 - 12 - Mathematica 入 門 [例3.1]ファイル処理の例 % cat fib.m fib[0]:=1; fib[1]:=1; fib[n_]:=fib[n-1]+fib[n-2]/; n>1 % math フ ァ イ ル ( fib.m) を 読 み 込 む 。 In[1]:= Get["fib.m"] 関 数 fibが 定 義 さ れ て い る か 確 認 。 In[2]:= ?fib Global`fib fib[0] := 1 fib[1] := 1 fib[n_] := fib[n - 1] + fib[n - 2] /; n > 1 fib[5]を 計 算 。 In[3]:= fib[5] Out[3]= 8 fib[5]の 結 果 を フ ァ イ ル ( output) に 出 力 。 In[4]:= Put[fib[5],"output"] フ ァ イ ル ( output) を 表 示 。 In[5]:= !!output 8 fib[6]の 結 果 を フ ァ イ ル ( output) に 追 加 出 力 。 In[5]:= PutAppend[fib[6],"output"] フ ァ イ ル ( output) を 表 示 。 In[6]:= !!output 8 13 フ ァ イ ル ( func.m) に 関 数 fibを 保 存 。 In[6]:= Save["func.m",fib] フ ァ イ ル ( func.m) を 表 示 。 In[7]:= !!func.m fib[0] := 1 fib[1] := 1 fib[n_] := fib[n - 1] + fib[n - 2] /; n > 1 In[7]:= Quit - 13 - Mathematica 入 門 4.数式処理 数式処理に必要な基本的な書き方、実行文を示す。 4.1 方程式 Solve[P==Q,x] NSolve[P==Q,x] N[Solve[P==Q,x],k] Solve[{P1==Q1,P2==Q2}, {x1,x2}] NSolve[{P1==Q1,P2==Q2}, {x1,x2}] N[Solve[{P1==Q1,P2==Q2}, {x1,x2}],k] FindRoot[P1==Q1,{x,a}] FindMinimum[P,{x,a}] P,Qを xに つ い て の 式 と す る 。 代数的な解が求められる。 P,Qを xに つ い て の 式 と す る 。 数値的な解が求められる。 P,Qを xに つ い て の 式 と す る 。 k桁 の 精 度 で 数 値 的 な 解 が 求 め ら れ る 。 P1,Q1,P2,Q2を x1,x2に つ い て の 式 と す る 。 代数的な解が求められる。 P1,Q1,P2,Q2を x1,x2に つ い て の 式 と す る 。 数値的な解が求められる。 P1,Q1,P2,Q2を x1,x2に つ い て の 式 と す る 。 k桁 の 精 度 で 数 値 的 な 解 が 求 め ら れ る 。 P1,Q1を xに つ い て の 式 と す る 。 x=aを 初 期 値 と し て 数 値 解 を 探 す 。 Pを xに つ い て の 式 と す る 。 x=aを 初 期 値 と し て 極 小 値 を 探 す 。 % math In[1]:= Solve [ x^2 + x + 1 == 0, x] 1/3 2/3 Out[1]= {{x -> -(-1) }, {x -> (-1) }} In[2]:= NSolve [ x^2 + x + 1 == 0, x] Out[2]= {{x -> -0.5 - 0.866025 I}, {x -> -0.5 + 0.866025 I}} In[3]:= Solve [{x^2 + y^2 == 4, x + y == 1},{x,y}] 1 - Sqrt[7] 1 + Sqrt[7] Out[3]= {{x -> -----------, y -> -----------}, 2 2 > 1 + Sqrt[7] 1 - Sqrt[7] {x -> -----------, y -> -----------}} 2 2 In[4]:= NSolve [{x^2 + y^2 == 4, x + y == 1},{x,y}] Out[4]= {{x -> -0.822876, y -> 1.82288}, {x -> 1.82288, y -> -0.822876}} In[5]:= FindRoot [ Sin[x] == Cos[x],{ {x,0}] Out[5]= {x -> 0.785398} In[6]:= FindRoot [ Sin[x] == Cos[x], {x,Pi}] Out[6]= {x -> 3.92699} In[7]:= FindMinimum [x^3 - 5*x^2 - 2*x + 10, {x,0}] Out[7]= {-15.3778, {x -> 3.52259}} In[8]:= Quit - 14 - Mathematica 入 門 4.2 式の展開、因数分解、部分分数展開、簡約化 Expand[P] Factor[P] Apart[P] Simplify[式 ] 多項式Pを展開する。 多項式Pを因数分解する。 多項式Pを部分分数に展開する。 式を最小の要素(演算記号、かっこ、文字)で表現 する。 % math In[1]:= Expand [(x+y)^4] 4 Out[1]= x 3 2 + 4 x y + 6 x 2 y 3 + 4 x y 4 + y In[2]:= Factor [x^8 - 1] 2 4 Out[2]= (-1 + x) (1 + x) (1 + x ) (1 + x ) In[3]:= Factor [a^3 + b^3 + c^3 - 3*a*b*c] 2 Out[3]= (a + b + c) (a 2 - a b + b 2 - a c - b c + c ) In[4]:= Apart [1/(1-x^2)] -1 1 Out[4]= ---------- + --------2 (-1 + x) 2 (1 + x) In[5]:= Simplify [(a+b)*(a-b)*(a-b)*(a+b)] 2 Out[5]= (a - b) 2 (a + b) In[6]:= Simplify [Sin[x]*Cos[y]+Cos[x]*Sin[y]] Out[6]= Sin[x + y] In[7]:= Quit - 15 - Mathematica 入 門 4.3 級数、微分、微分方程式、定積分 Series[関 数 ,{x,a,n}] 関 数 を x=aの 近 傍 で n次 ま で べ き 級 数 展開する。 n階 導 関 数 を 求 め る 。 微分方程式を解く。 定積分を求める。 数値積分を求める。 D[関 数 ,{x,n}] DSolve[微 分 方 程 式 ,関 数 ,変 数 ] Integrate[関 数 ,{x,下 限 ,上 限 }] NIntegrate[関 数 ,{x,下 限 ,上 限 }] % math In[1]:= Series [1/(1-2*x),{x,0,6} }] 2 Out[1]= 1 + 2 x + 4 x 3 + 8 x 4 + 16 x 5 6 7 + 32 x + 64 x + O[x] 5 6 7 In[2]:= Series [1/(1-x-x^2),{x,0,6}] 2 Out[2]= 1 + x + 2 x 3 + 3 x 4 + 5 x + 8 x In[3]:= Series [Sin[x],{x,0,6}] 3 5 x x 7 Out[3]= x - -- + --- + O[x] 6 120 In[4]:= D [x^3,{x,1}] 2 Out[4]= 3 x In[5]:= D [x^3,{x,2}] Out[5]= 6 x In[6]:= D [Log[x],{x,1}] 1 Out[6]= x (続く) - 16 - + 13 x + O[x] Mathematica 入 門 In[7]:= DSolve [y'[x] == x^3,y[x],x] 4 x Out[7]= {{y[x] -> -- + C[1]}} 4 In[8]:= DSolve [y'[x] == Cos[x],y[x],x] Out[8]= {{y[x] -> C[1] + Sin[x]}} In[9]:= Integrate [Sqrt[1-x^2],{x,0,1}] Pi Out[9]= -4 In[10]:= NIntegrate [Sqrt[1-x^2],{x,0,1}] Out[10]= 0.785398 In[11]:= Quit - 17 - Mathematica 入 門 4.4 漸化式 Mathematicaに は 標 準 の 関 数 が 組 み 込 ま れ て い る が 、 パ ッ ケ ー ジ ( Mathematica 言語で書かれたプログラムファイルで、関数定義の集まりである)を読み込めば 機能を拡張できる。 RSolve[{初 期 値 ,漸 化 式 },関 数 ,変 数 ] 漸化式を初期値のもとで解く。 % math In[1]:= Needs["DiscreteMath`RSolve`"] In[2]:= RSolve[{f[1]==1,f[n]==f[n-1]+n},f[n],n] n (1 + n) Out[2]= {{f[n] -> ---------}} 2 In[3]:= RSolve[{f[1]==1,f[n]==2*f[n-1]+1},f[n],n] n Out[3]= {{f[n] -> If[n >= 1, -1 + 2 , 0]}} In[4]:= RSolve[{f[0]==1,f[n]==n*f[n-1]},f[n],n] Out[4]= {{f[n] -> n!}} In[5]:= RSolve[{f[0]==1,f[1]==1,f[n]==f[n-1]+f[n-2]},f[n],n] 1 + n 1 - Sqrt[5] n (1 + Sqrt[5]) (-----------) (-1 + Sqrt[5]) + -----------------2 n 2 Out[5]= {{f[n] -> --------------------------------------------------}} 2 Sqrt[5] In[6]:= RSolve[{f[0]==1,f[1]==(1-Sqrt[5])/2,f[n]==f[n-1]+f[n-2]},f[n],n] 1 Sqrt[5] n Out[6]= {{f[n] -> (- - -------) }} 2 2 In[7]:= Quit - 18 - Mathematica 入 門 5.リスト処理 5.1 リスト 数 、 変 数 、 式 な ど を コ ン マ ( ,) で 区 切 っ て 並 べ 、 { } で 囲 ん だ も の を リ ス ト と い う 。 た と え ば 、 {2,3,5,7,11,13}, {x,y,z,1,2,3}, {{1,2},W,{a,b}}。 Part[L,i] Length[L] Sort[L] リ ス ト Lの i番 目 の 要 素 。 L[[i]]と も 書 く 。 リ ス ト Lに 含 ま れ る 要 素 数 。 リストLの要素を標準的順序に並べる。 % math In[1]:= L = {11,22,33,44,55} Out[1]= {11, 22, 33, 44, 55} In[2]:= Part [L,3] Out[2]= 33 In[3]:= L[[3]] Out[3]= 33 In[4]:= Length [L] Out[4]= 5 In[5]:= Sort [{3,5,2,1,4}] Out[5]= {1, 2, 3, 4, 5} In[6]:= Sort [{c,e,b,a,d}] Out[6]= {a, b, c, d, e} In[7]:= Sort [{a,23,2.3,aa}] Out[7]= {2.3, 23, a, aa} In[8]:= Sort [{{2,3},3,{1,2,3},{2,4}}] Out[8]= {3, {2, 3}, {2, 4}, {1, 2, 3}} - 19 - Mathematica 入 門 Insert[L,x,n] Delete[L,n] First[L] Take[L,n] Rest[L] Join[L1,L2,… ] Union[L1,L2,… ] リ ス ト Lの 前 か ら n番 目 に 要 素 xを 挿 入 す る 。 リ ス ト Lの 前 か ら n番 目 の 要 素 を 削 除 す る 。 リ ス ト Lの 先 頭 要 素 。 リ ス ト Lの 前 か ら n番 目 の 要 素 を 取 り 出 し リ ス ト に する。 リ ス ト Lか ら 先 頭 要 素 を 除 い た 残 り の リ ス ト 。 リ ス ト L1,L2,… を こ の 順 に 結 合 す る 。 リ ス ト L1,L2,… を こ の 順 に 結 合 す る 。 た だ し 、 重 複する要素がある場合、1つにまとめ並べ替える。 In[9]:= M = {a,b,c,d,e} Out[9]= {a, b, c, d, e} In[10]:= Insert [M,f,1] Out[10]= {f, a, b, c, d, e} In[11]:= Delete [M,2] Out[11]= {a, c, d, e} In[12]:= First [{1,2,3}] Out[12]= 1 In[13]:= Take [{1,2,3},1] Out[13]= {1} In[14]:= Rest [{1,2,3}] Out[14]= {2, 3} In[15]:= Rest [{{1,2},3,4}] Out[15]= {3, 4} In[16]:= Join [{2,3,4},{1,2,3}] Out[16]= {2, 3, 4, 1, 2, 3} In[17]:= Union [{2,3,4},{1,2,3}] Out[17]= {1, 2, 3, 4} In[18]:= Quit - 20 - Mathematica 入 門 Flatten[L] Flatten[L,n] Table[式 ,{i,a,b,d}] Cases[L,形 式 ] Cases[L,形 式 /;条 件 ] リ ス ト Lの 入 れ 子 を 全 て 解 除 す る 。 リ ス ト Lの 入 れ 子 を 深 さ nま で 解 除 す る 。 iを aか ら bま で 増 分 dで 反 復 し 、 式 の 値 を リ ス ト に する。 リ ス ト Lの 中 で 形 式 に 合 う も の を 選 択 す る 。 形式には、 x_ 任 意 の も の ( 仮 に xと す る ) x_Integer 整 数 x_List リスト などがある。 形 式 /;条 件 は 、 条 件 を 満 た す 形 式 を 意 味 す る 。 % math In[1]:= Table [i^2, {i,1,9}] Out[1]= {1, 4, 9, 16, 25, 36, 49, 64, 81} In[2]:= Table [{i,i^2},{i,1,9}] Out[2]= {{1, 1}, {2, 4}, {3, 9}, {4, 16}, {5, 25}, {6, 36}, {7, 49}, > {8,64}, {9, 81}} In[3]:= L = Table [{i,j},{1 i,1,2},{j,1,3}] Out[3]= {{{1, 1}, {1, 2}, {1, 3}}, {{2, 1}, {2, 2}, {2, 3}}} In[4]:= Flatten [L,1] Out[4]= {{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}} In[5]:= Flatten [L,2] Out[5]= {1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 2, 3} In[6]:= Flatten [L] Out[6]:= {1, 1, 1, 2, 1, 3, 2, 1, 2, 2, 2, 3} In[7]:= M = Table [i,{i,1,10}] Out[7]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} In[8]:= Cases [M,x_/;Mod[x,2]==0] Out[8]= {2, 4, 6, 8, 10} In[9]:= Cases [{1,2,3.3,4,5.5},x_Integer] Out[9]= {1, 2, 4} In[10]:= Quit - 21 - Mathematica 入 門 5.2 素数 Prime[k] PrimeQ[数 ] GCD[i,j] k番 目 の 素 数 数が素数か否か判定する。 素 数 な ら True、 合 成 数 な ら Falseを 返 す 。 iとjの最大公約数 %math In[1]:= Prime[1] Out[1]= 2 In[2]:= Prime[10] Out[2]= 29 In[3]:= PrimeQ[11] Out[3]= True In[4]:= PrimeQ[11111] Out[4]= False In[5]:= GCD[123,45] Out[5]= 3 In[6]:= GCD[11,31] Out[6]= 1 In[7]:= Quit - 22 - Mathematica 入 門 5.3 集合 集合はリストで表される。 Union[L1,L2] Intersection[L1,L2] Complement[S,L] Outer[List,L1,L2] Permutations[L] リ ス ト L1と リ ス ト L2の 和 集 合 。 リ ス ト L1と リ ス ト L2の 共 通 部 分 。 全 体 集 合 Sに 関 す る 集 合 Lの 補 集 合 。 リ ス ト L1と リ ス ト L2の 直 積 。 リ ス ト Lの 要 素 の す べ て の 順 列 % math In[1]:= Union[{1,2,3},{3,4,5}] Out[1]= {1, 2, 3, 4, 5} In[2]:= Intersection[{1,2,3,4},{3,4,5,6}] Out[2]= {3, 4} In[3]:= Complement[{1,2,3,4,5,6,7,8,9},{2,4,6,8}] Out[3]= {1, 3, 5, 7, 9} In[4]:= Outer[List,{a,b},{1,2}] Out[4]= {{{a, 1}, {a, 2}}, {{b, 1}, {b, 2}}} In[5]:= Permutations[{1,2,3}] Out[6]= {{1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1}} In[7]:= Quit - 23 - Mathematica 入 門 [例5.1]素数に関する問題 % math 1以上30以下の素数を求める。 In[1]:= Cases[Table[i,{i,1,30}], x_/; PrimeQ[x]] Out[1]= {2, 3, 5, 7, 11, 13, 17, 19, 23, 29} 1≦ x≦ 10で 、 x 2 +x+41 が 素 数 と な る xを 求 め る 。 In[2]:= Cases[Table[i,{i,1,10}], x_/; PrimeQ[x^2+x+41]] Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 1≦ x≦ 100で 、 x 2 +x+41が 素 数 と な ら な い xを 求 め る 。 In[3]:= Cases[Table[i,{i,1,100}], x_/; !PrimeQ[x^2+x+41]] Out[3]= {40, 41, 44, 49, 56, 65, 76, 81, 82, 84, 87, 89, 91, 96} 1≦ x≦ 100で 、 x 2 -79x+1601が 素 数 と な ら な い xを 求 め る 。 In[4]:= Cases[Table[i,{i,1,100}], x_/; !PrimeQ[x^2-79*x+1601]] Out[4]= {80, 81, 84, 89, 96} In[5]:= Quit % - 24 - Mathematica 入 門 [例5.2]ピタゴラス数 a,b,cを 正 整 数 と す る 。 a,b,cが 、 a 2 +b 2 =c 2 (a≦ b≦ c)を 満 た す と き 、 ピ タ ゴ ラ ス 数 と い う 。 正 整 数 nが 与 え ら れ た と き 、 c 2 ≦ nを 満 た す ピ タ ゴ ラ ス 数 を 求 め よ 。 ●方法1 % math n=900の 場 合 。 3 つ 組 (a,b,c)の 集 合 L1を 求 め る 。 た だ し 、 1≦ a≦ 30,1≦ b≦ 30,1≦ c≦ 30。 In[1]:= L1=Flatten[Table[{i,j,k},{i,1,30},{j,1,30},{k,1,30}],2]; 集 合 L1の 中 で 、 条 件 : a 2 +b 2 =c 2 を 満 た す 3 つ 組 を 求 め る 。 In[2]:= Cases[L1, x_/; x[[1]]^2+x[[2]]^2==x[[3]]^2] Out[2]= {{3, 4, 5}, {4, 3, 5}, {5, 12, 13}, {6, 8, 10}, {7, 24, 25}, > {8, 6, 10}, {8, 15, 17}, {9, 12, 15}, {10, 24, 26}, {12, 5, 13}, > {12, 9, 15}, {12, 16, 20}, {15, 8, 17}, {15, 20, 25}, {16, 12, 20}, > {18, 24, 30}, {20, 15, 25}, {20, 21, 29}, {21, 20, 29}, {24, 7, 25}, > {24, 10, 26}, {24, 18, 30}} 集 合 L1の 中 で 、 条 件 : a 2 +b 2 =c 2 を 満 た す 3 つ 組 の 集 合 L2を 求 め る 。 In[3]:= L2= Cases[L1, x_/; x[[1]]^2+x[[2]]^2==x[[3]]^2]; 集 合 L2の 中 で 、 条 件 : (a≦ b≦ c)を 満 た す 3 つ 組 の 集 合 を 求 め る 。 In[4]:= Cases[L2, x_/; (x[[1]]<=x[[2]])&&(x[[2]]<=x[[3]])] Out[4]= {{3, 4, 5}, {5, 12, 13}, {6, 8, 10}, {7, 24, 25}, {8, 15, 17}, > {9, 12, 15}, {10, 24, 26}, {12, 16, 20}, {15, 20, 25}, {18, 24, 30}, > {20, 21, 29}} In[5]:= Quit - 25 - Mathematica 入 門 ●方法2 (* pita1.m *) pita1[n_] := ( count = 0; For[c=1, c*c<=n, c++, { For[a=1, 2*a*a<=c*c, a++ { For[b=a, b<=c, b++, { If[a^2+b^2==c^2,{ count++; }] }]; }]; }]; Print["n=",n," count=",count]; ) 実行結果 % math In[1]:= Get["pita1.m] "] In[2]:= pita1[100] n=100 count=2 In[3]:= pita1[1000] n=1000 count=11 In[4]:= pita1[10000] n=10000 count=52 In[5]:= Timing[pita1[10000]] n=10000 count=52 Out[5]= {15.9327 Second, Null} In[6]:= Quit - 26 - Mathematica 入 門 [例5.3]リスト処理 与えられたリストを反転する関数を定義せよ。 {a, b, c, d} ---> {d, c, b, a} ●方法1 (* list11.m *) f[L_] := ( If[ L == {}, {}, Join[f[Rest[L]],Take[L,1]] ] ) 実行結果 % math In[1]:= Get["list11.m"] In[2]:= f[{a}] Out[2]= {a} In[3]:= f[{a,b}] Out[3]= {b, a} In[4]:= f[{a,b,c}] Out[4]= {c, b, a} In[5]:= f[{a,b,c,d}] Out[5]= {d, c, b, a} In[6]:= Quit - 27 - Mathematica 入 門 ●方法2 (* list12.m *) g[L_] := Module[{W}, If[ L == {}, {}, { W = {}; For[i=1, i<=Length[L], i++, { W = Insert[W,Part[L,i],1]; }]; } ]; Return[W]; ] 実行結果 % math In[1]:= Get["list12.m"] In[2]:= g[{a}] Out[2]= {a} In[3]:= g[{a,b}] Out[3]= {b, a} In[4]:= g[{a,b,c}] Out[4]= {c, b, a} In[5]:= Quit - 28 - Mathematica 入 門 6.グラフィックス 6.1 関数のグラフ Plot[f[x],{x,a,b}] Plot[{f[x],g[x]},{x,a,b}] F=Plot[f[x],{x,a,b}]; Show[F] ParametricPlot[{x[t],y[t]}, {t,t0,t1}] 関 数 f[x]を 区 間 a≦ x≦ bで 描 く 。 関 数 f[x],g[x]を 区 間 a≦ x≦ bで 描 く 。 区 間 a≦ x≦ bの 関 数 f[x]を Fに 保 存 。 Fを 表 示 。 パ ラ メ ー タ 表 示 。 t0≦ t≦ t1。 ( 注 意 ) グ ラ フ を 新 た な ウ ィ ン ド ウ 内 に 表 示 す る に は 、 mathematicaが Motif graphicsと し て 起 動 さ れ て い る 必 要 が あ る 。 hcsを リ モ ー ト ホ ス ト と し て 使 う と き は 、 hcs% setenv DISPLAY ロ ー カ ル ホ ス ト :0 を実行しておくこと。 % math Mathematica 3.0 for Digital Unix Copyright 1988-97 Wolfram Research, Inc. License valid through 24 May 2003. -- Motif graphics initialized -- 6.2 データのグラフ ListPlot[リ ス ト ] ListPlot[リ ス ト , PlotJoined->True] 6.3 リストをプロットする。 リストをプロットし折れ線で結ぶ。 データファイルの読込み ReadList["フ ァ イ ル 名 ", ファイルからデータを読込み、リスト Number] に変換する。 ReadList["フ ァ イ ル 名 ", ファイルからデータを読込み、行ごと Number, にリストに変換する。 RecordLists->True] - 29 - Mathematica 入 門 [例6.1]グラフィックスの例 % math Mathematica 3.0 for Digital Unix Copyright 1988-97 Wolfram Research, Inc. License valid through 24 May 2003. -- Motif graphics initialized -sin関 数 の プ ロ ッ ト In[1]:= Plot[Sin[x],{x,0,2Pi}] Out[1]= -Graphics円のプロット(パラメトリック) In[2]:= ParametricPlot[{Cos[x],Sin[x]},{x,0,2Pi}] Out[2]= -GraphicsIn[3]:= ListPlot[{1.0,1.2,1.6,2.2,3.0,4.0,5.2,6.6}] Out[3]= -GraphicsIn[4]:= ListPlot[{1.0,1.2,1.6,2.2,3.0,4.0,5.2,6.6},PlotJoined->True] Out[4]= -GraphicsIn[5]:= !!data 1.0 1.2 1.6 2.2 3.0 4.0 5.2 6.6 ファイルから読込み In[5]:= ReadList["data",Number] Out[5]= {1., 1.2, 1.6, 2.2, 3., 4., 5.2, 6.6} In[6]:= ReadList["data",Number,RecordLists->True] Out[6]= {{1., 1.2}, {1.6, 2.2}, {3., 4.}, {5.2, 6.6}} In[7]:= Quit - 30 - Mathematica 入 門 7.課題 7.1 課題1 フィボナッチ数について考察する。 f(n) = f(n-1) + f(n-2) (n≧ 2) f(0) = 1, f(1) = 1 a = (1 + sqrt(5))/2, b = (1 - sqrt(5))/2 と す る 。 f(0) = 1, f(1) = 1 の 場 合 の 一 般 項 f(n) = (a^(n+1) - b^(n+1))/sqrt(5) ( 1 ) f(0) = 1, f(1) = b の 場 合 の 一 般 項 f(n) = b^n ( 1 ) の 場 合 、 bの 有 効 桁 数 を 6 桁 程 度 と す る と 、 数 値 計 算 の 結 果 と 理 論 結 果 と が 異なることを説明せよ。 =====厳 密 解 ===== =====数 値 解 ===== f(10)=0.0081306187557833487477241098899 f(10)=0.00813062 f(20)=0.000066106961351895970065516458134 f(20)=0.000066107 -7 -7 f(30)=5.3749049985557033441446053199 10 f(30)=5.37445 10 -9 -9 f(40)=4.3701303391810674621873016337 10 f(40)=-1.18878 10 -11 -7 f(50)=3.5531863700963434577568956788 10 f(50)=-6.83665 10 -13 f(60)=2.88896037434990853680051125445 10 f(60)=-0.0000840896 -15 f(70)=2.34890354044042507733164210695 10 f(70)=-0.0103423 -17 f(80)=1.90980391814308317408537097662 10 f(80)=-1.27202 -19 f(90)=1.55278875567226793364194299097 10 f(90)=-156.449 -21 f(100)=1.26251333806384294218902270604 10 f(100)=-19241.9 - 31 - Mathematica 入 門 (* m111.m *) f[n_] := ( Print["=====厳 密 解 ====="]; f0=1; f1=(1-Sqrt[5])/2; For[i=2,i<=n,i++,{ f2=f1+f0; If[Mod[i,10]==0, Print["f(",i,")=",N[f2,30]]]; f0 = f1; f1 = f2; }]; Print["=====数 値 解 ====="]; f0=1; f1=(1-Sqrt[5])/2; f1 = N[f1]; For[i=2,i<=n,i++,{ f2=f1+f0; If[Mod[i,10]==0, Print["f(",i,")=",f2]]; f0 = f1; f1 = f2; }]; ) - 32 - Mathematica 入 門 ●誤差発生検証 フ ァ イ ル ( m112.m) n:=100; b1:=(1-Sqrt[5])/2 - 0.1^15; Print["b1=(1-Sqrt[5])/2 - 0.1^15"]; h0:=1; h1:=b1; Do[h2=h1+h0;h0=h1; h1=h2,{i,2,n}] Print["h(",n,")=",h2] Print[" "] b2:=(1-Sqrt[5])/2 - 0.1^16; Print["b2=(1-Sqrt[5])/2 - 0.1^16"]; h0:=1; h1:=b2; Do[h2=h1+h0;h0=h1; h1=h2,{i,2,n}] Print["h(",n,")=",h2] Print[" "] b3:=(1-Sqrt[5])/2 - 0.1^17; Print["b3=(1-Sqrt[5])/2 - 0.1^17"]; h0:=1; h1:=b3; Do[h2=h1+h0;h0=h1; h1=h2,{i,2,n}] Print["h(",n,")=",h2] Print[" "] b4:=(1-Sqrt[5])/2 - 0.1^18; Print["b4=(1-Sqrt[5])/2 - 0.1^18"]; h0:=1; h1:=b4; Do[h2=h1+h0;h0=h1; h1=h2,{i,2,n}] Print["h(",n,")=",h2] Print[" "] b5:=(1-Sqrt[5])/2 - 0.1^19; Print["b5=(1-Sqrt[5])/2 - 0.1^19"]; h0:=1; h1:=b5; Do[h2=h1+h0;h0=h1; h1=h2,{i,2,n}] Print["h(",n,")=",h2] Print[" "] - 33 - Mathematica 入 門 % math In[1]:= Get["m112.m"] b1=(1-Sqrt[5])/2 - 0.1^15 h(100)=-373184. b2=(1-Sqrt[5])/2 - 0.1^16 h(100)=-58568.8 b3=(1-Sqrt[5])/2 - 0.1^17 h(100)=-19241.9 b4=(1-Sqrt[5])/2 - 0.1^18 h(100)=-19241.9 b5=(1-Sqrt[5])/2 - 0.1^19 h(100)=-19241.9 In[2]:= Quit - 34 - Mathematica 入 門 7.2 課題2 ピ タ ゴ ラ ス 数 : a 2 +b 2 =c 2 (a≦ b≦ c) n 10 2 10 3 10 4 10 5 10 6 で 、 c 2 ≦ nを 満 た す 個 数 を 効 率 よ く 求 め よ 。 個数 2 11 52 220 881 (* pita2.m *) pita2[n_] := ( c = 1; count = 0; For[c=1, c*c<=n, c++, { a = 1; b = c; While[ a<=b, { w = a*a + b*b - c*c; If[ w>0, b-- ]; If[ w == 0, count++ ]; a++; }]; }]; Print["n=",n," count=",count]; ) % math In[1]:= Get["pita2.m"] In[2]:= pita2[10000] n=10000 count=52 In[3]:= pita2[100000] n=100000 count=220 In[4]:= pita2[1000000] n=1000000 count=881 In[5]:= Timing[pita2[10000]] n=10000 count=52 Out[5]= {0.366652 Second, Null} In[6]:= Quit - 35 - Mathematica 入 門 7.3 課題3 ( 1 ) m,nが 与 え ら れ た と き 、 1/a+1/b=m/n (a≦ b)を 満 た す a,bの 組 を すべて求めよ。 実行結果 1/3 + 1/6 1/4 + 1/4 m=1 n=2 c=2 (* << egypt21.m >> *) (* 1/a + 1/b = m/n *) m = 1; n = 2; count = 0; a = Floor[n/m] + 1; a1 = Floor[2*n/m]; While[ a <= a1, { m1 = m*a-n; n1 = a*n; If[ Mod[n1,m1] == 0, { count++; Print["1/",a," + 1/",n1/m1]; }]; a++; }]; Print["m=",m," n=",n," c=",count]; - 36 - Mathematica 入 門 ( 2 ) 2≦ n≦ 8,1≦ m≦ n-1の 組 (m,n)に つ い て 、 1/a+1/b=m/n (a≦ b)を 満 た す a,bの 個数を求めよ。 実行結果 m=1 m=1 m=2 m=1 m=2 m=3 m=1 m=2 m=3 m=4 m=1 m=2 m=3 m=4 m=5 n=2 n=3 n=3 n=4 n=4 n=4 n=5 n=5 n=5 n=5 n=6 n=6 n=6 n=6 n=6 count=2 count=2 count=2 count=3 count=2 count=1 count=2 count=2 count=1 count=0 count=5 count=2 count=2 count=2 count=1 m=1 m=2 m=3 m=4 m=5 m=6 m=1 m=2 m=3 m=4 m=5 m=6 m=7 n=7 n=7 n=7 n=7 n=7 n=7 n=8 n=8 n=8 n=8 n=8 n=8 n=8 count=2 count=2 count=0 count=1 count=0 count=0 count=4 count=3 count=2 count=2 count=1 count=1 count=0 (* << egypt22.m >> *) (* 1/a + 1/b = m/n *) n= 2; nmax = 8; While[ n <= nmax, { m = 1; While[ m < n, { count = 0; a = Floor[n/m] + 1; a1 = Floor[2*n/m]; While[ a <= a1, { m1 = m*a-n; n1 = a*n; If[ Mod[n1,m1] == 0, { count++; }]; a++; }]; Print["m=",m," n=",n," count=",count]; m++; }]; n++; }]; - 37 - Mathematica 入 門 ( 3 ) 2≦ n≦ 20,1≦ m≦ n-1の 分 数 m/nに つ い て 、 3 個 以 下 の 単 位 分 数 で 表 せ な い ものを求めよ。 実行結果 8/11,9/11,10/11, 12/13, 13/14, 15/16, 8/17,14/17,15/17,16/17, 9/19,14/19,15/19,17/19,18/19 ( 4 ) 2≦ n≦ 30,1≦ m≦ n-1の 分 数 m/nに つ い て 、 4 個 以 下 の 単 位 分 数 で 表 せ な い ものを求めよ。 実行結果 16/17, 21/23,22/23, 27/29,28/29 ( 5 ) 2≦ n≦ 100,1≦ m≦ n-1の 分 数 m/nに つ い て 、 5 個 以 下 の 単 位 分 数 で 表 せ な い ものを求めよ。 実行結果 77/79 - 38 - Mathematica 入 門 7.4 課題4 次の曲線を表示せよ。 (1)アステロイド 定義 x = a*cos(t)**3, y = a*sin(t)**3 (2)リサージュ図形 定義 x = cos(a*t), y = sin(b*t) (3)平面曲線1 定義 x = (a-b)*cos(t) + b*cos((a-b)*t/b) y = (a-b)*sin(t) + b*sin((a-b)*t/b) (4)平面曲線2 定義 x = (a+b)*cos(t) - b*cos((a+b)*t/b) y = (a+b)*sin(t) - b*sin((a+b)*t/b) (5)平面曲線3 定義 r = a*sin(t/n) n:正 整 数 x = a*sin(t/n)*cos(t) y = a*sin(t/n)*sin(t) (6)円の伸開線 定義 x = a*cos(t) + a*t*sin(t) y = a*sin(t) - a*t*cos(t) 円の伸開線は、円柱に巻いた糸をたるませないでほどいて いくとき糸の先端が描く曲線。 (7)正葉形 定義 r = a*sin(n*t) nが 偶 数 の と き 2n個 の 葉 を 持 ち 、 nが 奇 数 の と き n個 の 葉 を 持 つ x = r*cos(t) = a*sin(n*t)*cos(t) y = r*sin(t) = a*sin(n*t)*sin(t) (8)リマソンのか牛線 定義 r = a*cos(t) + b x = (a*cos(t)+b)*cos(t) y = (a*cos(t)+b)*sin(t) - 39 - Mathematica 入 門 (9)コンコイド 定義 r = a/cos(t) + b x = (a/cos(t)+b)*cos(t) y = (a/cos(t)+b)*sin(t) (10)対数らせん 定義 r = a**t (a>1) x = (a**t)*cos(t) y = (a**t)*sin(t) (11)アルキメデスのらせん 定義 r = a*t (a>0) x = a*t*cos(t) y = a*t*sin(t) (12)双曲らせん 定義 r*t = a (a>0) x = (a/t)*cos(t) y = (a/t)*sin(t) (13)リチュウス 定義 (r**2)*t = a (a>0) x = sqrt(a/t)*cos(t) y = sqrt(a/t)*sin(t) (14)デカルトの葉形 定義 x = 3*a*t/(1+t**3) y = 3*a*t**2/(1+t**3) (a>0) (15)サイクロイド 定義 x = a*(t-sin(t)) y = a*(1-cos(t)) x軸 上 を 転 が る 半 径 aの 円 周 上 に 固 定 さ れ た 点 の 描 く 曲 線 。 (16)簡単なフーリエ級数 定義 y = (2/pi)(sin(x)+sin(3*x)/3+sin(5*x)/5+・ ・ ・ ) - 40 -
© Copyright 2024 Paperzz