Mapleの使い方(4)

Mapleの使い方(4)
担当: 荻田 武史
今回やること
•  いろいろな計算 •  プログラミング – 条件分岐 •  ユーティリティ 分数(1)
•  分数に対して様々な処理ができる。 コマンド
説明
normal(式) 通分を行う
numer(式) 分母を取り出す denom(式) 分子を取り出す rem(式1, 式2, 変数) 式1÷式2の余りを求める quo(式1, 式2, 変数) 式1÷式2の商を求める 分数(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); 除算の余りを求める quo(eq4, eq5, x); 除算の商を求める 複素数
•  虚数単位は I (大文字のi)を使用する。 コマンド
説明
Re(式) 実部を取り出す
Im(式) 虚部を取り出す abs(式) 原点からの距離を求める
(絶対値) 複素数(2)
入力
説明
I^2; -­‐1
eq1 := 4 -­‐ 5*I; Re(eq1); 実部を求める Im(eq1); 虚部を求める abs(eq1); 原点からの距離を求める 代入
•  式に値を代入するにはsubsコマンドか
evalコマンドを使用する。 •  副次式を代入する場合にはalgsubsコマ
ンドを使用する。 コマンド
説明
subs(変数=値, 式) 式に値を代入する
eval(式, 変数=値) algsubs(副次式, 式) 副次式を代入する 最大値と最小値、絶対値
•  入力した引数の中から、maxコマンドで
最大値、minコマンドで最小値を求める。 •  絶対値を求めるにはabsコマンドを使用
する。 コマンド
説明
max(値1,値2, … , 値n) 値1〜nの中の最大値を求める
min(値1,値2, … , 値n) 値1〜nの中の最小値を求める
abs(値) 値の絶対値を求める 代入、最大値・最小値、絶対値
入力
説明
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を代入 algsubs(a*b=2, a*b*c); a*b*cにa*b=2を代入 max(1, 5 ,10, 2, 6); 入力した引数の最大値を求める
min(1, 5 ,10, 2, 6); 入力した引数の最小値を求める
abs(-­‐20); 絶対値を求める いろいろな整数の演算
コマンド
説明
入力例
factorial(整数) 整数の階乗
factorial(5);
iquo(整数1,整数2) 整数の割り算の商 iquo(10,3); irem(整数1,整数2) 整数の割り算の余り irem(10,3); iroot(整数1, 整数2) (整数1)の(整数2)乗に 近い整数 iroot(65,3); isqrt(整数) 整数の平方根に近い整数 isqrt(99); mod(整数1, 整数2) 剰余 mod(100,3); igcd(整数1, 整数2) 最大公約数 igcd(123,45); 素数(1)
•  素数に関する様々なコマンドがある。 コマンド
説明
ifactor(値) 素因数分解を行う
ithprime(値) 指定した番目の素数を求める isprime(値) 値が素数かどうかを判定する。 素数の場合はtrue 素数でない場合はfalseを返す nextprime(値) prevprime(値) 指定した数の前後にある 素数を探す 素数(2)
入力
説明
ifactor(2014); 素因数分解をする
ifactor(27); ithprime(200); 200番目の素数を求める
isprime(37); 素数かどうか判定する
isprime(99); nextprime(100); 100の前にある素数を求める
prevprime(100); 100の後にある素数を求める
総和と積(1)
•  総和はsumコマンドまたはaddコマンドで
求めることができる。
•  リストデータの和を求めることも出来る。 コマンド
説明
sum(変数, 変数=値1..値2) add(変数, 変数=値1..値2) 値1〜値2までの 総和を求める
リスト名 := [値1, 値2, … , 値n]; sum(リスト名[変数], 変数=1..n); add(リスト名[変数], 変数=1..n); リストの和を求める 総和と積(2)
•  積はproductコマンドまたはmulコマンド
で求めることができる。 •  リストデータの積を求めることも出来る。 コマンド
説明
product(変数, 変数=値1..値2) mul(変数, 変数=値1..値2) 値1〜値2までの 積を求める
リスト名 := [値1, 値2, … , 値n]; product(リスト名[変数], 変数=1..n); mul(リスト名[変数], 変数=1..n); リストの積を求める (n=値の個数) 総和と積(3)
入力
説明
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[x], x=1..5); リストの値の積 端数処理
コマンド
説明
入力例
round(値) 整数に丸める(四捨五入) round(1.3); ceil(値) 整数に丸める(切り上げ) ceil(1.3); floor(値) 整数に丸める(切り下げ) floor(1.8); trunc(値) 整数に丸める(切り捨て) trunc(-­‐4.2); trunc(4.2); リスト(1)
•  リストの要素数を取り出すにはnopsコマンド、
データを取り出すにはopコマンドを使用する。 nops(リスト名): リストの要素数を求める op(リスト名) または p(番号, リスト名): リスト
のデータを取り出す。位置を指定することもで
きる。 変数名[番号]: 位置を指定してデータを取り出
す リスト(2)
入力
説明
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); 小さい順に並び替え 行列の基本演算(1)
•  加算、減算はこれまでと同じように計算
できる。 •  行列同士のかけ算には .(ドット) 、行列
をスカラー倍するには * を使う。 •  逆行列は行列^(-­‐1)で求めることができる。 行列の基本演算(1)
コマンド
説明
Matrix([[a,b], [c,d]]); 行列を作成する
行列A + 行列B 足し算を行う
行列A – 行列B 引き算を行う 行列A . 行列B .(ドット)でかけ算を行う スカラー * 行列A 行列をスカラー倍する 行列A^(-­‐1) 逆行列を求める 行列の基本演算(2)
入力
mat1 := Matrix([[1, 2], [3, 4]]); 説明
mat2 := Matrix([[a, b], [c, d]]); mat1 + mat2; 足し算を求める
mat1 -­‐ mat2; 引き算を求める
mat1 . mat2; かけ算を求める
4*mat1; スカラー倍を求める
mat2^(-­‐1); 逆行列を求める
プログラミング 条件分岐(1)
•  if文を用いて条件によって処理を変える
ことができる。 if 条件文 then 処理1
elif 条件文 then 処理2
else 処理3
end if; プログラミング 条件分岐(2)
if 条件1 then 処理1
elif 条件2 then 処理2
else 処理3
end if; もし(条件1)なら 処理1を実行
(条件1)でない場合、 もし(条件2)なら処理2を実行
(条件1)でも(条件2)でもない
場合、処理3を実行
※elifを追加して条件分岐
を増やすことができる
※elif、elseの処理が不要の場合は 省略できる
プログラミング 条件分岐(3)
•  条件文に使える式には次のようなもの
がある 条件文(関係演算子)
説明
x = y xとyの値が一致
x <> y xとyの値が一致しない x > y、x >= y、x < y、x <= y より大きい、以上、 より小さい、以下 プログラミング 条件分岐(4)
条件文(論理演算子)
説明
((条件1) and (条件2)) (条件1) かつ (条件2)
((条件1) or (条件2)) (条件1) または (条件2)
not (条件) (条件)でない プログラミング 条件分岐(5)
•  num1とnum2の値を変えて試してみよう。 入力
説明
num1 := 1000: num2 := 533: if num1 > num2 then 1; elif num1 = num2 then 2; else 3; end if; もし、 num1 > num2 ならば 1 num1 = num2 ならば 2 num1 < num2 ならば 3 を表示する。 プログラミング 条件分岐(6)
•  割り算の余りを利用して3の倍数かどう
かを調べることができる。 入力
説明
num := 3323: if mod(num,3)=0 then 1; else 2; end if; num/3の余りが0ならば3の倍
数になる。 条件分岐 演習
•  for文とif文を使用し、1から100までの3
の倍数の和と積を求めるプログラムを
作ってみよう。 計算時間の調査
•  実行するコマンドの計算時間を調べるに
は]meコマンドを使用する。 変数 := ]me(): 時間を調べたいコマンド: ]me() – 変数; 入力
説明
^ := ]me(): add(1/k^2, k = 1 .. 100000): ]me()-­‐^; 2行目の計算時間を調べる
LaTeX形式への変換
•  数式をLaTeX形式に変換するにはlatexコ
マンドを使用する。 入力
説明
eq := sin(x) / cos(x); latex(eq); deq := Diff(sin(x),x) = diff(sin(x),x); latex(eq); LaTeX形式に変換