* Maxima [#j531a254] **計算結果のファイル保存/読み込み [#t2633c3c] すべて保存 save("result.max", all); loadfile("result.max"); 入力のみ保存 stringout("input.bat", input); **Unix系コマンド使用 [#g4d9a7f1] system("cat input.bat"); **texソースに変換 [#k02c586d] tex(d1); **バッチ処理 [#p9ab00c7] batch("batch.bat"); **カレントディレクトリ変更 [#y3b9c632] ?xchdir("D:\\Temp")$ **出力順序変更 [#d815d31e] Maxima標準だと,z^2+y^2+x^2のように我々の感覚とは逆に表示される. この出力式の変数順序を変更する. ordergreat(x,y,z); これにより,x^2+y^2+z^2のようにx,y,zの順になる. orderless(z,y,x); でも同様. 元の状態に戻したいときは, unorder(); を実行する.また,他の順番にしたいときもunorder()を実行してから再度ordergreat,orderlessを実行する. **代入・置き換え [#w152c01b] x=3をf=x^2+y^2に代入 f:x^2+y^2; subst(3, x, f); 式の置き換えは,ratsubst(置き換える式,置き換えられる式,式)で行う. **関数定義 [#s1cf276d] f(x):=x^2+3; f(4);などとして使用する. 直前の結果から関数を定義するときは define(f(x), %o1); **展開 [#be81b96b] expand((x+2)^5); factor(x^2+2*x+1); **係数 [#cb11468e] 有理式から変数の係数を取得する場合, func:3*x^3+2*x^2+x+1+5*y^2+4*y+3*x*y; coeff(func,x,1); /* xの係数 : 3y+1 */ coeff(func,x,2); /* x^2の係数 : 2 */ coeff(func,y,2); /* y^2の係数 : 5 */ **多項式の整理 [#gb2bc65a] 他変数の多項式を1つの変数について整理する. func:3*x^3+2*x^2+x+1+5*y^2+4*y+3*x*y; rat(%,x); これにより, 3*x^3+2*x^2+(3*y+1)*x+5*y^2+4*y+1 となる.rat(func,x)でもよい. **微積 [#f798b944] -微分 diff(数式,微分したい文字); diff((x^2+1)^3,x); -積分 integrate(数式,積分したい文字); integrate(1/(1+x^3),x); -微分 diff diff( f(x),x ) -n階微分 diff diff( f(x),x,n ) -不定積分 integrate integrate( f(x),x ) -定積分 integrate integrate( f(x),x,a,b ) -数値積分 romberg romberg( f(x),x,a,b ) -偏微分 diff(f, x)だと,式f中のx以外の要素は定数と見なされ微分される.例えば,f中のyがxの関数であるとしたい場合は,dependsを用いる. depends(y,x); diff(x^2+y+xy,x); 結果は,dependsなしだと 2*x,dependsありだと,2*x+'diff(y,x,1)となる. 依存関係を取り除く場合は, remove(y,dependency); **連立方程式 [#efbaa466] -代数方程式 solve( 方程式,変数 ) -連立方程式 solve([方程式1,方程式2、...],[変数1,変数2,...]) -連立方程式 algsys([方程式1,方程式2、...],[変数1,変数2,...]) **ベクトル [#rc054d81] -定義 u: [ux,uy,uz]; v: [vx,vy,vz]; -要素アクセス(1始まり) u[1]; -内積(ux*vx+uy*vy+uz*vz) u.v; -ノルム(|u|) ノルム関数の定義 norm(u):=sqrt(u.u); -外積 外積関数の定義 cros(u,v):=[u[2]*v[3]-u[3]*v[2], u[3]*v[1]-u[1]*v[3], u[1]*v[2]-u[2]*v[1]]; -各要素同士の積([a*c, b*d]) u*v; **行列 [#ib66de0e] -定義 M: matrix([a,b],[c,d]); -積 M.M; -行列とベクトルの積 M.u; -各要素同士の積 M*M; -累乗 M^^2; -各要素の累乗 M^2; -行列式 determinant(M); -逆行列 M^^-1; -トレース(対角成分の和) load("nchrpl"); mattrace(M); **定数 [#b145d160] -円周率 %pi -虚数単位 %i -自然対数の底 %e -黄金比(1+sqrt(5))/2 %phi **計算結果の表示方法 [#l94656a0] -浮動小数点表示 float(f(10)); float(%pi); -より高精度な浮動小数点表示 fpprec:100; // 表示桁数設定 bfloat(%pi); **整数論 [#p51c9c00] -除法の商と余り quotient(60,7); // 商(整数) mod(60,7); // 余り divide(60,7); // 商と余り両方 -素数かどうかを調べる(true or false) primep(67); -素因数分解 factor(207); // 結果は3^2 * 23 ifactors(207); // 結果は[3,2],[23,1] -> 3^2 * 23^1 の形式 **終了 [#de540368] quit(); *例 [#d1d46036] **SPHのPoly6重み関数((h^2-r^2)^3)の係数を求める [#u00f4c58] W(r):=(h^2-r^2)^3; integrate( integrate( integrate( W(r)*r^2*sin(theta), r, 0, h), theta, 0, %pi), phi, 0, 2*%pi); 結果は, 9 64 %pi h --------- 315 係数はこの逆数になる(有効範囲内の体積分で割ることで∫W=1となる). 2次元では, integrate( integrate( W(r)*r, r, 0, h), theta, 0, 2*%pi); *リンク [#se2dd6d9] -[[公式:http://maxima.sourceforge.net/]] -[[Maximaで遊ぼう:http://www.bekkoame.ne.jp/~ponpoko/Math/maxima/MaximaMAIN.html]] [[FrontPage]]