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

fsolve( 方程式 , 解く変数 ) : 近似解を求め

る。  

代数方程式を解く

•  順に入力して確かめてみよう。  

  (例)代数方程式を解く(1)

入力 説明

eq1  :=  3*x^2  +  8*x  +  4;  

solve(eq1,  x);   eq1の厳密解を求める

fsolve(eq1,  x);   eq1の近似解を求める

式に小数点が含まれる場合、solveコマンドでも近似解を返す eq2  :=  3*x^2  +  8*x  +  4.0;  

solve(eq2,  x); eq2の近似解を求める

(例)代数方程式を解く(2)

入力 説明

eq3  :=  4*x  +  2*y  =  4;  

eq4  :=  2*x  +  3*y  =  3;  

このような連立方程式も   解くことができる。

solve({eq3,  eq4},  {x,  y});   引数(括弧の中身)を集合{}を使

用して入力する。

fsolve({eq3,  eq4},  {x,  y});  

解に複素数が含まれる場合、  

3つ目の引数にcomplexと指定する。

eq5  :=  2*x^2  +  1;  

fsolve(eq5,  x,  complex);

•  漸化式を解くには rsolve コマンドを使用 する。  rsolve( 漸化式 ,   初期条件 )  

漸化式を解く(1)

入力 説明

eqs1  :=  {a(n+1)=a(n)+4,  a(0)=1};   等差数列の漸化式を解く。

rsolve(eqs1,  a(n));  

eqs2  :=  {a(n+1)=p*a(n)+q};   漸化式に変数が含まれて

いる場合も解ける。

rsolve(eqs2,  a(n));

•  フィボナッチ数列を解いてみよう。  

