Maximaの主なコマンド

-1 ↑戻 − オンラインmaxima
 (1) http://maxima-online.org/
 パソコンにインストールして活用するのが望ましい。
 タブロイド版もある。
しかし、
 取りあえず、web上で使うことができる。

00 ↑戻 0 定数,初期化等
 (1) π:
C:%pi;
 (2) e:
C:%e;
 (3) i:
C:%i;
 (4) ∞:
C:inf;
 (5) 小数点表示
C:%pi;
float(C),numer;
 (6) 初期化
kill(all);
 (7) 'diff等の実行
ev('diff(%e^x,x,3),nouns,numer);
 (7-2) if文を含む計算の実行
f:if(x<10) then 1200 else 1200+240*(x-10) /*fは、使用量xから料金を求める式*/;
y:subst(x=18,f) /*yは、xの値をfに代入*/;
ev(y,nouns,numer) /*yの計算実行*/;

 (8) 文字の条件設定
assume(cos(t)>0);

10 ↑戻 1 グラフ描画
解像度1920×1080で,アスペクト比(x:y)=2:1.
 plot2d(x^2,[x, -4, 4], [y, -2, 2]);
maxima-online.orgでは,アスペクト比(x:y)=4.1:3.
 plot2d(x^2,[x, -4.1, 4.1], [y, -3, 3]);
 とすると,ほぼ1:1のアスペクト比になる.

微調整は,定規を画面にあてて,調整する.
以下は,画面の調整のコマンド等
 [g]:格子の書き込み
 [m]:マウス先の座標表示
 マウススクロール:x座標の移動
 [Shift]+マウススクロール:y座標の移動
 [Ctrl]+マウススクロール:x,y座標の縮小・拡大
 [Ctrl]+[Shift]+マウススクロール:x座標の縮小・拡大
  ([g]と組み合わせ,gnuplotのwindowの枠をドラッグして1:1とする.)

 (1) 2次元グラフ
f:x;
plot2d (f, [x, -2*%pi, 2*%pi],[y,-%pi,%pi]);
 (1-1) 2次元グラフ
f:x;
wxdraw2d(yrange=[-3,3],color=black,explicit(f,x,-5,5),color=red,implicit(x^2+y^2=1,x,-5,5,y,-5,5));
 (1-2) 2次元グラフ
f(x):=sum((-1)^(k-1)/k,k,1,fix(x)) /*(-1)^(k-1)/kの、kが1からfix(x)までの和*/;
g(x):=sum(1/(2*k-1),k,1,fix(1*x))-sum(1/(2*k),k,1,fix(3*x)) /*(-1)^(k-1)/kの、kが奇数番目はfix(x)まで、偶数番目はfix(3*x)までの和▲▲▲ */;
draw2d(yrange=[-1,3],color=black,explicit(f(x),x,1,100),color=red,explicit(g(x),x,1,100));
 (1-3) 2次元グラフ(点と点線)
t1:[[[10,0],[20,0]],[[10,1],[20,1]]];
ta:[[[10,0]],[[10,1]]];
tb:[[[20, 1]],[[20, 0]]];
pt[5]:5;
pt[6]:6;
draw2d(xrange = [5,25], yrange = [-5,25],
points_joined = true,
line_type = dots,
point_type =-1,
points(t1[1]),points(t1[2]),
points_joined = false,
point_type =pt[5],
color =if pt[5] = 5 then red else blue,
points(ta[1]),points(tb[1]),
point_type =pt[6],
color =if pt[6] = 5 then red else blue,
points(ta[2]),points(tb[2])
) /*t1,t2のグラフ表示*/$
 (2) 3次元グラフ
f:log ( x^2*y^2 );
plot3d ( f, [x, -2, 2], [y, -2, 2], [z, -8, 4], [palette, false], [color, magenta]);
 (2-1) パラメータグラフ表示
draw3d(enhanced3d=true,implicit(x^2+y^2-z^2=1,x,-2,2,y,-2,2,z,-2,2),parametric(4,t,2*sin(t),t,-3,3));
 (3) パラメータグラフ表示
C:[cos(t),sin(t)];
P:[parametric,C[1],C[2]];
plot2d(P,[t,0,2*%pi],[nticks,100]);
 (3-1) パラメータグラフ表示

wxdraw2d(nticks=1000,parametric(cos(8*t),sin(3*t),t,0,2*%pi))$
 (4) 混在グラフ表示
 (ア)
f:x;
g:sin(x);
C:[2,t];
P:[parametric,C[1],C[2]];
plot2d([f,g,P],[x,-20,20,1],[y,-10,10,1],[t,-10,10]);
 (イ)
f:x/2;
g:2*sin(x);
tg:taylor(g,x,0,8);
C:[2,t];
P:[parametric,C[1],C[2]];
A:realroots(f=tg);
Ax:rhs(A[1]);
Ay:subst(x=Ax,f);
Pxy:[[3,4],[5,6],[Ax,Ay]];
D:[discrete,Pxy];
plot2d([f,g,P,D],[x,-20,20,1],[y,-10,10,1],[t,-10,10],[style,line,line,line,points]);
 (ウ)
draw2d(yrange=[-1,3],color=black,explicit(x,x,0,3),color=red,implicit(y=x^2,x,0,3,y,-1,3),points([[1,1],[2,-0.5]]));
 (5) 陰関数のグラフ
kill(all);
load(implicit_plot);
C:x^2+y^2=4;
implicit_plot(C,[x,-6,6],[y,-3,3]);
 (5-1) 陰関数のグラフ

wxdraw2d(implicit(y^2=3/2*x^3-2*x+1,x,-4,4,y,-4,4), color=red,implicit(y^2=x^3-2*x+1,x,-4,4,y,-4,4))$
 (6) 空間曲線表示
f:exp(t)*(8*sin(t)/5+4*cos(t)/5)+exp(-2*t)/5;
g:exp(t)*(2*sin(t)/5+6*cos(t)/5)-exp(-2*t)/5;
h:exp(t)*(-2*sin(t)/5+4*cos(t)/5)+exp(-2*t)/5;
plot3d([f,g,h],[t,0,3],[u,-5,5],[grid,100,2], [gnuplot_pm3d,false]);
 (7) 空間曲面表示

(ア)

load(draw)$
draw3d(
surface_hide = true,
color=blue,
explicit(x^2+y^2,x,0,1,y,0,1),
color=brown,
parametric_surface(s,s,t, s,0,1, t,0,%pi),
color=green,
parametric_surface(1,s,t, s,0,1, t,0,%pi),
color=yellow,
parametric(cos(t),sin(t),t,t,0,2*%pi),
contour = surface,
contour_levels = {0,0.5}
)$

(イ)

load(draw)$
draw3d(
surface_hide = true,
color=cyan,
explicit(x-y+4*sin(x^2-y^2),x,-0.3,0.3,y,-0.3,0.3),
color=magenta,
parametric(0,t,-t+4*sin(-t^2),t,-0.3,0.3),
color=brown,
parametric(t,0,t+4*sin(t^2),t,-0.3,0.3),
color=orange,
parametric(t,0,t,t,-0.3,0.3),
color=violet,
parametric(0,t,-t,t,-0.3,0.3),
color=gray,
explicit(x-y,x,-0.3,0.3,y,-0.3,0.3)
)$

20 ↑戻 2 代数
 (1) 右辺
f:x=t^2;
rhs(f);
 (2) 左辺
f:x=t^2;
lhs(x=t^2);
 (3) 係数
f:a*x^2+b*x+c-y;
coeff(f,x,2);
 (3.1) 次数
f:a*x^2+b*x+c-y;
hipow(f,x);
 (4) 展開
f:(x-4)^3;
expand(f);
 (5) 因数分解
f:x^2-2*x-3;
factor(f);
 (6) 方程式
f:x+4=8;
A:solve(f,x);
 (6.1) 不等式(絶対値も可)
load(fourier_elim)$
f:x^2+x-6;
A:fourier_elim( [f>0], [x]);

 (7) 連立方程式
 (ア)
f1:x-y=0;
f2:x+y=5;
A:linsolve([f1,f2],[x,y]);
f11:subst(A[1],f1);
A1:solve(f11,y);

 (イ)
f1:x-y=0;
f2:x+y=5;
A:solve([f1,f2],[x,y]);
f11:subst(A[1][1],f1);
A1:solve(f11,y);
 (8) 代入
 (ア)
f:sin(x);
A:x=%pi/2;
subst(A,f);

 (イ)
f:x+y^2+exp(x*y*z);
A:[x=2,y=-1,z=0];
subst(A,f);
 (9) 整理
f:(x+y)^4;
f:expand(f);
f:rat(f,x);
 (9.1) 昇べきの順,降べきの順
f:(x+y)^2-4*x+5*y+3;
f:expand(f);
powerdisp:true;
rat(f,x);
powerdisp:false;
rat(f,x);
 (10) 部分分数分解
f:(x^2+10)/(x*(x^2+6*x+10));
pf:partfrac(f,x);

 (10.1) 通分
f:1/x+6/(x^2+6*x+10);
tf:xthru(f);

 (10.2) 分子
f:(x^2+10)/(x*(x^2+6*x+10));
nf:num(f);

 (10.3) 分母
f:(x^2+10)/(x*(x^2+6*x+10));
df:denom(f);

 (11) 級数
S10:sum(x^(i-1),i,1,10);
Sn:sum(x^(i-1),i,1,n);
Sns:sum(x^(i-1),i,1,n),simpsum;
S10n:nusum(x^(i-1),i,1,10);
Snn:nusum(x^(i-1),i,1,n);

 (12) 整商、余り、約数
m:18;
va:quotient(m,10);
vb:mod(m,10);
Ld:listify(divisors(m));

30 ↑戻 3 線形代数
 (1) 縦ベクトル
b:matrix([1],[2]);
 (2) 横ベクトル
c:matrix([1,2]);
 (3) 行列
A:matrix([1,2],[3,4]);
 (4) 行列Aと縦ベクトルbの積
A:matrix([1,2],[3,4]);
b:matrix([1],[2]);
A.b;
 (5) 横ベクトルcの縦ベクトルへの変換
kill(all);
load(eigen);
c:[1,2];
c1:columnvector(c);
transpose(c1);
 (6) 転置(縦横変換)
c:matrix([1,2]);
transpose(c);
 (7) 逆行列
A:matrix([1,2],[3,4]);
IA:invert(A);
A1:IA.A;
A2:A.IA;
 (8) 行列式
A:matrix([1,2],[3,4]);
dtA:determinant(A);
 (9) 特性方程式
A:matrix([1,2],[3,4]);
cp:charpoly(A,x);
 (10) 行列Aの特性多項式の展開
A:matrix([1,2],[3,4]);
cp:charpoly(A,x);
cp:expand(cp);
 (11) 固有ベクトル
A:matrix([1,2],[3,4]);
evA:eigenvectors(A);
  →[[[固有値],[重複数]],[[[固有ベクトル]]]]
 (12) 固有縦ベクトルの行列,行列の対角化
A:matrix([1,2],[3,4]);
evA:eigenvectors(A);
P:transpose(matrix(evA[2][1][1],evA[2][2][1]));
IP:invert(P);
IP:ratsimp(IP);
dmA:IP.A.P;
dmA:ratsimp(dmA);

40 ↑戻 4 三角関数の展開
 (1) 展開(加法定理)
f:sin(x-y);
f:trigexpand(f);
 (2) 簡素化・計算
(ア)

f:sin(x)^2+cos(x)^2;
f:trigsimp(f);
(イ)

f:sin(x)^2+cos(x)^2;
f:trigrat(f);
 (3) 指数関数化
fs:sin(3*x);
epfs:exponentialize(fs);
fc:cos(3*x);
epfc:exponentialize(fc);
 (4) 積を減らす(積和等)
(ア)

f:sin(x)*cos(y);
f:trigreduce(f);
f:sin(x)*cos(x);
f:trigreduce(f);
(イ)

f:sin((x+y)/2)*cos((x-y)/2);
g:subst([(x-y)/2=V-U,(x+y)/2=V+U],f);
g:trigexpand(g);
g:expand(g);
g:trigsimp(g);
g:trigreduce(g);
g:subst([U=x/2,V=y/2],g);
 (5) 展開(倍角)
fs2:sin(2*x);
fs2:trigexpand(fs2);
fs3:sin(3*x);
fs3:trigexpand(fs3);
fc2:cos(2*x);
fc2:trigexpand(fc2);
fc3:cos(3*x);
fc3:trigexpand(fc3);
ft2:tan(2*x);
trigexpand(ft2);
ft3:tan(3*x);
trigexpand(ft3);
 (6) 和積
f:sin(x)+sin(y);
u:(x+y)/2;
v:(x-y)/2;
g:subst([x=u+v,y=u-v],f);
g:trigexpand(g);
f;
g:trigsimp(g);
 (7) 合成
f:a*sin(x)+b*cos(x);
a1:subst(x=\%pi/2,f);
s1:a1/abs(a1);
a2:a1/s1;
b1:subst(x=0,f);
b2:b1/s1;
r:sqrt(a2^2+b2^2);
th:asin(b2/r);
f1:s1*r*sin(x+th);

50 ↑戻 5 指数・根号計算,指数関数、対数関数
 (1) 指数の整理
f:(a^m)^n;
f:radcan(f);
 (2) 複素指数関数の三角関数化
f:demoivre(exp(%i*t));
f:exponentialize(f);
f:radcan(f);

 (3) 根号の計算
a:sqrt(2)*sqrt(5);
rootscontract(a);

a:(sqrt(6)+3*sqrt(2))*sqrt(5);
a:rat(a);
a:rootscontract(a);

 (3.1) 分母の有理化
a:1/sqrt(5);
a:rat(a),algebraic:true;

a:1/sqrt(5)+1/sqrt(3);
a:ratsimp(a),algebraic:true;

 (3.2) 二重根号を外す
load (sqdnst)$
a:sqrt(8+2*sqrt(15));
sqrtdenest(a);

 (4) 常用対数の定義
log10(x):=log(x)/log(10);
v:log10(100);
v:radcan(v);

 (5) 対数の展開
v:log(a*b);
v1:v,logexpand=super;

 (6) 対数の簡約
v:log(a)+log(b);
v1:logcontract(v);

60 ↑戻 6 微積分
 (1) 極限値
f:sqrt(x+1)-sqrt(x);
finf:limit(f,x,inf);
 (2) 微分
f:x^2;
df:diff(f,x,1);
 (3) マクローリン展開・テーラー展開
(ア)マクローリン展開

f:(1+x)^(1/2);
mf:taylor(f,x,0,4);
(イ)テーラー展開

f:(1+x)^(1/2);
tf:taylor(f,x,3,4);
 (4) 定積分
f:x^2;
Iabf:integrate(x^2,x,0,3);
 (5) 不定積分
f:x^2;
If:integrate(f,x);
 (6) 数値積分(近似)
f:3/(10-8*cos(x));
Iabf:quad_qags(f,x,0,%pi*2);
  →[積分近似値, 絶対誤差, 被積分関数の評価数, エラーコード]
  エラーコード
   0 問題なし
   1 部分区間の数が上限超
   2 丸め誤差が超過
   3 被積分関数の振る舞いが極端に悪い
   4 収束に失敗
   5 積分が発散しているか収束が遅い
   6 入力が無効
 (7) 線積分(らせん)(ds)
f:x^2*z;
r:[cos(t),sin(t),t];
dr:diff(r,t);
ds=sqrt(dr.dr);
ft:subst([x=r[1],y=r[2],z=r[3]],f);
ICfds:integrate(ft*ds,t,0,2*%pi);
 (8) 線積分(らせん)(dr=[dx,dy,dz])
f:x^2*z;
r:[cos(t),sin(t),t];
dr:diff(r,t);
ft:subst([x=r[1],y=r[2],z=r[3]],f);
ICfdr:integrate(ft*dr,t,0,2*%pi);
 (9) 面積分(球面)(dS)
kill(all);
load(vect);
f:x;
r:[sin(u)*cos(v),sin(u)*sin(v),cos(u)];
fuv:subst([x=r[1],y=r[2],z=r[3]],f);
ru:diff(r,u);
rv:diff(r,v);
rurv:trigsimp(express(ru~rv));
dS:sqrt(rurv.rurv);
dS:radcan(dS);
dS:trigsimp(dS);
ISfdS:integrate(integrate(fuv*dS,u,0,%pi/2),v,0,%pi/2);
 (10) 面積分(球面)(F・ndS)
kill(all);
load(vect);
F:[0,x,z^2];
r:[sin(u)*cos(v),sin(u)*sin(v),cos(u)];
Fuv:subst([x=r[1],y=r[2],z=r[3]],F);
ru:diff(r,u);
rv:diff(r,v);
rurv:express(ru~rv);
rurv:trigsimp(express(rurv));
ndS:rurv;
ISfndS:integrate(integrate(Fuv.ndS,u,0,%pi/2),v,0,2*%pi);
 (11) 体積分(極座標)(dV)
kill(all);
load(vect);
f:x;
p:[r*sin(u)*cos(v),r*sin(u)*sin(v),r*cos(u)];
fruv:subst([x=p[1],y=p[2],z=p[3]],f);
pr:diff(p,r);
pu:diff(p,u);
pv:diff(p,v);
pupv:express(pu~pv);
J:trigsimp(pr.(pupv));
dV:J;
IWfdV:integrate(integrate(integrate(fruv*dV,r,0,1),u,0,%pi/2),v,0,%pi/2);

70 ↑戻 7 微分方程式
 (1) 常微分方程式
f:ddy+y=0;
f:subst([ddy='diff(y,x,2),dy='diff(y,x)],f);
Y:ode2(f,y,x);
 (2) 微分方程式初期値設定
  2階

f:ddy+y=0;
f:subst([ddy='diff(y,x,2),dy='diff(y,x)],f);
F:ode2(f,y,x);
F:ic2(F,x=0,y=1,'diff(y,x)=2);
ic2(y=%k1*sin(x)+%k2*cos(x),x=0,y=1,'diff(y,x)=2);
  1階
f:dy=-tan(x)*y;
f:subst([ddy='diff(y,x,2),dy='diff(y,x)],f);
F:ode2(f,y,x);
F:ic1(F,x=0,y=1);
F:trigsimp(F);
ic1(y=%c*cos(x),x=0,y=1);
 (3) 線形連立微分方程式
(ア)
atvalue(y(x),x=0,1);
atvalue(z(x),x=0,1);
desolve(['diff(y(x),x)=2*y(x)-z(x),'diff(z(x),x)=y(x)+2*z(x)],[y(x),z(x)]);
(イ)
f1:dy=2*y-z;
f2:dz=y+2*z;
f1:subst([y=y(x),z=z(x)],f1);
f1:subst([dy='diff(y(x),x),dz='diff(z(x),x)],f1);
f2:subst([y=y(x),z=z(x)],f2);
f2:subst([dy='diff(y(x),x),dz='diff(z(x),x)],f2);
F:desolve([f1,f2],[y(x),z(x)]);
ratsimp(F);

80 ↑戻 8 ラプラス変換
 (1) ラプラス変換
f:%e^(-t);
laplace(f,t,s);
 (2) ラプラス逆変換
F:1/(s-1);
ilt(F,s,t);

90 ↑戻 9 フーリエ級数展開,フーリエ変換
 (1) ロード
kill(all);
load(fourie);
 (2) フーリエ級数展開
(ア)

kill(all);
load(fourie);
f(x):=2*x*(x-1)*(x+1);
Ff:totalfourier(f(x),x,3/2);
define(g1(x),subst(50,inf,Ff));
g(x):=ev(g1(x),nouns,numer);
plot2d ([f(x),g(x)], [x, -3, 3],[y,-5,5]);
(イ)maximaで積分困難な場合、テーラー展開近似して、
kill(all);
load(fourie);
f(x):=1/(2+sin(x));
g:taylor(f(x),x,0,10);
f3:0;
for m: 0 thru 10 do
f3:f3+coeff(g,x,m)*x^m;
f1(x):=f3;
Ff:totalfourier(f1(x),x,1/2);
define(g1(x),subst(50,inf,Ff));
g(x):=ev(g1(x),nouns,numer);
plot2d ([f(x),g(x),f3], [x, -3, 3],[y,-5,5]);
(ウ)定義による数値積分
f:if 0<=x and x<1 then 1 elseif -1<=x and x<0 then -2 else 0;
L:%pi;
pipL:%pi/L;
n:5;
a0:quad_qags(f,x,-L,L);
ff:a0[1]/(2*L);
for m: 1 thru n do
ff:ff+quad_qags(f*cos(m*pipL*x),x,-L,L)[1]/L*cos(m*pipL*x);
for m: 1 thru n do
ff:ff+quad_qags(f*sin(m*pipL*x),x,-L,L)[1]/L*sin(m*pipL*x);
ff;
plot2d([f,ff],[x,-6,6],[y,-3,3]);
 (3) フーリエ変換
ロードは必要なし
fp:1-x/2;
fm:1+x/2;
kF:exp(-%i*w*x);
Ffp:integrate(fp*kF,x,0,2);
Ffp:demoivre(Ffp);
Ffp:radcan(Ffp);
Ffm:integrate(fm*kF,x,-2,0);
Ffm:demoivre(Ffm);
Ffm:radcan(Ffm);
Ff:Ffp+Ffm;
Ff:radcan(Ff);
 (4) フーリエ変換の関連積分
f:sin(x)^4/x^4;
tf:taylor(f,x,0,50);
v:integrate(tf,x,-2.5,2.5);
plot2d([f,tf],[x,-10,10],[y,-5,5]);
グラフから積分区間を再評価すること;

a0 ↑戻 10 ベクトル解析
 (1) パッケージ読み込み
kill(all);
load(vect);
 (2) ベクトル定義
a:[1,-2,1];
b:[2,3,-1];
 (3) 内積
a:[1,-2,1];
b:[2,3,-1];
a.b;
 (4) 外積
kill(all);
load(vect);
a:[1,-2,1];
b:[2,3,-1];
axb:a~b;
express(axb);
 (5) 関数定義
f(x,y,z):=(x^2+y^2+z^2)^(5/2);
f123:f(1,2,3);
 (6) ノルム関数の定義
norm(a):=sqrt(a.a);
a:[1,-2,1];
na:norm(a);
 (7) ベクトル解析演算
kill(all);
load(vect);
f(x,y,z):=(x^2+y^2+z^2)^(5/2);
lpf:laplacian(f(x,y,z));
lpf:express(lpf);
lpf:ev(lpf,diff);
grf:grad(f(x,y,z));
grf:express(grf);
grf:ev(grf,diff);
dvF:div([x,x^2,x*y*z]);
dvF:express(dvF);
dvF:ev(dvF,diff);
rtF:curl([x,x^2,x*y*z]);
rtF:express(rtF);
rtF:ev(rtF,diff);
 (8) grad,外積等の代数実行
kill(all);
load(vect);
f(x,y,z):=(x^2+y^2+z^2)^(5/2);
lpf:laplacian(f(x,y,z));
lpf:express(lpf);
 (9) 代数実行の微分実行
kill(all);
load(vect);
f(x,y,z):=(x^2+y^2+z^2)^(5/2);
lpf:laplacian(f(x,y,z));
lpf:express(lpf);
lpf:ev(lpf,diff);
 (10) 全微分
z:x*y;
diff(z);
  del(x)をdxと読むこと
 (11) 関数関係定義
depends(w,[x,y],x,[r,u],y,[r,u]);
 (12) 偏微分
depends(w,[x,y],x,[r,u],y,[r,u]);
wr:diff(w,r);
wu:diff(w,u);
 (13) 極座標定義
X:r*cos(u);
Y:r*sin(u);
xr:diff(X,r);
yr:diff(Y,r);
xu:diff(X,u);
yu:diff(Y,u);
 (14) 連鎖律
depends(w,[x,y],x,[r,u],y,[r,u]);
wr:diff(w,r);
wu:diff(w,u);
wr:subst(xr,diff(x,r),wr);
wr:subst(yr,diff(y,r),wr);
  これで,wrの連鎖律実現
wu:subst(xu,diff(x,u),wu);
wu:subst(yu,diff(y,u),wu);
 (15) 極座標の偏微分公式変数変換
depends(w,[x,y],x,[r,u],y,[r,u]);
wr:diff(w,r);
wu:diff(w,u);
ds2:wr^2+wu^2/r^2;
ds2:ratsimp(ds2);
ds2:trigsimp(ds2);
   →wx^2+wy^2がでる.
wrr:diff(wr,r);
wrr:subst(xr,diff(x,r),wrr);
wrr:subst(yr,diff(y,r),wrr);
wuu:diff(wu,u);
wuu:subst(xu,diff(x,u),wuu);
wuu:subst(yu,diff(y,u),wuu);
  これで,wrr,wuuの連鎖律実現
lpw:wrr+wr/r+wuu/r^2;
lpw:ratsimp(lpw);
lpw:trigsimp(lpw);
  →wxx+wyyがでる.

b0 ↑戻 11 複素関数論
 (1) 極形式,直交形式
rz:x+%i*y;
pz:polarform(rz);
rz:rectform(pz);
 (2) 経路・関数定義
r:exp(%i*t);
f:1/(z-0.5);
f:subst(z=r,f);
dr:diff(r,t);
 (3) 被積分関数の実部,虚部
rpf:realpart(f*dr);
trigsimp(rpf);
ipf:imagpart(f*dr);
trigsimp(ipf);
 (4) tによる複素数値積分を実部,虚部に分けて実行
quad_qags(rpf,t,0,%pi*2);
quad_qags(ipf,t,0,%pi*2);
  →[積分近似値, 絶対誤差, 被積分関数の評価数,  エラーコード]
 (5) コーシーの積分公式等
z:cos(t)+%i*sin(t);
f:exp(Z)*sin(Z)/Z^3;
fz:subst(Z=z,f);
dz:diff(z,t);
IR:quad_qags(realpart(fz*dz),t,0,%pi*2);
II:quad_qags(imagpart(fz*dz),t,0,%pi*2);
  →[積分近似値, 絶対誤差, 被積分関数の評価数,  エラーコード]
If:IR[1]+II[1]*%i;
Res:expand(If/(2.0*float(%pi)*%i));
tf:taylor(subst(Z=x,f),x,0,8);
Res1:coeff(tf,x,-1); /*参考留数ローラン展開における1/xの係数の2πi倍が上記積分値*/

c0 ↑戻 12 制御
 (1) for do
f3:cos(x);
for m: 1 thru 5 do
display([m,subst(x=0,diff(f3,x,2*m))]);

(1-2)
f3:cos(x);
for m: 1 step 2 while m<7 do print("m=",m,"d2m=",diff(f3,x,2*m),"d2m(0)=",subst(x=0,diff(f3,x,2*m)));

(1-3)
y1:[];
for m: 1 thru 628 do (
x:m/100,
y:(float(sin(x))),
y1:endcons([x,y],y1)
);
draw2d(points(y1));

 (2) if elseif else
f:if -1<x and x<0 then -1 elseif 0<x and x<1 then 1 else 0;
draw2d(yrange=[-3,3],explicit(f,x,-6,6));
d0 ↑戻 13 サブルーチン
 (1) 平方完成
cmpsq(poly, x) := block(
[a, b, c, p],
p: ratsimp(poly, x),
a: coeff(p, x, 2),
b: coeff(p, x, 1),
c: coeff(p, x, 0),
a*(x+ratsimp(b/(2*a)))^2+ratsimp(-b^2/(4*a)+c)
) /*平方完成関数の定義*/$
cmpsq(x^2+x+1,x);