Maple 11 における記号計算の拡張
Maple 11 では、次のような記号計算機能の拡張が行われています。
|
物理
|
|
•
|
新しい Physics パッケージが追加され簡単な計算からより高度な量子場理論に関する各種の物理計算を実現します。このパッケージには、例えば、Kronecker 記号、計量テンソル g_[mu, nu] 、Pauli Dirac 行列、Indexed Differentiation Operator (微分演算子) d_[mu]、d'Alembertian、可換・非可換、および非可換変数と微分を含むそれらに関連した演算、繰返し添え字に対する和のルールの適用などを提供しています。このパッケージは、テンソルの表記などを用いて伝統的な力学系の問題の解法や研究に用いられます。さらには、ひも理論や場における典型的な超対称モデルの入力など、超空間で定義された量子場に対する各種の式表現による計算を実現します。詳細は、 New Packages in Maple 11 を参照してください。
|
|
|
微分幾何
|
|
•
|
新しい DifferentialGeometry パッケージは、ベクトル場の計算や微分形式とその変換、テンソル解析、ジェット空間上の計算、リー代数およびリー群、変換群などに対して特徴付けられたコマンドやサブパッケージの包括的な一式を提供しています。各種の計算はユーザが指定する座標系で実現されます。このパッケージには、de Rham 理論や 2 重複体(bicomplexes)に対する各種のホモトピー作用も提供しています; その他には リー代数の分解のためのプログラムや、そのリー代数から可解なリー群の構成のためのプログラムが提供されています。さらには、リー代数の各種の指標、ベクトルのリー代数、および数学・数理物理学から取り上げられている微分方程式についても含まれています。これらの詳細については、 New Packages in Maple 11 を参照してください。
|
|
|
積分
|
|
積分は以下の 2 つの方法で拡張されています: 一般の特殊関数の存在性における不定積分を与え、Jacobi の楕円関数の有理関数に関する 2 重周期関数を含む積分として扱います。
例題
>
|
Int(2*Ei(exp(x))/exp(x)*exp(exp(x))-Ei(exp(x))^2/exp(x), x);
|
| (4.1) |
| (4.2) |
>
|
Int(BesselJ(nu+1,x)/BesselJ(nu,x), x);
|
| (4.3) |
| (4.4) |
>
|
Int(exp(x)*HeunTPrime(a,b,c,exp(x))*HeunT(a,b,e,x)+HeunT(a,b,c,exp(x))*HeunTPrime(a,b,e,x), x);
|
| (4.5) |
| (4.6) |
周期関数を含む積分
>
|
Int((1-a^2*JacobiSN(x, k)^2)^2, x);
|
| (4.7) |

| (4.8) |
>
|
Int(1/(1+I*JacobiSC(x,k)), x);
|
| (4.9) |

| (4.10) |
>
|
Int(JacobiDN(x,k)*JacobiCN(x,k)/JacobiNC(x,k), x);
|
| (4.11) |
| (4.12) |
|
|
積分方程式ソルバ
|
|
•
|
新規コマンド intsolve が線形の積分方程式を解くためのコマンドとしてライブラリに追加されています。このコマンドは、各種の積分方程式の閉形式の解を探し出します。例えば、第 1 種および第 2 種の Fredholm-Volterra 方程式で、既存の問題にマッチしない特殊なタイプの方程式については、まず初期条件を持った常微分方程式として表現することで扱われ、Maple の dsolve コマンドにより処理されます。オプションとして、このコマンドはラプラス変換を用いて計算するか、または Neuman の方法により解の級数近似を計算します。
|
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
>
|
f(x) + b*Int((x*y+x^2*y^2)*f(y), y = -1..1) = h(x);
|
| (5.1) |
| (5.2) |
20 次までの級数近似を計算
>
|
ee := p(x) -1/2*Int(x*y*p(y),y=0....1) = 5/6*x;
|
| (5.3) |
>
|
intsolve(ee, p(x), method=Neumann, order=20);
|
| (5.4) |
閉形式の厳密解と比較
| (5.5) |
|
|
Solve
|
|
•
|
solve コマンドでは、いろいろな種類のパラメータを含む方程式や不等式に対して条件解(区分的な解)を返すことができるようになりました。1 変数または多変数の線形不等式系は関連する線形な表現の簡単な関数のタイプを含むものと同様に完全にサポートされます。条件解(区分的な解)は、パラメータに依存した区分関数(piecewise 関数)の形式で返されます。
|
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
>
|
solve([x>0,y>0,x+y<=4,x+y<a],[x,y]);
|
| (6.1) |
>
|
solve(abs(x + a) + abs(x + b) > 2, x);
|
| (6.2) |
>
|
solve(abs(x + a) + abs(x + b) > 2, x) assuming b > 2, a < 0;
|
| (6.3) |
>
|
solve([(x-1)*(x-2)*(x-3)=0,a*(x-1)<2+b*(x-1)],[x]);
|
| (6.4) |
solve コマンドが条件解を無視するように設定を変更することが可能です。その場合、パラメータのすべての値に対して真となる解のみが返されます。
>
|
_EnvConditionalSolutions := false;
|
| (6.5) |
>
|
solve([(x-1)*(x-2)*(x-3)=0,a*(x-1)<2+b*(x-1)],[x]);
|
| (6.6) |
>
|
|
|
|
微分
|
|
diff コマンドでは、判別式が 0 に等しいときに 4 つの Weierstrass 関数の導関数を計算できるようになりました。WeierstrassP(x, g2, g3)について、その判別式は = g2^3 - 27 g3^2 で、 = 0 のときは導関数を計算する以前に公式が存在しません。
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
Weierstrass 関数とその判別式
>
|
[WeierstrassP(z,g2, g3), WeierstrassPPrime(z,g2, g3), WeierstrassSigma(z,g2, g3), WeierstrassZeta(z,g2, g3), discriminant = g2^3 - 27*g3^2];
|
![[WeierstrassP(z, g2, g3), WeierstrassPPrime(z, g2, g3), WeierstrassSigma(z, g2, g3), WeierstrassZeta(z, g2, g3), discriminant = g2^3-27*g3^2]](/support/helpjp/helpview.aspx?si=2499/file01499/math391.png)
| (7.1) |
判別式が 0 のとき、 は に関係しているので、 の各点で上式を評価するとその条件を満たしていることがわかります。
>
|
eval(%, [g2 = 3*t^2, g3=t^3]);
|
![[WeierstrassP(z, 3*t^2, t^3), WeierstrassPPrime(z, 3*t^2, t^3), WeierstrassSigma(z, 3*t^2, t^3), WeierstrassZeta(z, 3*t^2, t^3), discriminant = 0]](/support/helpjp/helpview.aspx?si=2499/file01499/math406.png)
| (7.2) |
t に関する微分を計算
>
|
map(Diff = diff, %[1..-2], t);
|

