Maple 9 の数式処理の改良
Maple 9 は、数式処理に多くの改良を行いました。特に、特殊関数、微分方程式ソルバ、代数方程式ソルバ、積分についての記号を大幅に改良しました。
|
積分
|
|
•
|
新規オプション AllSolutions が int に追加されました。このオプションを使用して、定積分を計算し、完全な解集合を返すように、int に指示を与えることができます。詳細は、int を参照してください。
|
| (1.1) |
>
|
r := int(1/x, x=a..2, 'AllSolutions');
|
| (1.2) |
| (1.3) |
| (1.4) |
>
|
int(abs(sin(x)), x=0..2*Pi*m) assuming m::integer;
|
| (1.5) |
>
|
int(abs(sin(x)), x=0..2*Pi*m, 'AllSolutions') assuming m::integer;
|
| (1.6) |
| (1.7) |
>
|
int(1/x, x=a..b) assuming a < b;
|
| (1.8) |
|
|
FunctionAdvisor コマンド
|
|
数学関数を計算に使用することに加えて、たとえば、定義、恒等式、積分形、級数展開など、数学関数のMapleでの性質に関する一般的な情報も必要です。 この種の情報は、新しいFunctionAdvisor (と関連する MathematicalFunctions パッケージ) を使用して、Maple 9プロンプトから直接アクセスすることができます。
trig, trigh, arctrig, arctrigh,
elementary, GAMMA_related, Psi_related, Kelvin,
Airy, Hankel, Bessel_related, `0F1`,
Ei_related, erf_related, Kummer, Whittaker,
Cylinder, `1F1`, orthogonal_polynomials, Elliptic_related,
Legendre, Chebyshev, `2F1`, Lommel,
Struve_related, hypergeometric, Jacobi_related, Elliptic_doubly_periodic,
Weierstrass_related, Zeta_related, Other
各数学関数、あるいは、関数クラスに関して適用の場合、コマンド FunctionAdvisor は、つぎのトピックスについての情報を提供します。
analytic_extension asymptotic_expansion branch_cuts branch_points calling_sequence
classify_function class_members DE definition describe
differentiation_rule display function_classes identities integral_form
known_functions relate series singularities specialize
special_values sum_form synonyms topics
引数なしで呼び出される場合、FunctionAdvisor は、コマンドの使い方を表示します。
The usage is as follows:
> FunctionAdvisor( topic, function, ... );
where 'topic' indicates the subject on which advice is required, 'function' is the name of a Maple function, and '...' represents possible additional input depending on the 'topic' chosen. To list the possible topics:
> FunctionAdvisor( topics );
A short form usage,
> FunctionAdvisor( function );
with just the name of the function is also availabe and displays a summary of information about the function.
| |
>
|
FunctionAdvisor(topics);
|
The topics on which information is available are:
![[DE, analytic_extension, asymptotic_expansion, branch_cuts, branch_points, calling_sequence, class_members, classify_function, definition, describe, differentiation_rule, function_classes, identities, integral_form, known_functions, relate, series, singularities, special_values, specialize, sum_form, synonyms]](/support/helpjp/helpview.aspx?si=2584/file01584/math311.png)
| (3.1) |
FunctionAdvisor は、例えば、"Bessel関数に対するMapleでの名前"のような基本的な情報も表示します。
* Partial match of "bess" against topic "Bessel_related".
The 14 functions in the "Bessel_related" class are:
![[BesselI, BesselJ, BesselK, BesselY, HankelH1, HankelH2, AiryAi, AiryBi, KelvinBer, KelvinBei, KelvinKer, KelvinKei, KelvinHer, KelvinHei]](/support/helpjp/helpview.aspx?si=2584/file01584/math324.png)
| (3.2) |
>
|
FunctionAdvisor(describe, BesselK);
|
| (3.3) |
また、つぎのように、Maple の内部的な知識データベースと関連するアルゴリズムを使用して計算された、数学関数とその恒等式の間のより複雑な関係も含みます。
>
|
FunctionAdvisor( identities, BesselK ); # see also ?convert,to_special_function
|
![[BesselK(a, z) = (2*a-2)*BesselK(a-1, z)/z+BesselK(a-2, z), BesselK(a, z) = BesselK(a+2, z)+(-2*a-2)*BesselK(a+1, z)/z]](/support/helpjp/helpview.aspx?si=2584/file01584/math340.png)
| (3.4) |
>
|
FunctionAdvisor( special_values, sec );
|
![[sec((1/6)*Pi) = (2/3)*3^(1/2), sec((1/4)*Pi) = 2^(1/2), sec((1/3)*Pi) = 2, sec(infinity) = undefined, sec(infinity*I) = 0, [sec(n*Pi) = -1, And(n::odd)], [sec(n*Pi) = 1, And(n::even)], [sec((1/2)*n*Pi) = infinity+infinity*I, And(n::odd)]]](/support/helpjp/helpview.aspx?si=2584/file01584/math347.png)
| (3.5) |
>
|
FunctionAdvisor( sum_form, tan );
|
| (3.6) |
>
|
FunctionAdvisor( integral_form, Beta );
|
| (3.7) |
>
|
FunctionAdvisor( relate, sin, WhittakerM );
|
| (3.8) |
>
|
FunctionAdvisor( specialize, HermiteH, KummerU );
|
![[HermiteH(a, z) = 2^a*z*KummerU(1/2-(1/2)*a, 3/2, z^2), And(((1/2)*a-1/2)::nonnegint)], [HermiteH(a, z) = 2^a*KummerU(-(1/2)*a, 1/2, z^2), And(((1/2)*a)::nonnegint)]](/support/helpjp/helpview.aspx?si=2584/file01584/math375.png)
| (3.9) |
逆余接関数 (inverse cotangent function)についての情報をまとめた表
>
|
arccot_info := FunctionAdvisor(arccot, quiet): # raw table of information
|
>
|
FunctionAdvisor(display, arccot_info); # ordered display
|
|
|
数学関数の変換ルーチン
|
|
数学関数間の変換は、Maple 8 で導入されました。Maple 9 では、変換可能なパスの数は、より多くなり、ほとんど 3 倍になっています。さらに、14 個の新しい変換がライブラリに追加され、EllipticF, InverseJacobiAM, InverseJacobiSN, JacobiAM, JacobiCN, JacobiDN, JacobiSN, Li, LommelS1, LommelS2, Psi, Si, Ssi, Zeta への変換が可能です。2 つの新しい変換ルーチン、積分形式 integral form と 和形式 sum form も追加されました。従って、ほとんどすべての数学関数に対して、和形式 (Sum) あるいは 積分形式 (Integral)を得ることが可能です。
新規関数変換
>
|
harmonic(z,n):
% = convert(%, Psi) assuming n::posint;
|
| (4.1) |
>
|
%% = convert(%%, Zeta);
|
| (4.2) |
>
|
%%% = convert(%%%, LerchPhi);
|
| (4.3) |
| (4.4) |
>
|
convert(%, EllipticF) assuming And(-1/2*Pi < Re(z),Re(z) < 1/2*Pi);
|
| (4.5) |
>
|
InverseJacobiSC(z,k):
% = convert(%, InverseJacobiSN);
|
| (4.6) |
三角関数 trigonometric functions に対する、和と積分表現
>
|
trigonometric_functions := FunctionAdvisor( trig )(z);
|
The 6 functions in the "trig" class are:
| (4.7) |
>
|
map(f -> f = convert(f,Sum), trigonometric_functions) assuming abs(z) < Pi/2;
|

