Mapleの基本的な使い方
担当
:
荻田 武史
目次
1. 入力方法 ... p.4 2. よく使う演算 ... p.10 3. 式に値を代入 ... p.20 4. 色々なデータ型(リスト・ベクトル等) ... p.32 5. 式操作(展開・因数分解等) ... p.43 6. 代数方程式 ... p.47 7. グラフを描く ... p.53 8. 微分 ... p.61 9. 積分 ... p.65 10. 極限 ... p.70 11. 常微分方程式 ... p.76 12. 偏微分方程式 ... p.79 13. LaTeX形式への変換 ... p.83Mapleとは?
• 数式処理や数値計算、グラフ作成な
どが出来るソフトウェア。
•
Mapleの入力方法は2種類。
– テキスト入力:テキスト形式で入力。
– 数式入力:数式の形を組み立てながら
入力。
• テキストと
Mathのボタンで入力方法
の切り替えができる。
入力方法(2)
←
ボタン
→
• 行の終わりに
;(セミコロン)
を付ける
と、その行を実行し結果を出力する。
• 行の終わりに
:(コロン)
を付けると、
その行を実行し結果を出力しない。
入力方法(3)
入力方法(4)
セミコロンをつけると
結果が表示される
コロンをつけると
結果が表示されない
• 作業した内容をファイルに「保存」す
るには
…
– メニューバーの
「ファイル」
→
「ワーク
シートとして保存」(新規保存)
• ファイルを「開く」ときは
…
– メニューバーの
「ファイル」
→
「開く」
ファイルの「保存」と「開く」
• 入力例を実際に入力してみよう。
四則演算
シンボル
説明
入力例
出力例
+
足し算
1 + 3; 4-‐
引き算
1 -‐ 3; -‐2/
割り算
150 / 3; 7 / 3; 7/3 50*
かけ算
2 * 510; 1020よく使う演算
シンボル 説明 入力例 出力例 ^ べき乗 2^3 8 sqrt 平方根 sqrt(2) evalf 浮動小数点(10進数) で表示 evalf(7/3) 2.333333333 I (大文字のi) 虚数単位 2 + 3*I; (2 * I)^2; 2+3 I -‐4 Pi 円周率π evalf(Pi) 3.141592654 % %% 前の出力を使う 前の前の出力を使う %; %%%; 2• 変数・・・扱われるデータを一定期間記
憶し、必要なときに利用出来るように
データに固有の名前を与えたもの。
•
Mapleではあらかじめ変数に値や数式
等を割り当てておくことができる。
→
毎回式を入力する必要なく、変数名
を使用して計算できる。
変数への割り当て(1)
• 変数への割り当てには、
:=(コロン+イ
コール)
を使用する。
• 変数に割り当てられているものを確認し
たい時は、
変数名;(セミコロン)
と入力
して
Enterキーで実行
する。
• 変数に何も割り当てられていない場合
は変数名が返される。
変数への割り当て(2)
• 順に入力して確かめてみよう。
(例)変数への割り当て
入力 説明a := 2;
変数aに2という値を割り当てるb := sin(x)/x^2;
変数bに を割り当てるa;
b;
変数a、bに割り当てられているものを確認c;
変数cに割り当てられているものを確認a * b;
を計算する sin x( )
x2 2 × sin x( )
• 割り当てた変数を初期化するには、
unassign
または
restart
コマンドを使
用する。
unassign(‘変数名’)
: 特定の変数を初期
化する。
restart
:
Mapleを起動した時と同じ状態に
戻す(全ての変数を初期化)。
変数の初期化(1)
適当な変数に値を割り当てて、
2つのコマ
ンドで初期化してみよう。
(例)変数の初期化
入力 説明unassign(‘a’);
変数aを初期化unassign(‘a’,’b’);
変数aとbを初期化restart;
全ての変数を初期化• 分数に対して様々な処理ができる。
分数
コマンド 説明 normal(式) 正規化する numer(式) 分子を取り出す denom(式) 分母を取り出す rem(式1, 式2, 変数) 式1÷式2の余りを求める quo(式1, 式2, 変数) 式1÷式2の商を求める(例)分数
入力 説明
eq1 := (x+y)/(x^3+y^3);
eq2 := normal( eq1 ); 正規化する eq3 := (x^3+x+1)/(x^2 + x + 1);
eq4 := numer( eq3); 分子を取り出す
eq5 := denom( eq3 ); 分母を取り出す
rem(eq4, eq5, x); 除算の余りを求める
• 虚数単位は
I
(大文字の
i)を使用する。
複素数
コマンド 説明 Re(式) 実部を取り出す Im(式) 虚部を取り出す abs(式) 原点からの距離を求める (絶対値)(例)複素数
入力 説明 I^2; -‐1 eq1 := 4 -‐ 5*I; Re(eq1); 実部を求める Im(eq1); 虚部を求める abs(eq1); 原点からの距離を求める• 式に値を代入するには
subs
コマンドか
eval
コマンドを使用する。
• 副次式を代入する場合には
algsubs
コマ
ンドを使用する。
式に値を代入
コマンド 説明 subs(変数=値, 式) 式に値を代入する eval(式, 変数=値) algsubs(副次式, 式) 副次式を代入する(例)式に値を代入
入力 説明
subs(x=1, x^2+2*x+1); x^2+2*x+1にx=1を代入
eval(x^2+2*x+1, x=1);
algsubs(a+b=1, a+b+c); a+b+cにa+b=1を代入
• 入力した引数の中から、
max
コマンドで
最大値、
min
コマンドで最小値を求める。
• 絶対値を求めるには
abs
コマンドを使用
する。
最大値と最小値、絶対値
コマンド 説明 max(値1,値2, … , 値n) 値1〜nの中の最大値を求める min(値1,値2, … , 値n) 値1〜nの中の最小値を求める abs(値) 値の絶対値を求める(例)最大値・最小値、絶対値
入力 説明
max(1, 5 ,10, 2, 6); 入力した引数の最大値を求める
min(1, 5 ,10, 2, 6); 入力した引数の最小値を求める
整数の色々な演算
コマンド 説明 入力例 factorial(整数1) 整数1の階乗 factorial(5); iquo(整数1,整数2) 整数の割り算の商 iquo(10,4); irem(整数1,整数2) 整数の割り算の余り irem(10,4); iroot(整数1,整数2) (整数2)のn乗が(整数1)に 最も近くなるときのn iroot(65,3); isqrt(整数1) 整数1の平方根に 最も近い整数 isqrt(99); modp(整数1, 整数2) 剰余 modp(100,3); igcd(整数1, 整数2) 最大公約数 igcd(123,45); ilcm(整数1, 整数2) 最小公倍数 Ilcm(6,8);• 素数に関する様々なコマンドがある。
素数
コマンド 説明 ifactor(値) 素因数分解を行う ithprime(値) 値が自然数kのとき、k番目の素 数を求める isprime(値) 値が素数かどうかを判定する。 素数の場合はtrue 素数でない場合はfalseを返す nextprime(値) prevprime(値) 指定した数の前後にある 素数を探す(例)素数
入力 説明 ifactor(2014); 素因数分解をする ifactor(27); ithprime(200); 200番目の素数を求める isprime(37); 素数かどうか判定する isprime(99); nextprime(100); 100の後にある素数を求める prevprime(100); 100の前にある素数を求める• 三角関数を使うときは、単位はラジアン
を使用し、
sin(ラジアン)
のようにする。
三角関数
入力 説明 Ang := 180; 角度が180度の場合 sin(Ang); これはNG sin(Ang*Pi/180); ラジアンに直す cos(2*Pi); tan(1/6*Pi);(例)三角関数
入力 説明 arcsin(1/2); 逆関数を求めることもできる arccos(1/2); arctan(sqrt(3)); simplify(sin(x)^2+cos(x)^2); 簡単化 eq := expand(cos(x+y)); 式を展開する combine(eq); 元に戻す• 指数関数は
exp を使って表す
exp(x)
:
eのx乗を計算
exp(整数or有理数)
: 厳密に計算する
exp(小数)
: 近似計算する
指数関数
入力 説明 exp(2); を厳密に計算 exp(2.0); 近似計算e
2• 対数関数は
log または ln を使って表す
log(x)
、
ln(x)
:
log x を求める
log[底の値](値)
: 対数関数の底の値を指
定する
対数関数
入力 説明 log(2); ln(2); log2を厳密に計算 log(2.0); ln(2.0); log2を近似計算 log[4](1024); log 1024端数処理
コマンド 説明 入力例 round(値) 整数に丸める(四捨五入) round(1.3); ceil(値) 整数に丸める(切り上げ) ceil(1.3); floor(値) 整数に丸める(切り下げ) floor(1.8); trunc(値) 整数に丸める(切り捨て) trunc(-‐4.2); trunc(4.2);• 式や数式以外にもリストや集合、行列、ベクト
ルなどを扱うことができる。
色々なデータ型
データ型 説明 入力例 リスト 重複や順番も保持される [a, b, c, d]; [b, a, d, a,c]; 集合 重複しているものは一つになり、順番は無視される {b, b, d, a, c, a}; {a, b, c, d}; 行列 線形代数演算 Matrix([[a, b], [c,d]]);
ベクトル 行ベクトル、列ベクトルを扱うこと
• リストの要素数を取り出すには
nops
コマンド、
データを取り出すには
op
コマンドを使用する。
nops(リスト名)
: リストの要素数を求める
op(リスト名) または p(番号, リスト名)
: リスト
のデータを取り出す。位置を指定することもで
きる。
変数名
[番号]
: 位置を指定してデータを取り出
す
リスト
(例)リスト
入力 説明 data := [[1,2], [3,4], [5,6]]; リストを作成 nops(data); データの個数を取り出す op(data); データを取り出す op(1,data); 1番目の要素を取り出す op(2, op(1,data)); [1,2]の2番目の要素を取り出す data[2]; 2番目の要素を取り出す•
sort
コマンドで式やデータの並び替えが
できる。
並び替え
入力 説明 eq := 1 + x^2 + x + x^3; sort(eq); 次数順に並び替えdata2 := [Banana, Apple, Lemon]; sort(data2); アルファベット順に 並び替え data3 := [1, 4, 3, 8, 5]; sort(data3); 小さい順に並び替え
• 総和は
sum
コマンドまたは
add
コマンドで
求めることができる。
• リストデータの和を求めることも出来る。
総和と積(1)
コマンド 説明 sum(変数, 変数=値1..値2) add(変数, 変数=値1..値2) 値1〜値2までの 総和を求める リスト名 := [値1, 値2, … , 値n]; sum(リスト名[変数], 変数=1..n); add(リスト名[変数], 変数=1..n); リストの和を求める• 積は
product
コマンドまたは
mul
コマンド
で求めることができる。
• リストデータの積を求めることも出来る。
総和と積(2)
コマンド 説明 product(変数, 変数=値1..値2) mul(変数, 変数=値1..値2) 値1〜値2までの 積を求める リスト名 := [値1, 値2, … , 値n]; product(リスト名[変数], 変数=1..n); mul(リスト名[変数], 変数=1..n); リストの積を求める (n=値の個数)(例)総和と積
入力 説明 sum(x, x=1..10); add(x, x=1..10); 1から10までの総和を求める data := [2, 4, 6, 8, 10]; リストデータの作成 sum(data[i], i=1..5); リストの値の総和を求める sum(a*x^k, k=0..5); 変数を含む場合も 総和を求めることができる。 product(x, x=1..10); 1から10までの積 product(data[i], i=1..5); リストの値の積•
Matrix(3,3)で3*3の零行列が作れる。
• 行または列が
10以上になる場合・・・青字の
出力の上でダブルクリックすると行列の要素
を確認できる。
行列
青字をダブルクリック でマトリックスブラウザ が起動• 加算、減算はこれまでと同じように計算
できる。
• 行列同士のかけ算には
.(ドット)
、行列
をスカラー倍するには
*
を使う。
• 逆行列は
行列
^(-‐1)
で求めることができる。
行列の基本演算(1)
行列の基本演算(2)
コマンド 説明 Matrix([[a,b], [c,d]]); 行列を作成する 行列A + 行列B 足し算を行う 行列A – 行列B 引き算を行う 行列A . 行列B .(ドット)でかけ算を行う スカラー * 行列A 行列をスカラー倍する 行列A^(-‐1) 逆行列を求める(例)行列の基本演算
入力 説明 mat1 := Matrix([[1, 2], [3, 4]]); mat2 := Matrix([[a, b], [c, d]]); mat1 + mat2; 足し算を求める mat1 -‐ mat2; 引き算を求める mat1 . mat2; かけ算を求める 4*mat1; スカラー倍を求める mat2^(-‐1); 逆行列を求める• 展開するには
expandコマンド
• 因数分解、部分分数分解するには
factor
コマンドを使用する。
変数名
:= expand(数式);
factor(変数名);
式操作:展開と因数分解
• 順に入力して試してみよう。
(例)式操作:展開と因数分解
入力 説明
a1 := expand((x+2*y)^8);
(x+2*y)^8を展開factor(a1);
a1を因数分解a2 := (x+1)/(x+2);
その他の式操作(1)
コマンド 説明 入力例 simplify(式) 複雑な数式を見やす く簡単化する eq1 := 1/(1+1/(1+1/(1+x))); simplify(eq1); csgn(式) 正負を求める a := -‐5; b := 3; csgn(a); csgn(b); coeff(多項式, 変数名,次数) 指定した次数の係数 を取り出す eq2 := 6*z^3 -‐ 5*z^2 + 2*z -‐ 3*z + 4; coeff(eq2, z, 2); lcoeff(式) 多項式に含まれる最 高次の係数を求める lcoeff(eq2); tcoeff(式) 多項式に含まれる最 低次の係数を求める tcoeff(eq2);その他の式操作(2)
コマンド 説明 入力例 degree(式) 多項式の最高次数を 求める degree(eq2); ldegree(式) 多項式の最低次数を 求める ldegree(eq2);• 代数方程式を解くには
solveコマンド、も
しくは
fsolveコマンドを使用する。
solve(方程式, 解く変数)
: 厳密解を求め
る。
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;
• 漸化式を解くには
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)],
• グラフをクリックするとグラフオプションを
変更するメニューバーが表示される。
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);
微分を計算しない形式で表示
• 積分するには定積分、不定積分ともに
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で積分する
(例)積分(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を定義
(例)積分(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); 左極限を求める x→0lim
sin(x)x 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で剰余項を 取り除く必要がある
• 数値積分とは・・・与えられた関数の定
積分の値を数値的に求める。
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)を求める
∂
• 偏微分方程式は
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
∂
(例)偏微分方程式の数値解
入力 説明
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次元プロットを作成
• 数式を
LaTeX形式に変換するには
latex
コ
マンドを使用する。
LaTeX形式への変換
入力 説明
eq := sin(x) / cos(x);
latex(eq); LaTeX形式に変換
deq := Diff(sin(x),x) = diff(sin(x),x); latex(deq);