Maple für Professional
Maple für Akademiker
Maple für Studenten
Maple Personal Edition
Maple Player
Maple Player für iPad
MapleSim für Professional
MapleSim für Akademiker
Maple T.A. - Testen & beurteilen
Maple T.A. MAA Placement Test Suite
Möbius - Online-Courseware
Machine Design / Industrial Automation
Luft- und Raumfahrt
Fahrzeugtechnik
Robotics
Energiebranche
System Simulation and Analysis
Model development for HIL
Anlagenmodelle für den Regelungsentwurf
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematikausbildung
Technik
Allgemein- und berufsbildende Schulen
Testen und beurteilen
Studierende
Finanzmodelle
Betriebsforschung
Hochleistungsrechnen
Physik
Live-Webinare
Aufgezeichnete Webinare
Geplante Veranstaltungen
MaplePrimes
Maplesoft-Blog
Maplesoft-Mitgliedschaft
Maple Ambassador Program
MapleCloud
Technische Whitepapers
E-Mail Newsletters
Maple-Bücher
Math Matters
Anwendungs-Center
MapleSim Modell-Galerie
Anwenderberichte
Exploring Engineering Fundamentals
Lehrkonzepte mit Maple
Maplesoft Welcome-Center
Resource-Center für Lehrer
Help-Center für Studierende
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