| (4.8) |
>
|
map(f -> f = convert(f,Int), [sin, cos](z) );
|
| (4.9) |
>
|
tan(z):
% = convert(%, Int) assuming z in RealRange(Open(0), Open(Pi/2));
|
| (4.10) |
|
|
特殊関数
|
|
|
InverseJacobi 関数ファミリー
|
|
InverseJacobi 関数ファミリーの12個の関数が Mapleに追加されました。これらの関数は、コマンド InverseJacobiPQ により表され、P と Q は {C,D,N,S}のうちのいずれか2つです。関数 InverseJacobiAM は、通常の三角法の第1種楕円積分の形式で表されます。(参照 : 8.111 in "Table of Integrals Series and Products", Gradshteyn and Ryzhik, fifth Edition, Academic Press)
>
|
FunctionAdvisor(definition, InverseJacobiAM);
|
| (5.1.1) |
>
|
FunctionAdvisor(special_values, InverseJacobiAM);
|

| (5.1.2) |
>
|
InverseJacobiCN(z,k) assuming z = -1;
|
| (5.1.3) |
>
|
InverseJacobiSN(z,k) assuming z = infinity, k^2 > 1;
|
| (5.1.4) |
>
|
JacobiDN( InverseJacobiDN(z,k), k );
|
| (5.1.5) |
|
|
Mathieu 関数
|
|
Mathieu 関数ファミリーが Maple に追加されました。これらは、Mathieu 方程式
y'' + (a - 2 q cos(2 x)) y = 0
の解と関連するサポート関数の解です。2*Pi-周期解 (MathieuCE, MathieuSE), 一般の偶関数解 および 奇関数解 (MathieuC, MathieuS), Floquet 解 (MathieuFloquet), さらに、これらすべての1階導関数を含みます。(より高階の導関数は、微分方程式を使用して、関数とその 1 階導関数で表すことができます。)
Maple は、また、固有値の関数 (MathieuA, MathieuB) と特性指数の関数 (MathieuExponent) を実行します。詳細は、
Mathieu を参照してください。
|
|
指数関数の積分 Exponential Integral 関数に対する解析関数展開 (Analytic extension)
|
|
指数関数の積分関数は、2 引数の呼び出し手順で第1引数として非実数引数と非整数を受け取ることができます。使われている解析関数展開は、つぎのものです。
>
|
FunctionAdvisor( analytic_extension, Ei(n,z) );
|
| (5.3.1) |
これは、古典的な定義を拡張します。
>
|
Ei(n, z):
% = convert(%, Int) assuming n::nonnegint, Re(z) > 0;
|
| (5.3.2) |
上の式は、正整数または零の n と Re(z) > 0 に対して定義できます。
第1引数 exponential integral の古典的な定義は、実数の引数 x に対して定義された Cauchy の主値積分です。
>
|
Ei(z):
% = convert(%, Int) assuming z::real;
|
| (5.3.3) |
この古典的な定義は、次を使用して複素平面全体に拡張されます。
>
|
FunctionAdvisor( definition, Ei(z) );
|
| (5.3.4) |
|
|
一般化された調和 harmonic 関数
|
|
調和数に対する、調和 harmonic 関数は、特別な場合として、1 引数のコールシークエンスを含み、さらに、2 つの引数を受け取ることができるように一般化されました。harmonic(z) のこれまでの定義は、つぎのようになります。
>
|
FunctionAdvisor( definition, harmonic(z) );
|
| (5.4.1) |
一般化された調和 harmonic 関数は、つぎのように定義されます。
>
|
FunctionAdvisor( definition, harmonic(z,n) );
|
| (5.4.2) |
ここで、つぎの式が成立します。
>
|
harmonic(z,n) assuming n = 1;
|
| (5.4.3) |
|
|
関数パラメータについての仮定のもとでの計算
|
|
Maple 9 では、さらに多くの Maple 関数が仮定を考慮しています (assuming 参照)。以下の関数が含まれています。: doublefactorial, EllipticModulus, EllipticNome, GaussAGM, harmonic, pochhammer, LerchPhi, Zeta 2 つの Lommel コマンド、26 個の Jacobi と InverseJacobi コマンド。
|
doublefactorial
|
|
>
|
doublefactorial(n) assuming n > 0, n::even;
|
| (5.5.1.1) |
>
|
doublefactorial(n) assuming n > 0, n::odd;
|
| (5.5.1.2) |
|
|
GaussAGM
|
|
>
|
GaussAGM(a,b) assuming a = 0;
|
| (5.5.2.1) |
>
|
GaussAGM(a,b) assuming a = b;
|
| (5.5.2.2) |
|
|
EllipticNome と EllipticModulus
|
|
>
|
EllipticNome(k) assuming k = 1;
|
| (5.5.3.1) |
>
|
EllipticNome(k) assuming k^2 = 1/2;
|
| (5.5.3.2) |
>
|
EllipticModulus(q) assuming q = exp(-Pi);
|
| (5.5.3.3) |
|
|
LerchPhi
|
|
>
|
LerchPhi(z,a,v) assuming z=1;
|
| (5.5.4.1) |
>
|
LerchPhi(z,a,v) assuming v=1;
|
| (5.5.4.2) |
|
|
Lommel
|
|
>
|
LommelS2(mu,nu,z) assuming mu = nu + 1;
|
| (5.5.5.1) |
>
|
LommelS1(mu,nu,z) assuming mu = nu;
|
| (5.5.5.2) |
>
|
LommelS1(mu,nu,z) assuming mu = 0;
|
| (5.5.5.3) |
|
|
Jacobi
|
|
>
|
JacobiZeta(z,k) assuming (2*z/Pi)::integer;
|
| (5.5.6.1) |
>
|
JacobiAM(z,k) assuming k = 1;
|
| (5.5.6.2) |
>
|
JacobiCN(z,k) assuming k = 0;
|
| (5.5.6.3) |
>
|
JacobiSN(z,k) assuming k = 0;
|
| (5.5.6.4) |
|
|
InverseJacobi
|
|
>
|
InverseJacobiCN(z,k) assuming k=1;
|
| (5.5.7.1) |
>
|
InverseJacobiSN(z,k) assuming z=1;
|
| (5.5.7.2) |
>
|
InverseJacobiAM(z,k) assuming z = n/2*Pi, n::integer;
|
| (5.5.7.3) |
|
|
pochhammer
|
|
>
|
pochhammer(a,b) assuming a=-1, b=-2;
|
| (5.5.8.1) |
>
|
pochhammer(a,b) assuming b::complex(numeric), csgn(b)=-1;
|
| (5.5.8.2) |
|
|
Zeta
|
|
>
|
Zeta(n,z,q) assuming q=1;
|
| (5.5.9.1) |
>
|
Zeta(n,z,q) assuming n = 0, z::integer, z > 1;
|
| (5.5.9.2) |
>
|
Zeta(n,z,q) assuming n = 0, z::integer, z < 1;
|
| (5.5.9.3) |
|
|
|
|
関数の級数展開表示
|
|
Maple 9 の series コマンドは、EllipticNome, GaussAGM, ChebyshevT, ChebyshevU 4 つの JacobiTheta 関数など、様々な新しい関数の級数展開を計算することができます。
>
|
series( EllipticNome(k), k );
|
| (6.1) |
>
|
series( JacobiTheta1(z,q), q );
|
| (6.2) |
>
|
series( JacobiTheta4(z,q), q );
|
| (6.3) |
>
|
series( ChebyshevT(5,z), z );
|
| (6.4) |
>
|
series( ChebyshevT(a,z), z, 4 );
|
| (6.5) |
>
|
series( ChebyshevU(a,z), z, 3 );
|

