Maple Professional
Maple Academic
Maple Student Edition
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professional
MapleSim Academic
Maple T.A. - Testing & Assessment
Maple T.A. MAA Placement Test Suite
Möbius - Online Courseware
Machine Design / Industrial Automation
Aerospace
Vehicle Engineering
Robotics
Power Industries
System Simulation and Analysis
Model development for HIL
Plant Modeling for Control Design
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematics Education
Engineering Education
High Schools & Two-Year Colleges
Testing & Assessment
Students
Financial Modeling
Operations Research
High Performance Computing
Physics
Live Webinars
Recorded Webinars
Upcoming Events
MaplePrimes
Maplesoft Blog
Maplesoft Membership
Maple Ambassador Program
MapleCloud
Technical Whitepapers
E-Mail Newsletters
Maple Books
Math Matters
Application Center
MapleSim Model Gallery
User Case Studies
Exploring Engineering Fundamentals
Teaching Concepts with Maple
Maplesoft Welcome Center
Teacher Resource Center
Student Help Center
Groebner[SuggestVariableOrder] - よい変数順序の選択
使い方
SuggestVariableOrder(J, X)
パラメータ
J
-
多項式のリストか集合、または PolynomialIdeal
X
(オプション) 変数のリストか集合
説明
SuggestVariableOrder コマンドは、plex や tdeg の Groebner 基底計算を高速に行える、よい変数の順序を、発見的選択を試みます。実際、悪い変数順序を用いると、もともと単純な問題でも解けなくなってしまうほど、変数の順序は計算効率に影響を与えるものです。変数はオプションの第 2 引数を用いることで明示的に指定できます。
発見的方法は、各変数の多項式の次数と係数の大きさに基づいています。この方法はいつも最適な順序を見つけるわけではなく、また、まれに悪い順序を選択する事もあります。
SuggestVariableOrder は Groebner[Basis] の第 2 引数が名前であり、既知の適当な基底がない場合、このコマンドによって呼び出されます。
例
最初の例は Trinks の問題からです。全次数の Groebner 基底を、変数順序を指定することなく計算します。Groebner[Basis] コマンドは SuggestVariableOrder を自動的に呼び出します。
with(Groebner):
trinks := [-9*w+15*p*t+20*z*s, 99*w-11*s*b+3*b^2, w*p+2*z*t-11*b^3, 45*p+35*s-165*b-36, 35*p+40*z+25*t-27*s, 15*w+25*p*s+30*z-18*t-165*b^2]:
G := Groebner[Basis](trinks, 'tord', order=tdeg):
tord;
続いて、辞書式順序の基底を、選択された変数順序、その逆、ばらばらに並べた という順序それぞれについて比較してみます。
V := SuggestVariableOrder(trinks);
G := Groebner[Basis](trinks, plex(V)):
length(G);
map(length@maxnorm, G); # digits in the largest coefficient
V2 := seq(V[-i], i=1..6); # reverse the variables
G2 := Groebner[Basis](trinks, plex(V2)):
length(G2);
map(length@maxnorm, G2);
V3 := op(combinat[randperm]([V]));
G3 := Groebner[Basis](trinks, plex(V3)):
length(G3);
map(length@maxnorm, G3);
参照
Groebner[Basis], length, maxnorm
Download Help Document