Example 0 (Astronomical data).
We apply the holonomic gradient descent method to the problem
minimize f(x,y,r=1) * exp( - S11*x11 - S12*x12 - S13*x13 - S22*x22 -
S23*x23 - S33*x33 - S1*y1 - S2*y2 - S3*y3 )
subject to (x11,x12,x13,x22,x23,x33,y1,y2,y3) in A (in R^9)
where
[S11,S12,S13,S22,S23,S33,S1,S2,S3]
=[0.3119,0.0292,0.0707,
0.3605,0.0462,
0.3276,
-0.0063,-0.0054,-0.0762];
and
A=domain([-30,-30,-30,-30, -30, -30.0, -30.0, -30, -30],
[ 10, 10, 10, 10, 20, -0.01, -0.01, -0.001, 10] )
=[-30,10] x [-30,10] x ... x [-30,-0.001] x [-30,10]
(We fix the value of y1 in a narrow strip)
The function f(x,y,r) is the Fisher-Bingham integral on the sphere S^2.
---------------------------
We provide some programs to solve this problem on the computer algebra
system Risa/Asir and Maple
at http://www.math.kobe-u.ac.jp/OpenXM/Math/Fisher-Bingham
(Programs are provided as they are in our study and keep our tries and have
no cosmetics.
A user friendly package of the holonomic gradient descent method will provided later.)
Instruction to execute this program (on Debian GNU linux)
1. Download all programs with the extension .rr.
(sei15c.rr, sei15.rr set15a.rr, sei13.rr)
2. If you do not have Risa/Asir (version >= 20100206), install it:
2.a. Add the line
http://fe.math.kobe-u.ac.jp/KnoppixMath ./
to /etc/apt/sources.list
2.b. sudo su
2.c apt-get update
2.d dpkg --purge openxm
2.e. apt-get install openxm
You do not need Maple to execute the function test5b_demo().
3. Start the Risa/Asir, load sei15c.rr, and execute test5b_demo():
asir
load("sei15c.rr");
test6_64_demo();
The starting point of the holonomic gradient descent method is taken at
Pos = [-0.161,0.4377,1.0604,
0.2038,0.6924,
-0.0428,
-0.019,-0.0162,-0.2286]
This starting point is found by an approximation of the target function
by a polynomial (see our paper).
During the first execution, the big data file "tmp-sei13c-r1.ab" is
automatically downloaded by "wget". It will take a while.
The file "tmp-sei13c-r1.ab" is the Pfaffian system for the Fisher-Bigham
integral on S^2.
The output of this function will be
[5,5,[-0.161,0.3377,1.1104,0.2538,0.6424,-0.0928,-0.019,-0.0162,-0.2286],[11.68573121328159669,14.91244805708979873,0.2030659537984784740,0.003250244171008496903,0.004930946227270569453,-0.3545059504800473289]]
point = [[x11,-0.161],[x12,0.3377],[x13,1.1104],[x22,0.2538],[x23,0.6424],[x33,-0.0928],[y1,-0.019],[y2,-0.0162],[y3,-0.2286]]
int value=13.53011258277268755
This means that the target function takes the minimal
11.68573121328159669
at the point
point = [[x11,-0.161],[x12,0.3377],[x13,1.1104],
[x22,0.2538],[x23,0.6424],
[x33,-0.0928],
[y1,-0.019],[y2,-0.0162],[y3,-0.2286]]
We pose that conditions x33 <= -0.01, y1 <= -0.01 and y2 <= -0.001,
because x33=y1=y2=0 belong to the singularity of the equation.
y1 and y2 do not change from the starting point and
lie on the border of the domain.
Other points are in the interior.
This means that we solved the optimization problem
with the confinement that y1 and y2 are almost 0.
===============================
The function test6_64() works with Risa/Asir and Maple.
Although we cannot change the starting point Pos in test6_64_demo(),
we can change the starting point "Pos" when we use the function test6_64().
-----------------------------------------------