| (6.6) |
>
|
series( GaussAGM(x,y), x, 3 );
|
| (6.7) |
Maple 9 では、コマンド series は、関数 LegendreP, LegendreQ, MeijerG, GegenbauerC, JacobiP, erf 4つ の Bessel 関数などについて、様々な新しい状況で級数展開を計算することができます。
>
|
series( LegendreP(-1/2,1/4,-(z+1)/(z-1)), z, 4 );
|
| (6.8) |
>
|
series( LegendreQ(-1/2,1/4,-(z+1)/(z-1)), z, 2 );
|

| (6.9) |
>
|
series( MeijerG([[], []],[[-1/4], [1/4]],1/4*z^2), z );
|
| (6.10) |
>
|
series( MeijerG([[1/2, 1/2], []],[[0], [-1/2]],-z^2), z);
|
| (6.11) |
>
|
series( GegenbauerC(a,b,z), z, 2);
|

| (6.12) |
>
|
series( BesselK(a,z+1), z, 2 );
|
| (6.13) |
>
|
series( polylog(a,z), z );
|
| (6.14) |
polylog に対するこの展開は、abs(z) < 1に対してのみ正しくなります。このことについて新しい FunctionAdvisor に質問することができます。
>
|
FunctionAdvisor( sum_form, polylog );
|
| (6.15) |
新しい MathematicalFunctions/Series を使用し、抽象冪をファクターアウトすることにより、様々な関数に対する抽象級数表現 (type/series ではありません。series参照) を計算することが可能になり、級数展開が適用できる条件を表示して級数展開します。
>
|
with(MathematicalFunctions, Series);
|
| (6.16) |
>
|
Series( polylog(a,z), z);
|
| (6.17) |
>
|
Series( GAMMA(a,z), z, 3 );
|
| (6.18) |
>
|
Series( BesselJ(a,z), z );
|
| (6.19) |
>
|
Series( LommelS1(a,b,z), z, 4 );
|

