[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(howto/MenuBar)
* howto/maxima [#u83cbd5a]
#contents
** Maximaをベースにした種類 [#a2d5d9e5]
wxmaxima, 12.04.0(win7)
├ maxima, 5.27.0(win7)
└ xmaxima, テキストベースらしい
imaxima, wxmaximで十分のようだ
texmacs, 1.99.1.8496(win7), maximaとの連携がうまくいかな...
- mac版のwxmaximaはファイル保存できない。.wxmxと.macには...
** 一行メモ [#m023c494]
- オイラーの公式を展開する例(これしかない?
trigsimp(
subst( cos(phi)+%i*sin(phi), exp(%i*phi),
1/sqrt(2)/%i*( spherical_harmonic(1,1,theta,phi) + s...
)
);
- 水素原子の波動関数
LaguerreBiPoly(k,s,x):= diff( exp(x)*diff(x^k*exp(-x),x,...
LaguerreBiFunc(n,l,x):= expand( exp(-x/2)*x^l * Laguerre...
SpheHarm(l,m,theta,phi):=spherical_harmonic(l,m,theta,ph...
/* このsperical_harmonic には...
SpheHarm(l,m,theta,phi):=(-1)^(m)*spherical_harmonic(l,m...
Psi(n,l,m,r,theta,phi):= -sqrt( (n-l-1)!/(2*n*((n+l)!)^3...
factor(( subst( 2*r/n, x, LaguerreBiFunc(n,l,x) ) * Sp...
- auからfsecへの変換
fs2au(t):=t/2.418e-2;
- Maxima 5.33.0 マニュアル(日本語) http://maxima.source...
- trgsimp以外に、radcanという指数・対数の整理があり。 -- ...
- declare(k,integer) k を整数として宣言 -- &new{2014-06...
- 前置演算子 -- &new{2014-06-05 (木) 10:56:00};
prefix( "A" );
A f := diff( r^2 * diff( f, r ), r )/(2*r^2)
+ diff( sin(theta) * diff( f, theta ), theta )/(2*r...
- 1/r*f - E*r*sin(omega*t)*cos(theta)*f;
Psi[0](r):=exp(-r)/sqrt(%pi);
A Psi[0](r);
- 部分分数分解 partfrac( (2*x^2+6*x+1)/(x*(x+1)^2), x ); ...
- 式をまとめる?: factorout, rat, ordergreat -- &new{20...
- http://www.kabipan.com/computer/maxima/quick.html より ...
1/3, numer; と入力すると .3333333333333333 が得られる
値の割り当て(assingment)
シンボルはその場で評価され、その値に置き換わる
remvalue (n); で、n に割り当てられた値を削除する。
remvalue (all); で、ユーザがシンボルに割り当てた値をすべ...
kill(n); でシンボル n を削除。kill (all) で、ユーザが作...
シンボルの値として割り当てることができるものは、数に限ら...
割り当てることができる:シンボルに割り当てられた値を評価...
declare (n, integer); で、n を整数であると宣言する。
facts (); で n 以外の変数に対する制約も表示される。
フラグは features; で知ることができる
remove (all,integer); で、すべてのシンボルから整数フラグ...
assume (n > 0); で、n が 0 より大きいことを仮定すること...
forget (n > 0) で、仮定 n > 0 を取り除くことができる。fo...
fundef(f); で関数 f の定義を見ることができる。dispfun(al...
remove (f, function); で、f から関数定義を取り除くことが...
assume (n = m); の形が許されないのも、これに似た事情であ...
字面とは同じではない。assume (equal(n, m)); なら可能であ...
- 行列をくっつけるには、行の場合はaddcol(A, B)、列の場合...
- 行列の要素を取り出すには、Eq[i,j]である。一列や一行であ...
- x[k]の扱い方。(配列、配列関数とかいうものらしい)
x[2*k] は 下付き添字2kが付いた x で表示されるが、配列の...
arrayinfo( x ) で、[hashed, 次元, 登録されたハッシュキー...
listarray( x) で、[ハッシュ値, …]
を知ることができる。kill( x ) も可。
下付き文字 2k の付いた x の文字として使用するには、' を...
例) integrate( 'x[2*k+1], x, 'x[2*k+1]-h, 'x[2*k+1]+h );
- 配列関数 N[9](x,y):=1/1*(1-x)*(1+x)*(1-y)*(1+y); -- &n...
- h[i,j]:=(i-1)*3+j; genmatrix(h,3,3); で行列を作成できる...
- row(A,2); col(A,2); 行列の行や列を取り出す。 -- &new{2...
- setelmx(p, 2, 3, A); 行列Aの2行3列をpに置き換える。 -- ...
- a: lambda([i, j], x[j]ˆi); genmatrix(a, 3, 4, 0, 1...
- 連立方程式を解く -- &new{2014-12-25 (木) 11:00:27};
B0(x):=a*x^5+b*x^4+c*x^3+d*x^2+e*x+f;
B1(x):=a*5*x^4+b*4*x^3+c*3*x^2+d*2*x+e;
B2(x):=a*5*4*x^3+b*4*3*x^2+c*3*2*x+d*2;
/* [-1,0] j=0 */
solve( [B0(0)=1,B1(0)=0,B2(0)=0,B0(-1)=0,B1(-1)=0,B2(-1)...
- 極限値 limit(sin(x)/x, x, inf); limit(1/x, x, 0, minus)...
- 等高線を描く wxcontour_plot ( uo(x)*uo(y), [x,-1,1], [y...
- 数値積分 romberg( exp(-x^2), x, 0, 1 ); rombergtol;(な...
- 積分の例: integrate( r*r*exp(-2*r) , r, 0, inf ); -- ...
#comment
** ベクトルの外積 [#j5f967fd]
関数を定義して使うしかないらしい
cross( u, v ):= [ u[2]*v[3] - u[3]*v[2], u[3]*v[1] - u[...
A1:[a,0,0] ;
A2:[0,b,0];
A3:[0,0,c];
A1 . cross( A2, A3 ); /* スカラー三重積 */
** グラフ描画 [#q7c07cb7]
- plot2d
f(x, A, a):=x*(1+A*exp(-a*x));
plot2d( [f(x,4,2), f(x,8,2),f(x,4,4),f(x,8,4), x], [x, 0...
[legend, "f(x,4,2)", "f(x,8,2)","f(x,4,4)", "f(x,8,4)"...
[gnuplot_preamble, "set grid; set key bottom right;
set xrange[0:5]; set yrange[0:5];"...
またはwxplot2d
軸ラベルは [xlabel,"Intensity (W/m^2)"], [ylabel,"E (V/A...
軸を対数にするには、[gnuplot_preamble, " set logscale x;...
軸の目盛の特殊なフォーマットは、[gnuplot_preamble, "set ...
別の例)
wxplot2d( [D(t/au2fs),C1(t/au2fs),C2(t/au2fs)], [t,0,108...
[legend, "Dipole", "C1", "C2"],
[xlabel,"time (fs)"], [ylabel,"(au)"],
[gnuplot_preamble, "set grid; set key top center;" ]
);
- plot3d
f(x,t):=-400/16*sin(2*%pi/0.4*t)*(x-8);
wxplot3d( f(x,t), [x,0,16], [t,0,0.4],
[legend, "f(x,t)"] );
またはwxplot3d
- plot2d(媒介変数)
plot2d( [parametric, 1/2*t*t+t, sin(2*%pi*t)], [t,0,50],...
変数はtでないとダメなようだ。
- その他
[legend,false] 凡例を表示させない
** 雑多なこと [#kb571d6b]
assume( W > 0 ) /* 前提条件。積分とかで場合分けの質問が...
forget( W ) /* 変数Wの値を未設定にする? */
forget( all ) /* 全ての変数の値を未定義にする? */
kill( all ) /* 全ての変数の値を未定義にする? */
W:0.25 /* 変数Wの値を0.25に設定する */
inf /* ∞ */
%i /* 虚数単位 */
%pi /* π */
conjugate( hoge ) /* 複素共役をとる */
realpart( hoge ) /* 実部を取り出す */
imagpart( hoge ) /* 虚部を取り出す*/
abs( hoge ) /* 絶対値 */
diff( hoge(x), x [,n] ) /* hoge(x)のn回微分。nを省略し...
taylor( exp(%i*C*x), x, 0,5) /* テイラー展開をxについて...
subst( a, x, hoge(x) ) /* 関数hogeのxをaに置き換える...
nusum( A^^k, k, 0, inf );
num( BBconjinv[1,1] );
末尾$ /* 出力を省略 */
hoge(x), x:0.25; /* env( x:0.25, hoge(x) ) と同じく、一...
romberg 数値積分
** 関数の定義 [#e2ba1611]
hoge( x, y, z ):= x,y,zを使った関数 /* 関数の定義 */
f(x):=0.3*x*x-1.2*x+5;
define( nab_f(x), diff( f(x), x ) ); /* 微分として定義...
nab_f(x):=diff( f(x), x ); /* 期待通りに働かない */
nab_f(x):='diff( f(x), x ); /* 期待通りに働かない */
f(1.2);
nab_f(1.2);
場合分けのある関数の定義
ua(x,c):=if x>=c-1 and x<=c+1 then 1/2*(x-c)*(x-c-1) els...
** 行列 [#z584eafe]
A:matrix( [ 1,2],[3,4] );
A:matrix( [-1, exp(-%i*phi)], [exp(%i*phi), 0] );
A.A; A^^3; A^^4; A^^5; A^^-1; A^^0; /* 行列の積は . べ...
exp( A ); /* これは各要素のexpが計算されるので注意 */
determinant(A); /* 行列式の値。なお、0のときA^^-1はエラ...
transpose( A ) /* 行列Aを転置する */
conjugate(transpose( A )) /* Aの転置複素共役 */
** 浮動点少数として計算 [#nc11b5ec]
float( 1/3 ); /* 浮動点少数として結果を出力 */
bfloat(1/3); /* 〃 */
bfloat(1/3), fpprec:8; /* 8桁の浮動点少数として出力 */
** 方程式を解く [#b7ba135d]
TOUfunc(V0,E,a):=( (1+V0^2*(sinh(sqrt(2*(V0-E))*a))^2/(4...
ans:solve( TOUfunc( 80, 74, a )=0.5, a );
bfloat( [rhs(ans[1]), rhs(ans[2])] ), fpprec:4;
** 式展開やまとめる方法 [#l519030c]
expand 展開 <--> factor 因数分解
partfrac <--> ratsimp
trigreduce 三角関数の積を減少 <--> trigsimp
trigexpand 三角関数の引数を展開 <--> trigsimp
終了行:
#menu(howto/MenuBar)
* howto/maxima [#u83cbd5a]
#contents
** Maximaをベースにした種類 [#a2d5d9e5]
wxmaxima, 12.04.0(win7)
├ maxima, 5.27.0(win7)
└ xmaxima, テキストベースらしい
imaxima, wxmaximで十分のようだ
texmacs, 1.99.1.8496(win7), maximaとの連携がうまくいかな...
- mac版のwxmaximaはファイル保存できない。.wxmxと.macには...
** 一行メモ [#m023c494]
- オイラーの公式を展開する例(これしかない?
trigsimp(
subst( cos(phi)+%i*sin(phi), exp(%i*phi),
1/sqrt(2)/%i*( spherical_harmonic(1,1,theta,phi) + s...
)
);
- 水素原子の波動関数
LaguerreBiPoly(k,s,x):= diff( exp(x)*diff(x^k*exp(-x),x,...
LaguerreBiFunc(n,l,x):= expand( exp(-x/2)*x^l * Laguerre...
SpheHarm(l,m,theta,phi):=spherical_harmonic(l,m,theta,ph...
/* このsperical_harmonic には...
SpheHarm(l,m,theta,phi):=(-1)^(m)*spherical_harmonic(l,m...
Psi(n,l,m,r,theta,phi):= -sqrt( (n-l-1)!/(2*n*((n+l)!)^3...
factor(( subst( 2*r/n, x, LaguerreBiFunc(n,l,x) ) * Sp...
- auからfsecへの変換
fs2au(t):=t/2.418e-2;
- Maxima 5.33.0 マニュアル(日本語) http://maxima.source...
- trgsimp以外に、radcanという指数・対数の整理があり。 -- ...
- declare(k,integer) k を整数として宣言 -- &new{2014-06...
- 前置演算子 -- &new{2014-06-05 (木) 10:56:00};
prefix( "A" );
A f := diff( r^2 * diff( f, r ), r )/(2*r^2)
+ diff( sin(theta) * diff( f, theta ), theta )/(2*r...
- 1/r*f - E*r*sin(omega*t)*cos(theta)*f;
Psi[0](r):=exp(-r)/sqrt(%pi);
A Psi[0](r);
- 部分分数分解 partfrac( (2*x^2+6*x+1)/(x*(x+1)^2), x ); ...
- 式をまとめる?: factorout, rat, ordergreat -- &new{20...
- http://www.kabipan.com/computer/maxima/quick.html より ...
1/3, numer; と入力すると .3333333333333333 が得られる
値の割り当て(assingment)
シンボルはその場で評価され、その値に置き換わる
remvalue (n); で、n に割り当てられた値を削除する。
remvalue (all); で、ユーザがシンボルに割り当てた値をすべ...
kill(n); でシンボル n を削除。kill (all) で、ユーザが作...
シンボルの値として割り当てることができるものは、数に限ら...
割り当てることができる:シンボルに割り当てられた値を評価...
declare (n, integer); で、n を整数であると宣言する。
facts (); で n 以外の変数に対する制約も表示される。
フラグは features; で知ることができる
remove (all,integer); で、すべてのシンボルから整数フラグ...
assume (n > 0); で、n が 0 より大きいことを仮定すること...
forget (n > 0) で、仮定 n > 0 を取り除くことができる。fo...
fundef(f); で関数 f の定義を見ることができる。dispfun(al...
remove (f, function); で、f から関数定義を取り除くことが...
assume (n = m); の形が許されないのも、これに似た事情であ...
字面とは同じではない。assume (equal(n, m)); なら可能であ...
- 行列をくっつけるには、行の場合はaddcol(A, B)、列の場合...
- 行列の要素を取り出すには、Eq[i,j]である。一列や一行であ...
- x[k]の扱い方。(配列、配列関数とかいうものらしい)
x[2*k] は 下付き添字2kが付いた x で表示されるが、配列の...
arrayinfo( x ) で、[hashed, 次元, 登録されたハッシュキー...
listarray( x) で、[ハッシュ値, …]
を知ることができる。kill( x ) も可。
下付き文字 2k の付いた x の文字として使用するには、' を...
例) integrate( 'x[2*k+1], x, 'x[2*k+1]-h, 'x[2*k+1]+h );
- 配列関数 N[9](x,y):=1/1*(1-x)*(1+x)*(1-y)*(1+y); -- &n...
- h[i,j]:=(i-1)*3+j; genmatrix(h,3,3); で行列を作成できる...
- row(A,2); col(A,2); 行列の行や列を取り出す。 -- &new{2...
- setelmx(p, 2, 3, A); 行列Aの2行3列をpに置き換える。 -- ...
- a: lambda([i, j], x[j]ˆi); genmatrix(a, 3, 4, 0, 1...
- 連立方程式を解く -- &new{2014-12-25 (木) 11:00:27};
B0(x):=a*x^5+b*x^4+c*x^3+d*x^2+e*x+f;
B1(x):=a*5*x^4+b*4*x^3+c*3*x^2+d*2*x+e;
B2(x):=a*5*4*x^3+b*4*3*x^2+c*3*2*x+d*2;
/* [-1,0] j=0 */
solve( [B0(0)=1,B1(0)=0,B2(0)=0,B0(-1)=0,B1(-1)=0,B2(-1)...
- 極限値 limit(sin(x)/x, x, inf); limit(1/x, x, 0, minus)...
- 等高線を描く wxcontour_plot ( uo(x)*uo(y), [x,-1,1], [y...
- 数値積分 romberg( exp(-x^2), x, 0, 1 ); rombergtol;(な...
- 積分の例: integrate( r*r*exp(-2*r) , r, 0, inf ); -- ...
#comment
** ベクトルの外積 [#j5f967fd]
関数を定義して使うしかないらしい
cross( u, v ):= [ u[2]*v[3] - u[3]*v[2], u[3]*v[1] - u[...
A1:[a,0,0] ;
A2:[0,b,0];
A3:[0,0,c];
A1 . cross( A2, A3 ); /* スカラー三重積 */
** グラフ描画 [#q7c07cb7]
- plot2d
f(x, A, a):=x*(1+A*exp(-a*x));
plot2d( [f(x,4,2), f(x,8,2),f(x,4,4),f(x,8,4), x], [x, 0...
[legend, "f(x,4,2)", "f(x,8,2)","f(x,4,4)", "f(x,8,4)"...
[gnuplot_preamble, "set grid; set key bottom right;
set xrange[0:5]; set yrange[0:5];"...
またはwxplot2d
軸ラベルは [xlabel,"Intensity (W/m^2)"], [ylabel,"E (V/A...
軸を対数にするには、[gnuplot_preamble, " set logscale x;...
軸の目盛の特殊なフォーマットは、[gnuplot_preamble, "set ...
別の例)
wxplot2d( [D(t/au2fs),C1(t/au2fs),C2(t/au2fs)], [t,0,108...
[legend, "Dipole", "C1", "C2"],
[xlabel,"time (fs)"], [ylabel,"(au)"],
[gnuplot_preamble, "set grid; set key top center;" ]
);
- plot3d
f(x,t):=-400/16*sin(2*%pi/0.4*t)*(x-8);
wxplot3d( f(x,t), [x,0,16], [t,0,0.4],
[legend, "f(x,t)"] );
またはwxplot3d
- plot2d(媒介変数)
plot2d( [parametric, 1/2*t*t+t, sin(2*%pi*t)], [t,0,50],...
変数はtでないとダメなようだ。
- その他
[legend,false] 凡例を表示させない
** 雑多なこと [#kb571d6b]
assume( W > 0 ) /* 前提条件。積分とかで場合分けの質問が...
forget( W ) /* 変数Wの値を未設定にする? */
forget( all ) /* 全ての変数の値を未定義にする? */
kill( all ) /* 全ての変数の値を未定義にする? */
W:0.25 /* 変数Wの値を0.25に設定する */
inf /* ∞ */
%i /* 虚数単位 */
%pi /* π */
conjugate( hoge ) /* 複素共役をとる */
realpart( hoge ) /* 実部を取り出す */
imagpart( hoge ) /* 虚部を取り出す*/
abs( hoge ) /* 絶対値 */
diff( hoge(x), x [,n] ) /* hoge(x)のn回微分。nを省略し...
taylor( exp(%i*C*x), x, 0,5) /* テイラー展開をxについて...
subst( a, x, hoge(x) ) /* 関数hogeのxをaに置き換える...
nusum( A^^k, k, 0, inf );
num( BBconjinv[1,1] );
末尾$ /* 出力を省略 */
hoge(x), x:0.25; /* env( x:0.25, hoge(x) ) と同じく、一...
romberg 数値積分
** 関数の定義 [#e2ba1611]
hoge( x, y, z ):= x,y,zを使った関数 /* 関数の定義 */
f(x):=0.3*x*x-1.2*x+5;
define( nab_f(x), diff( f(x), x ) ); /* 微分として定義...
nab_f(x):=diff( f(x), x ); /* 期待通りに働かない */
nab_f(x):='diff( f(x), x ); /* 期待通りに働かない */
f(1.2);
nab_f(1.2);
場合分けのある関数の定義
ua(x,c):=if x>=c-1 and x<=c+1 then 1/2*(x-c)*(x-c-1) els...
** 行列 [#z584eafe]
A:matrix( [ 1,2],[3,4] );
A:matrix( [-1, exp(-%i*phi)], [exp(%i*phi), 0] );
A.A; A^^3; A^^4; A^^5; A^^-1; A^^0; /* 行列の積は . べ...
exp( A ); /* これは各要素のexpが計算されるので注意 */
determinant(A); /* 行列式の値。なお、0のときA^^-1はエラ...
transpose( A ) /* 行列Aを転置する */
conjugate(transpose( A )) /* Aの転置複素共役 */
** 浮動点少数として計算 [#nc11b5ec]
float( 1/3 ); /* 浮動点少数として結果を出力 */
bfloat(1/3); /* 〃 */
bfloat(1/3), fpprec:8; /* 8桁の浮動点少数として出力 */
** 方程式を解く [#b7ba135d]
TOUfunc(V0,E,a):=( (1+V0^2*(sinh(sqrt(2*(V0-E))*a))^2/(4...
ans:solve( TOUfunc( 80, 74, a )=0.5, a );
bfloat( [rhs(ans[1]), rhs(ans[2])] ), fpprec:4;
** 式展開やまとめる方法 [#l519030c]
expand 展開 <--> factor 因数分解
partfrac <--> ratsimp
trigreduce 三角関数の積を減少 <--> trigsimp
trigexpand 三角関数の引数を展開 <--> trigsimp
ページ名: