Huom! Jotta tämän sivun kaavojen alaindeksit ja eksponentit näkyisivät oikein, HTML 3:n soveltuvin osin hallitseva selain on tarpeen. TKK:n atk-keskuksen koneissa sellaisia ovat Arena ja Netscape 2.0, jotka käynnistyvät komennoilla arena ja netscape2.

Cox-Little-O'Shean esimerkki uudelleen lagr:n avulla

Lasketaan uudelleen edellä jo kertaalleen käsitelty Cox-Little-O'Shean kirjan esimerkki [1] eli määritetään funktion x3+2xyz-z2 ääriarvot rajoitusehdolla x2+y2+z2 = 1.

Verrataan samalla tämän menetelmän ja Maplen oman extrema-funktion nopeutta:


> restart;
> read `groebner.mpl`;
> read `lagr.mpl`;
> st:=time(): lagr(x^3+2*x*y*z-z^2, x^2+y^2+z^2-1); time()-st;

                                                                     28
         [{y = 0, x = 1, z = 0}, 1, {y = 1/3, x = -2/3, z = 2/3}, - ----]
                                                                     27

                                      3.283
> restart;
> readlib(extrema);

proc(fcn,cnstrnts,vars,candidates) ... end

> st:=time(): extrema(x^3+2*x*y*z-z^2, x^2+y^2+z^2-1); time()-st;

                                          28
                                   {1, - ----}
                                          27

                                      2.917

Groebner-kanta-menetelmällä meni siis 3,3 sekuntia, extremalla 2,9. Ero ei ole kovin suuri, mutta (varsin huonosti optimoitu) Groebner-kanta-menetelmä on kuitenkin hitaampi.

Antamalla lagr:lle neljänneksi argumentiksi sana verbose saadaan näkyviin enemmän informaatiota:


> lagr(x^3+2*x*y*z-z^2, [x^2+y^2+z^2-1], [], verbose);

The equations are:
[2*x*z-2*lambda_[1]*y, 2*x*y-2*z-2*lambda_[1]*z, 3*x^2+2*y*z-2*lambda_[1]*x, -x
^2-y^2-z^2+1]

The Groebner bases are:
[[y+1, z, x, lambda_[1]], [y-1, z, x, lambda_[1]], [y, z-1, x, 1+lambda_[1]], [
y, z+1, x, 1+lambda_[1]], [3*y-1, 3*z-2, 2+3*x, 3*lambda_[1]+4], [3*y+1, 3*z+2
, 2+3*x, 3*lambda_[1]+4], [3*z+y, 128*z^2-11, 8*x+3, 8*lambda_[1]-1], [y, z, x-
1, -3+2*lambda_[1]], [y, z, x+1, 3+2*lambda_[1]], [y+1, z, x, lambda_[1]], [y-1
, z, x, lambda_[1]]]
[[{x = 0, z = 0, lambda_[1] = 0, y = -1}, {x = 0, z = 0, lambda_[1] = 0, y = 1}
, {z = 1, y = 0, x = 0, lambda_[1] = -1}, {y = 0, x = 0, z = -1, lambda_[1] = -
1}, {y = 1/3, x = -2/3, z = 2/3, lambda_[1] = -4/3}, {y = -1/3, x = -2/3, z = -
2/3, lambda_[1] = -4/3}, {x = -3/8, lambda_[1] = 1/8, y = -3/16*22^(1/2), z = 1
/16*22^(1/2)}, {y = 0, x = 1, z = 0, lambda_[1] = 3/2}, {y = 0, z = 0, x = -1, 
lambda_[1] = -3/2}, {x = 0, z = 0, lambda_[1] = 0, y = -1}, {x = 0, z = 0, 
lambda_[1] = 0, y = 1}], [{x = 0, z = 0, lambda_[1] = 0, y = -1}, {x = 0, z = 0
, lambda_[1] = 0, y = 1}, {z = 1, y = 0, x = 0, lambda_[1] = -1}, {y = 0, x = 0
, z = -1, lambda_[1] = -1}, {y = 1/3, x = -2/3, z = 2/3, lambda_[1] = -4/3}, {y
 = -1/3, x = -2/3, z = -2/3, lambda_[1] = -4/3}, {z = -1/16*22^(1/2), y = 3/16*
22^(1/2), x = -3/8, lambda_[1] = 1/8}, {y = 0, x = 1, z = 0, lambda_[1] = 3/2}
, {y = 0, z = 0, x = -1, lambda_[1] = -3/2}, {x = 0, z = 0, lambda_[1] = 0, y
 = -1}, {x = 0, z = 0, lambda_[1] = 0, y = 1}]]

The critical points are:
{{z = -1/16*22^(1/2), y = 3/16*22^(1/2), x = -3/8}, {z = 1, y = 0, x = 0}, {y
 = 0, x = 0, z = -1}, {x = 0, z = 0, y = -1}, {x = 0, z = 0, y = 1}, {y = 0, x
 = 1, z = 0}, {y = 1/3, x = -2/3, z = 2/3}, {y = -1/3, x = -2/3, z = -2/3}, {x
 = -3/8, y = -3/16*22^(1/2), z = 1/16*22^(1/2)}, {y = 0, z = 0, x = -1}}


           Maximum point, maximum value, minimum point, minimum value:

                                                                     28
         [{y = 0, x = 1, z = 0}, 1, {y = 1/3, x = -2/3, z = 2/3}, - ----]
                                                                     27

Seuraavaksi on tarjolla lisää esimerkkejä lähteestä [4].
Kenrick Bingham 18.5.1996