| (6.20) |
|
|
assuming 機能
|
|
コマンド assuming は、オプションの引数 additionally を受け取ります。
コマンド expr assuming x1::prop1, x2::prop2, ... は、名前 (複数可) x1, x2, ..., に対するそれぞれの仮定 (複数可) prop1, prop2, ... の下で、式 expr を評価します。デフォルトでは、x1, x2, などにあらかじめある仮定は、どんなものでも、結果を計算する際に無視されます。この振る舞いを無効にするためには、オプションの引数 'additionally'を使用してください。これは、assuming の右のどこにでも置くことができます。
>
|
assume(x < 1);
about(x); # so this is what the system knows about x.
|
Originally x, renamed x~:
is assumed to be: RealRange(-infinity,Open(1))
| |
デフォルトの振る舞いとして、xに対する仮定と共に assuming を使用し、計算する場合、既存の仮定 x < 1 は無視されます。
>
|
is(1-x^2, positive) assuming x > -1;
|
| (7.1) |
additionally を使用して、つぎを計算する場合、x についての既存の仮定は考慮されます。
>
|
is(1-x^2, positive) assuming additionally, x > -1;
|
| (7.2) |
オプションの引数 additionally があるかどうかに依らず、その変数にあらかじめ存在する仮定はそのまま維持されます。
>
|
about(x); # the same as lines above
|
Originally x, renamed x~:
is assumed to be: RealRange(-infinity,Open(1))
| |
>
|
x := 'x': # remove assumptions on 'x'
|
|
|
簡単化
|
|
|
三角関数
|
|
Maple 9 では、三角関数の簡単化は、三角多項式に対する新しいアルゴリズムが追加され、つぎの新しい動作を含みます。
>
|
simplify( sin(x)^2 ); # new; was 1 - cos(x)^2
|
| (8.1.1) |
>
|
simplify( cos(x)^2 ); # works as usual
|
| (8.1.2) |
>
|
simplify( 1 - cos(x)^2 ); # new; was 1 - cos(x)^2
|
| (8.1.3) |
>
|
simplify( 1 - sin(x)^2 ); # works as usual
|
| (8.1.4) |
|
|
冪 と 根号
|
|
コマンド simplify は、根号を含む式に対してより良い結果を返します。
>
|
((-(x-1)/x)^(1/2)*x*((x+1)/x)^(1/2)*a-b*(1-x^2)^(1/2))/(1-x^2)^(1/2);
|
| (8.2.1) |
>
|
simplify(%,power) assuming x > 1;
|
| (8.2.2) |
|
|
特殊関数
|
|
Maple 9 では、コマンド simplify は、より多くの関数をより簡単化することができます。
| (8.3.1) |
| (8.3.2) |
| (8.3.3) |
>
|
simplify(%) assuming a=1;
|
| (8.3.4) |
| (8.3.5) |
>
|
simplify(%) assuming z=-1, n::nonnegint;
|
| (8.3.6) |
Chebyshev 関数
| (8.3.7) |
>
|
simplify(%) assuming z = 0;
|
| (8.3.8) |
>
|
simplify(%%) assuming z = 1;
|
| (8.3.9) |
| (8.3.10) |
>
|
simplify(%) assuming z = 1;
|
| (8.3.11) |
>
|
simplify(%%) assuming a = -1/2;
|
| (8.3.12) |
InverseJacobiPQ ファミリーの新しい関数と共に、関連する新しい簡単化ルーチンは、可能な場合、問題を InverseJacobiAM が利用できるより簡単な問題に直します。
>
|
InverseJacobiDS(sec(1/2)*(1-k^2)^(1/2),k) - EllipticK(k);
|
| (8.3.13) |
| (8.3.14) |
>
|
InverseJacobiCS(csch(1/2),k);
|
| (8.3.15) |
| (8.3.16) |
|
|
RootOf の簡単化
|
|
非多項式の形で RootOf を含む式を簡単化する新しいルーチンが追加されました。
>
|
zero := Phi(y(x),(y(x)+RootOf(Phi(y(x),(y(x)+x*_Z)/_Z))*x)/RootOf(Phi(y(x),(y(x)+x*_Z)/_Z)));
|
| (8.4.1) |
>
|
simplify(zero); # new output
|
| (8.4.2) |
zero に変数 ZERO を置き、つぎの式から RootOf を 1 つ除きます。 (DEtools/remove_RootOf )
>
|
normal( DEtools[remove_RootOf]( zero = ZERO ) );
|
| (8.4.3) |
>
|
simplify(%); # new output
|
| (8.4.4) |
>
|
sin(RootOf(sin(_Z)+_Z-_Z^3))+RootOf(sin(_Z)+_Z-_Z^3)-RootOf(sin(_Z)+_Z-_Z^3)^3;
|

