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形式に変換
© Copyright 2024 ExpyDoc