.
== maximaの初歩的な操作5・・・関数定義,値の代入,微分積分 ==
○以下で共通の操作
[1] Xmaxima においては,
画面に
Maxima 5.34.1 http://maxima.sourceforge.net using Lisp GNU Common Lisp (GCL) GCL 2.6.11 (a.k.a. GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1)
と表示されているので,
□(%i1) (%i2) などと表示される入力行番号の右側にあるカーソル位置に式を入力
□セミコロン ; を付ける
□Enterキーを押す
 (%i1) (%i2) などの行番号は,入力(input)の整理番号となっている.結果は出力(output)として (%o1)などの行番号が自動的に付けられる.
 Xmaximaでは入力したコマンドの行末に,セミコロンを付けなければならない.
[2]  wxMaxima においては
行おうとする操作に応じたコマンドを上端のメニュー画面から選ぶ.
例えば,簡単な四則計算を行うには,[数値処理]→[自動的に数値で出力]を選ぶと
(%i1) if numer#false then numer:false else numer:true;
(%o1) true
などと表示されるので,
□青字で書かれている(%i1) (%i2) などの右に書かれたコマンドを,backSpaceキーやDelキーを使って消す(このとき(%i1) (%i2) などの行番号が自動的に矢印( -->)に書き替えられる)
□式を入力する
□Shift+Enterを押す
 wxMaximaでは,行末のセミコロンは自動的に付けられるが,単にEnterキーを押すだけでなく,Shift+Enterを押す必要がある.
 結果は,各々の入力番号に対応した出力番号として行番号が付けられて(%o1) (%o2)の形で書かれる.


【変数の値を代入・削除するには】
(1) xを変数として,xを代入するには.
(2) xの式として変形するために,上記の(1)の操作の後に変数xの値を解除するには.

 入力結果
(出力)
(1) x:%pi/6;
※maximaでは変数に値を代入するとき,コロン:を使う.
代入された変数の値が表示される
○Xmaximaでは

○wxMaximaでは

(2) 一連の作業として,上記の(1)の操作を行うと,以後はすべてその値が代入されるため,たとえばsin(x+y)の展開公式を作ろうと考えても,を前提とした式が表示される.このような場合に,変数xの値を解除するにはどうしたらよいか.
kill(x);
done
(1)により,毎回値を書かなくても式の値が求められる.sin(x);
[他の例] x : −3;y : 4;x^2+2*x*y+y^2;1
 値の代入は,複雑な値が「二度以上」登場する場合に特に有利で,他の例でいえば,のとき,の値を求めるには,x : (-1-sqrt(3)*%i)/2;y : (-1+sqrt(3)*%i)/2;と一度書けば
x^2+3*x*y+y^2;2などとできる
他の言語とほぼ同様に,変数名や関数名はアルファベットで始まりスペースを含まない単語であればよく,2番目以後は数字であってもよい.
≪予約語≫・・・次の語句は,Maximaの中で使い方が決まっていて,変数名として使用できない.関数名でも同様
integratenextfrom diff in at limit sum for and elseif then else do or if unless product while thrustep
(2) 変数に値を代入すると,以後その値を引きずっていくため,例えば(1)のコマンドを実行すると,以後trigexpand(sin(x+y));のようなコマンドを実行しても
などとなる.代入した変数xの値を解除するにはどうしたらよいか,というのがこの項目の内容
kill(x);を実行後にtrigexpand(sin(x+y));を実行すると,
cos(x) sin(y) + sin(x) cos(y)が得られる.


【関数を定義・削除するには】
(1) 関数f(x)x2+3x+4によって定義するには
(2) 別の作業を行うために,関数f(x)の定義を定義し直すには.また,解除するには.

○Xmaxima,wxMaximaいずれも次のようになります.
 入力結果
(出力)
(1) f(x):=x^2+3*x+4;
※maximaでは関数を定義する式は,
左辺に関数名(変数),コロンとイコール:=,右辺に関数の本体を書く.
入力されたコマンドがそのまま表示される
(2) kill(f);
※引数を付けた形kill(f(x));ではなく,関数名だけを書き込みます.
done


【関数を微分・積分するには】
 関数f(x)f(x)=ex+logxと定義し
(1) 関数f(x)の導関数を求めるには
(2) 関数f(x)の不定積分を求めるには
(3) 関数f(x)の区間1≦x≦eにおける定積分を求めるには
○Xmaxima,wxMaximaいずれも次のようになります.
 入力結果
(出力)
  f(x):=%e^x+log(x);
またはf(x):=exp(x)+log(x);
※自然対数の底(ネイピア数)は記号%eで表される.
eを底とする指数関数は
%e^xまたはexp(x)で表す.
eを底とする対数関数はlog(x)で表される.Excelで使うln(x)は定義されていない.また,10を底とする対数関数(常用対数)が必要な場合は,ユーザが底の変換公式を用いて
log10(x):=log(x)/log(10);などと定義して使うことになる.
入力されたコマンドがそのまま表示される
(1) diff(f(x),x);
diff(f(x));
※微分するには関数diff()を使い,第1引数に微分すべき関数,第2引数に微分する変数を指定する.
※第2引数のxを省略した場合,全微分に相当するdf(x)=f ’(x)dxの式が出力され,dxの部分はdel(x)と表示される.・・・(del(x)は「消す」ではなく,differential of the variable x.)


(2) integrate(f(x),x);
※第2引数に積分変数を指定する.
x log(x) + %ex−x
※不定積分では積分定数は省略される.
(3) integrate(f(x),x,1,%e);
integrate(被積分関数,積分変数,下端,上端)の順に指定する.下端が上端よりも大きな値であってもよい.
%e%e−%e + 1




という意味

【三角関数などの値を指定したいとき】
 であるとき
の値を求めるには
入力結果
(出力)
assume(x>0,x<%pi/2);…(1)
x : asin(3/5);…(2)
assume(y>%pi/2,y<%pi);…(3)
y : acos(-1/2);…(4)
trigexpand(sin(x-y));…(5)
○Xmaximaでは

○wxMaximaでは
-0.992820323027551
(1)仮定は,assume();で表し,引数として,< , <= , equal , notequal , >= , >を「かつ」を表すカンマで結んで表現することができる.(3)も同様

(2) 左辺が関数であるときに,引数の値ではなく関数の値を代入することはできないので,ここでは逆三角関数を使ってxに値を代入している.
または
のことをmaximaではで表す.(4)も同様

sin(x-y);とした場合には,第1段階の展開のみ行われ
となるので,さらに展開するには
trigexpand(sin(x-y));とする.

...メニューに戻る ..maximaのメニューに戻る