| (8.4.5) |
>
|
simplify(%,RootOf); # new output
|
| (8.4.6) |
|
|
"大きさ" と "定数" 式の簡単化
|
|
定数式の更なる簡単化 (新しい simplification of constant expressions ページを参照してください。)
>
|
ee := -1/2*I*exp(I)*Ei(1,I) - 1/2*Ei(1,I)*sin(1) + 1/2*I*Ei(1,I)*cos(1) - 1/2*Ei(1,-I)*sin(1) - 1/2*I*Ei(1,-I)*cos(1) + 1/2*I*exp(-I)*Ei(1,-I);
|

| (8.5.1) |
>
|
simplify(%); # using simplify(ee, constant) produces the same result faster
|
| (8.5.2) |
式の大きさに関して、新しい simplification of the expression size ページを参照してください。
>
|
e2 := -3*sin(x)^(1/2)*cos(x)^2*sin(x)^m + 3*sin(x)^(1/2)*cos(x)^2*cos(x)^n + 4*sin(x)^(1/2)*cos(x)^4*sin(x)^m - 4*sin(x)^(1/2)*cos(x)^4*cos(x)^n;
|

| (8.5.3) |
>
|
simplify(%, size); # requires the extra argument 'size' to be activated
|
| (8.5.4) |
|
|
ダミー変数の簡単化
|
|
ダミー変数が存在する場合、たとえば、定積分あるいは定和分で、積分あるいは和をとる変数に対して、ダミーが"異なって見える"場合にも式の簡単化が可能になります。
>
|
Int(f(x), x=a..b) - Int(f(y), y=a..b);
|
| (8.6.1) |
| (8.6.2) |
>
|
Limit(f(x), x=a) - Limit(f(y), y=a);
|
| (8.6.3) |
| (8.6.4) |
たとえば、微分方程式の解など、Intat の構文にダミー変数が存在する場合、simplify がダミー変数を同じにしようと試みます。これが可能な場合、操作性のより優れた式になります。たとえば、つぎのような場合です。
>
|
e1 := (-x*Intat(exp(-Int(f(_b),_b))*g(_b),_b = y(x))+exp(-Intat(f(_a),_a = y(x))))/x;
|
| (8.6.5) |
上記には、ダミー変数 _a と_b があります。simplify により、これらは、同じになります。
| (8.6.6) |
数学的な操作性は、e2 の方が優れています。 たとえば、e1 と e2 に対する factor の結果を比較してください。
>
|
factor(diff(e1,x)); # the factorization does not happen because the "dummies" are different
|

