ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.

このブログを検索

あなたは 番目のお客様です.

2009年6月11日木曜日

maximaの使い方

Windows版maximaの使い方のメモです.
高校,大学の数学の問題はほとんどmaximaで解決してしまいます.

式を入力すると入力(%i*)に対する結果(%o*)が表示される.

Maximaでは変数への代入に:(コロン)を用いる.
a:2;
sqrt(a);

関数は()でくくる.関数の最初は小文字である.
よく使う定数
%e(自然対数の低),%pi(円周率),%i(虚数),inf(無限大)

数式の処理
たとえば x^3 + y^3;で式が記憶される.
この式の因数分解を行いたい場合
factor(%);
ここで%は直前の式をあらわす
今度は,上の結果を展開したい場合
expand(%);
でもとに戻る

式の通分
ratsimp(1/(x+1)+2/(x-1));

方程式の解法
solve(4*x-1=0,x);
solve(a*x^2+b*x+c=0,x);
solve([x-4*y=-2,2*x+y=5],[x,y]);

関数の極限
limit((1+1/x)^x,x,inf);

式の微分
x^3-4*x^2+exp(-x^2)+sin(2*x);
diff(%,x);

微分方程式
atvalue(x(t),t=0,A);初期条件
atvalue(diff(x(t),t),t=0,0);初期条件
desolve(m*diff(x(t),t,2)=-k*x(t),x(t));
Is k*m positive, negative, or zero?と聞かれたら
positive;
などと入力する.
plot2d(式,[変数,開始,終了]);で結果をグラフ表示することも可能である.
plot2d(x^2,[x,-2,2]);

式の積分
1/x-4*x^2+exp(-x)+sin(2*x);
integrate(%,x);
定積分
integrate(exp(-x^2),x,0,1);
integrate(4/(1+x^2),x,0,1);

式の値を数値で与えるには
float(a);

桁数を指定する場合
fpprec:n;
bfloat(a);

fpprec:20;
bfloat(%pi);

複素数の絶対値と偏角
z:(1 + %i)/sqrt(2);
cabs(z); (絶対値)
carg(z);偏角 (argument)

行列演算
v1:[1,0,2]; (ベクトルの定義)

A:matrix([1,4],[2,-1]); (行列の定義)
Y:matrix([-2,5]);
invert(A).Y; (逆行列)

行列の演算
A.B (積)
A^3(累乗)
determinant(A);(行列式)

固有値
load(eigen);
eigenvalues(A);

固有ベクトル
load(eigen);
eigenvectors(A);


行列の固有値と固有ベクトルが条件を満たすか確認する.
A:matrix([3,-5,-5],[-1,7,5],[1,-9,-7]);
load(eigen);
eigenvectors(A);
 [[[-2,2,3],[1,1,1]],[1,-1,2],[0,1,-1],[1,-1,1]]
固有値,重複数,ベクトルの順に表示される

固有値-2に対する固有ベクトルがB:[1, -1, 2];のとき
A.B;と-2*B;が同じ結果になることが確認できる.

グラフ描画
plot2d(sin(4*x),[x,-5,5]);
plot2d([sin(4*x),exp(-x^2)],[x,-2,2],[y,-4,4]);


(媒介変数表示)
plot2d([parametric,cos(t),sin(2*t)],[t,0,2*%pi]);
標準では媒介変数を10の領域に分割していて,[nticks,*]でグラフが荒いので分割数を増やす.
plot2d([parametric,cos(t),sin(2*t)],[t,0,2*%pi],[nticks,100]);
plot3d(exp(-(x-2)^2-y^2)+exp(-(x+2)^2-y^2),[x,-5,5],[y,-5,5]);
plot3d(exp(-(x-2)^2-y^2)+exp(-(x+2)^2-y^2),[x,-5,5],[y,-5,5],[grid,100,100]);
plot3d([cos(x)*cos(y),sin(x)*cos(y),sin(y)],[x,0,2*%pi],[y,-%pi/2,%pi/2]);

関数の定義
f(x):=x^2*sin(x);
plot2d(f(x),[x,-5,5]);

値のクリア
kill(all);