参考( hnp://ja.wikipedia.org/wiki/ フィボナッチ数)  

漸化式を解く(2)

F

0

= 1 F

1

= 1

F

n+2

= F

n

+ F

n+1

( n ≥ 0 )

"

# $

% $

漸化式を解く(3)

入力

fibo  :=  {f(n)=f(n-­‐1)+f(n-­‐2),  f(0)=1,  f(1)=1};  

rsolve(fibo,  f(n));  

•  Maple では2次元、3次元のグラフを 描くことができる。  

 

plot   : 二次元プロットを作成する。  

plot3d   : 三次元プロットを作成する。  

グラフを描く

•   二次元のグラフを描く  

plot( 関数 ,   変数名 = 下限 .. 上限 )  

•  複数の関数を重ね書きする  

plot([ 関数 1,   関数 2],   変数名 = 下限 .. 上限 )    

※標準では相対軸でのプロットを作成する。  

絶対軸として確認する場合はオプションを追加す る。  

plot( 関数 ,   変数 = 下限 .. 上限 ,  scaling=constrained);    

   

  2次元プロット(1)

•  媒介変数のプロットを作成する  

plot([ 横軸の関数 ,   縦軸の関数 ,   変数名 =

下限 .. 上限 )  

•   座標点のプロットを作成する  

座標点のリスト :=  [[x1,y1],  [x2,y2],[x3,y3]];  

plot( 座標点のリスト );  

 

  2次元プロット(2)

•  入力して確認してみよう  

  (例)2次元プロット

入力 説明

plot(sin(x),  x=0..10);   y  =  sin(x)  (0≦x≦10)  の   グラフを描く

plot([sin(x),  sin(x)^2],  x=0..10);   y  =  sin(x)とy  =  sin(x)^2の   グラフを重ね書きする

plot([t,  sin(t),  t=0..10]); x  =  t  (0≦t≦10),  y  =  sin(t)の   グラフを描く

points  :=  [[1,3],  [2,4],  [3,7],  [4,5]];  

plot(points);

座標点のリストを作成   座標点のグラフを描く

•  三次元のグラフを描く  

plot3d( 関数 ,   横軸の範囲 ,   縦軸の範囲 )  

•  複数の関数を重ね書きする  

plot([ 関数 1,   関数 2], 横軸の範囲 ,   縦軸の 範囲 )  

 

  3次元プロット(1)

•  重ね書きしたプロットの色を変更する   plot([ 関数 1,   関数 2], 横軸の範囲 ,   縦軸の

範囲 ,  color=[ 色 1,   色 2])  

•   媒介変数のプロットを作成する  

plot3d([ 横軸の関数 ,   縦軸の関数 ,   高さの

関数 ],   変数 1 の範囲 ,   変数 2 の範囲 )  

  3次元プロット(2)

•  入力して確認してみよう  

  (例)3次元プロット

入力 説明

plot3d(sin(x)*cos(y),  x=0..10,  

y=0..10);   sin(x)*cos(y)の  

グラフを描く plot3d([sin(x)*y,  x+cos(y)],    

x=0..3,  y=0..3);   sin(x)*y  と  x*cos(y)の   グラフを重ね書きする plot3d([sin(x)*y,  x+cos(y)],    

x=0..3,  y=0..3,  color=[red,  blue]); sin(x)*yを赤、  

x*cos(y)を青で描く   plot3d([t,  s,  sin(t)*cos(s)],    

t=0..8,  s=0..2); x  =  t,  y  =  s,  z  =  sin(t)*cos(s)   のグラフを描く

•  グラフをクリックするとグラフオプションを 変更するメニューバーが表示される。  

plot    

3dplot    

 

色々と変更してみよう。  

  グラフのオプション

•  微分するには、 diff コマンドを使用する。  

diff( 数式 ,   変数 ) : 指定した変数で微分す る。  

Diff( 数式 ,   変数 ) : 微分を計算しない数式 の形式のまま扱う。このとき、 value (変数)

で解を求めることが出来る。  

微分(1)

•  複数回微分する場合や複数の変数で微 分する場合は、変数をカンマで区切って 追加する。  

 

diff( 数式 ,   変数 1,   変数 1) : 指定した変数

で2階微分する。  

diff( 数式 ,   変数 1,   変数 2) : 変数 1 と変数 2 で微分する。  

微分(2)

•  区分関数の微分をすることができる。  

変数 A  =  piecewise( 区間 1,   値 1or 関数 1,   区

間 2,   値 2or 関数 2) : 区分関数を定義する。  

(※最後の値または関数の区間を指定しなかった場合、

otherwise(前の区間以外)として扱われる)  

diff( 変数 A,   変数 x) : 区分関数の変数 A を

変数 x で微分する  

微分(3)

  (例)微分

入力 説明

diff(x^2,  x);   x^2をxで微分する

diff(sin(x)*x,  x);   sin(x)*xをxで微分する

diff(ln(x),  x,  x); log(x)をxで2階微分する

diff(sin(x*y),  x,  y); sin(x*y)をxとyで微分する

peq  :=  piecewise(x<0,  sin(x),  cos(x));  

diff(peq,  x); 区分関数peqを定義  

区分関数peqをxで微分する deq  :=  Diff(x^2+x,  x);  

value(deq);  

微分を計算しない形式で表示   deqの解を求める

•   積分するには定積分、不定積分ともに int コ マンドを使用する。  

•  Maple の不定積分では、任意定数は解に含

まれない。  

int( 数式 ,   変数 ) : 指定した変数で不定積分を 行う。  

int( 数式 ,   変数  =   下限 .. 上限 ) : 指定した変数

と区間で定積分を行う。  

積分(1)

•   複数回積分する場合は int コマンドをさらに 入力する必要がある。(微分の diff とは違う ので注意!)  

int(int( 数式 ,   変数 1),   変数 1) : 指定した変数で

2回積分する。  

Int( 数式 ,   変数 ) : 積分を計算しない数式の形 式のまま扱う。微分同様、 value (変数)で解を 求めることが出来る。  

 

積分(2)

•  微分同様、区分関数の積分をすること ができる。  

変数 A  =  piecewise( 区間 1,   値 1or 関数 1,   区

間 2,   値 2or 関数 2) : 区分関数を定義する。  

 

int( 変数 A,   変数 x) : 区分関数の変数 A を

変数 x で積分する  

積分(3)

(例)積分(1)

入力 説明

int(x^2,  x);   x^2を積分する(不定積分)

int(x^2,  x=1..3);   x^2を1≦x≦3の区間で  

積分する(定積分)

int(x^2,  x=a..b); 積分範囲に変数を  

指定することもできる peq  :=  piecewise(x<0,  sin(x),  cos(x));  

int(peq,  x);

区分関数peqを定義  

区分関数peqを積分する

  (例)積分(2)

入力 説明

deq  :=  Int(x^2+x,  x);  

value(deq);  

積分を計算しない形式で表示 deqの解を求める

int(ln(x),  x);   log(x)の不定積分

int(int(ln(x),  x),  x);   log(x)をさらに積分する

•  極限を行うには、 limit コマンドを使用す る。  

limit( 数式 ,   変数 = 値 ,   オプション ) :  ( 変数 ) が ( 値 ) に近づくときの ( 数式 ) の極限値を計 算する。 (※無限大は infinity と記述する)  

オプションに right または ler を指定すること で右極限、左極限を求めることができる。  

極限

•  入力して確認してみよう  

(例)極限

入力 説明

limit(sin(x)/x,  x=0);  

 

eq  :=  (2*x^2+x-­‐3)/(x^2-­‐2*x+1);  

limit(eq,  x=infinity);  

limit(1/x,  x=0,  right); 右極限を求める

limit(1/x,  x=0,  ler); 左極限を求める

x0

lim

sin(xx)

x→∞

lim

2x

2 + x 3 x2 2x +1

•  級数展開するには series コマンドを使用 する。  

series( 数式 ,   変数 = 展開点 ) :  6 次までの多

項式に級数展開する。  

series( 数式 ,   変数 = 展開点 ,   次数 ) : 指定し た次数まで展開する  

級数展開(1)

(例)級数展開

入力 説明

eq1  :=  series(sin(x),  x=0);   sin(x)を級数展開

eq2  :=  series(sin(x),  x=0,  8);   8次までの多項式に級数展開

 ↓級数展開した結果のグラフを作成する↓  

peq1  :=  convert(eq1,  polynom); plotの前にconvertで剰余項を 取り除く必要がある

plot(peq1,  x=-­‐4..4); plotする

•  数値積分とは・・・与えられた関数の定 積分の値を数値的に求める。  

evalf(Int( 数式 ,   範囲 )) : 数値積分を行う    

その他、様々な数値積分の手法を指定す ることができる。  

数値積分

(例)数値積分

入力 説明

evalf(Int(sin(x),  x=0..1));   sin(x)の0≦x≦1の範囲の積分 を数値的に求める

evalf(Int(eq1,  x=0..1,  digits=20,   method=_Dexp));  

指数関数法

evalf(Int(eq1,  x=0..1,  digits=20,   method=_Gquad));

ガウス求積法

evalf(Int(eq1,  x=0..1,  digits=20,   method=_NCrule));

ニュートン・コーツ法

•  常微分方程式を入力するには diff   コマ ンドを使用する。  

dsolve( 微分方程式 ,   求める関数 ) : 微分

方程式を解く    

常微分方程式

入力 説明

deq  :=  diff(f(x),  x);  

 

       と入力する

dsolve(deq,  f(x));   f(x)を求める  

d

dx f ( x)

•   微分方程式の初期条件等の条件を指定し

ない場合、任意定数を含む一般解を求める。  

•   必要な条件を定義することで任意定数を含 まない一般解を求めることができる。  

dsolve({ 微分方程式 ,   初期条件 },   求める関数 ) : 

初期条件を定義して任意定数を含まない一般 解を求める。  

常微分方程式の一般解

  (例)常微分方程式の一般解

入力 説明

deq  :=  diff(f(x),  x)  =  x*f(x);   微分方程式を定義する

ini  :=  f(0)  =  1;   初期条件iniを定義する

sol1  :=  dsolve({deq,  ini},  f(x)); 初期条件を使用して   微分方程式を解く

sol2  :=  dsolve({deq,  ini},  numeric); numericオプションを指定すると

数値解を求めることができる

sol2(1.5); 適当な値を入力して  

解を確認してみる

•  偏微分方程式を入力するには、常微分 方程式同様 diff   コマンドを使用する。  

pdsolve( 微分方程式 ,   求める関数 ) : 偏微

分方程式を解く    

偏微分方程式

入力 説明

pdeq  :=  diff(f(x,y),  x);  

 

        を入力

pdsolve(pdeq,  f(x,y));   f(x,y)を求める  

x f ( x , y)

•  偏微分方程式は pdsolve   コマンドで求めること ができる。  

•   変数分離のヒントを与えることで他の解を求め ることもできる。  

•  build オプションで解を組み立てた形式で求める  

pdsolve( 微分方程式 ,   求める関数 ,   ヒント ,  build)  

  : 偏微分方程式を解く  

偏微分方程式の一般解

  (例)偏微分方程式の一般解

入力 説明

pdeq1  :=  diff(f(x,y),  x)  =  4*diff(f(x,y),  y);   偏微分方程式を定義 する  

 

pdsolve(pdeq1,  f(x,y));   偏微分方程式を解く

pdsolve(pdeq1,  f(x,y),  HINT=g(x)+h(y),  build); 変数分離のヒントを  

与えて解く  

x f ( x, y) = 4 ∂

y f ( x , y)

  (例)偏微分方程式の数値解

入力 説明

pdeq2  :=  diff(f(x,t),  x)  =  -­‐0.3*diff(f(x,t),  t);   偏微分方程式を定義 ini2  :=  {f(x,0)=sin(x),  f(0,t)=-­‐sin(t)};   x,tの初期条件を定義 pds1  :=  pdsolve(pdeq2,  ini2,  

numeric,  vme=t,  range=0..1);

numericオプションを指定して実行

(モジュール形式で出力)

p1:=pds1:-­‐plot(t=0,  color=red):  

p2:=pds1:-­‐plot(t=1,color=blue):  

p3:=pds1:-­‐plot(t=2,color=green):  

plots[display](p1,  p2,  p3);    

tが変化するときの   2次元プロットを作成

pds1:-­‐plot3d(t=0..1,  axes=boxed);   3次元プロットを作成

関連したドキュメント