| (8.6.7) |
>
|
factor(diff(e2,x)); # the factorization happens
|
| (8.6.8) |
|
|
|
代数方程式と再帰方程式を解く
|
|
•
|
コマンド solve は、方程式のパラメトリック解を見つけるように拡張されました。solve の対象となる変数が自由変数の関数である場合、この自由変数で表されたパラメトリック解が出力されます。
|
>
|
solve( u^2+v^2-1, {u(s)=-1,v(s)=0} );
|
| (9.1) |
>
|
solve( x^x - y^y, {x(t),y(t)});
|
| (9.2) |
>
|
sys := {y(x)*x^2+3*y(x)*x+2*y(x)-2*z(x)*x^2-4*z(x)*x+z(x+1)*x^2+z(x+1)*x = 0,
y(x+5)-z(x) = 0};
|

| (9.3) |
| (9.4) |
>
|
Order := 2: sol := rsolve(sys,vars,'series');
|

| (9.5) |
|
|
その他
|
|
|
論理関数 と 論理演算子間の変換
|
|
新しい convert(expr, boolean_function) 機能は、与えられた式で、演算子 and, or, not, xor, implies を使用して構成されるすべての論理文を、関数 And, Or, Not を使用して、等価な論理関数に変換します。この変換機能 This conversion facility は、他のもの、例えば以下のものでも使用されます。
|
- 実行順序と、括弧で明らかにされる操作の優先順序で、論理文を読むこと
|
演算子で構成される論理文には、自動的に実行されるつぎのような簡単化があります。
>
|
z <> 0 and (b-2*a-2 = 0 or b-2*a = 0);
|
| (10.1.1) |
等価な論理関数文は、自動的には簡単化されません (つぎの例では、論理演算子文を囲む引用符が、変換を実行する時に必要になります)。
>
|
convert( 'z <> 0 and (b-2*a-2 = 0 or b-2*a = 0)' , boolean_function );
|
| (10.1.2) |
この関数表現は、'false' に自動的に簡単化されることはなく、論理文の操作をさらに可能にします。
論理演算子 and, or, xor, implies .. などを使用する場合、操作の優先順序は、必ずしも明らかではありません。たとえば、
>
|
a and b or c and d or e;
|
| (10.1.3) |
実行と優先の順序は、論理関数に変換する場合に明らかになります。
>
|
convert(%, boolean_function);
|
| (10.1.4) |
>
|
a xor b implies c and d;
|
| (10.1.5) |
>
|
convert(%, boolean_function);
|
| (10.1.6) |
|
|
複素数の範囲を実数の範囲または関係式に変換する
|
|
FunctionAdvisor コマンドにより提供される新しい機能に関連して、新しい 2 つのルーチン、複素領域から実領域への変換 to Real Ranges、および、実または複素領域から関係式への変換 to relations が利用可能になりました。
>
|
z::ComplexRange(-1-I,1+I);
|
| (10.2.1) |
>
|
convert( %, RealRange );
|
| (10.2.2) |
>
|
convert( %%, relation );
|
| (10.2.3) |
>
|
FunctionAdvisor( branch_cuts, arccot );
|
| (10.2.4) |
>
|
convert( %, relation );
|
| (10.2.5) |
|
|
定義
|
|
2つの新しいプロシージャ redefine と undefine (undefine 参照) が、Maple ライブラリに追加されました。これらは、コマンド define と definemore を使用して定義された名前の定義を変更するために使用されます。
>
|
define( F,
F( 0 ) = 1,
F( x::nonunit(algebraic) + y::nonunit(algebraic) ) = F( x ) + F( y ) );
F( 2 * a + b );
|
| (10.3.1) |
>
|
redefine( F, [
F( 0 ) = 1,
F( x::nonunit(algebraic) + y::nonunit(algebraic) ) = F( x ) + F( y ),
F( a::nonunit(numeric) * b::nonunit(algebraic) ) = a * F( b ) ] );
F( 2 * a + b );
|
| (10.3.2) |
>
|
undefine( F );
F( 2 * a + b );
|
| (10.3.3) |
|
|
|
参照
|
|
assuming, convert/boolean_function, convert/Int, convert/Sum, DEtools/remove_RootOf, Exponential Integral, factor, FunctionAdvisor, harmonic, int, Intat, InverseJacobi, LinearFunctionalSystems, MathematicalFunctions/Series, Mathieu, New Maple Features, redefine, RootOf, rsolve, series, simplify, simplify/constant, simplify/size, solve, undefine, updates/Maple9/differential_equations
|
|