| (7.3) |
4 つの JacobiTheta 関数は 2 番目の引数に関して微分できます。
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
>
|
JacobiTheta3(z,q):
Diff(%, q) = diff(%, q);
|

| (7.4) |
D および diff 記号を共に含んでいるような場合は、微分を自動的に簡単化するほうがよい場合もあります。
>
|
`@@`(D[1],3)(f)(x):
Diff(%, x) = diff(%, x);
|
| (7.5) |
|
|
総和形式への変換
|
|
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
>
|
convert(cos(x)*exp(x), Sum);
|
| (8.1) |
>
|
convert(exp(arcsin(x)), Sum);
|
| (8.2) |
オプション引数を用いて展開点、展開時の変数、総和式の変数を指定:
>
|
convert(ln(x), Sum, x=1, dummy = k);
|
| (8.3) |
>
|
convert(Int(erf(t)/t, t=0..x), Sum, expansionvariable = x, dummy = k);
|
| (8.4) |
|
|
総和と線形再帰方程式
|
|
•
|
sum コマンドが未知関数についても無限級数を計算できようになりました。
|
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
基本的な問題は以下のようなものです。
| (9.1) |
| (9.2) |
ここで用いられているメインアイデアは、総和式をまず“すべての差分”と剰余の和として分解し、それから“すべての差分”となる部分の和を厳密に計算しています。
>
|
Sum(u[n+2]/(u[n+1]^p)-u[n+1]/(u[n]^p), n);
|
| (9.3) |
| (9.4) |
>
|
Sum((n+1)^3*u[n+2]*v[n+1]^5+v[n+2]^3-n^3*u[n+1]*v[n]^5,n);
|
| (9.5) |
| (9.6) |
|
|
簡単化 (simplify コマンド)
|
|
副関係式に関する簡単化のためのルーチンが完全に書き換えられ、Maple 11 で拡張された Groebner パッケージのメリットを利用できるようになりました。このコマンドではまた、分数式の簡単化についても 2 種類の新しいアルゴリズムを実装しています。
|
|
多項式 GCD 計算
|
|
•
|
Maple の整数係数多変数多項式の GCD 計算用ルーチンが、以前の実装よりも数倍のオーダーで高速に GCD を計算する新しいルーチンに置き換えられました。
|
•
|
Content, Expand, Gcd, Gcdex, Normal, Quo, Prem, Primpart, Rem, Resultant, および Sqrfree を mod で用いた際に 1 つ以上の RootOf を含む入力についても扱えるようになりました。
|
>
|
f := Expand((x+RootOf(_Z^2+2))*(x+1)) mod 11;
|
| (11.1) |
>
|
g := Expand((x+RootOf(_Z^2+3))*(x+1)) mod 11;
|
| (11.2) |
| (11.3) |
>
|
h := Expand(f*g) mod 11;
|

| (11.4) |
| (11.5) |
|
|
各種数学関数の変換ルーチンのネットワーク化
|
|
いろいろな数学関数の変換ネットワークが、数多くの三角関数およびそれらの逆関数、対数関数のより新しい大域的な変換に対応するよう拡張されました。新しいオプション引数は、すべての変換ネットワークを扱えるように実装されています。
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
新しい変換例:
>
|
ln(z):
% = convert(%, arcsin);
|
| (13.1) |
>
|
%% = convert(%%, arccot);
|
| (13.2) |
>
|
(cosh(x)-sinh(x))^2/sinh(x)^2:
% = convert(%, coth);
|
| (13.3) |
>
|
polar(a,x):
% = convert(%, sin);
|
| (13.4) |
|
|
その他
|
|
•
|
simplex[convexhull] コマンドに 3 つの新オプション output=area, output=hull, および output=plot を追加しました。詳細については対応するヘルプページを参照してください。
|
例題
以下の例題を実行するには、このヘルプページをワークシートとして開いてください。ヘルプシステム上では、ヘルプブラウザのツールバー上の ワークシートに現在のヘルプページを開く ボタンを押してください。
>
|
type( [ 1, 2, 2/3 ], 'partition' ); # not a list of positive integers
|
| (14.1) |
>
|
type( [ 1, 2, 3 ], 'partition' );
|
| (14.2) |
|
|