# Difference between revisions of "ApCoCoA-1:Bertini.BPCSSolve"

## Bertini.BPCSSolve

Sampling a component for a positive dimensional homogeneous or non-homogeneous polynomial system.

### Syntax

```Bertini.BPCSSolve(P:LIST, SysTyp:STRING ,  ConfigSet:LIST):LIST
```

### Description

Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.

Please note: You need to write (or generate by using the function Bertini.BPCSolve) the witness date file. Then save this file with the name "witness_data" in ApCoCoA directory/Bertini, Otherwise you will get an error message. It is highly recommended to read about sampling before using this function. The best and comprehensive reference for this is chapter 15 of the book "The Numerical Solution of Systems of Polynomials" by A. J. Sommese and C. W. Wampler.

The fundamental capability upon which all the membership tests depend is the ability to sample a component given a witness point on it. The witness points are the isolated points of intersection betwween an affine algebraic set and generic linear space. To sample a component, we simply move the linear space in continuous fashion. As long as the prescribed path avoids a proper algebraic subset of nongeneric linear spaces, the intersection with the component remains isolated and defines a real one dimensional path of points on the component. Sampling is just the process of setting up such paths and following the points of intersection.

For component sampling, Bertini reads in information about the witness set corresponding to the target system in the input �file from the witness_data �file. It then queries the user about which component to sample and how many points to �find. After the user's choices are made, Bertini simply moves the appropriate linears around (as in monodromy) and gathers the desired number of sample points. These points are then simply returned to the screen or writen in a file.

• @param P: List of polynomials of the given system.

• @param SysTyp: Type of polynomials in the system P. Homogeneous ("hom") or nonhomogeneous ("Nhom").

• @param ConfigSet: List of strings representing configurations to be used. Bertini uses multiple configuration settings. These configurations should be provided by the user. If you want to use default configurations then set ConfigSet := ["TRACKTYPE: 2"]. If you want to provide specific configurations then simply add them to ConfigSet. Please note that ConfigSet must contain "TRACKTYPE: 2". For details about configuration settings see Bertini manual http://www.nd.edu/~sommese/bertini/BertiniUsersManual.pdf.

• @return A list of lists containing witness point supersets.

#### Example

```-- An example of sampling using default configurations
-- We want to sample positive dimensional homogenous system (y-x^2)*(x^2+y^2+z^2-1)*(x-5), (z-x^3)*(x^2+y^2+z^2-1)*(y-5),
-- (y-x^2)*(z-x^3)*(x^2+y^2+z^2-1)*(z-5).

Use S ::= QQ[x,y,z];
P := [(y-x^2)*(x^2+y^2+z^2-1)*(x-5), (z-x^3)*(x^2+y^2+z^2-1)*(y-5),(y-x^2)*(z-x^3)*(x^2+y^2+z^2-1)*(z-5)];
SysTyp := <quotes>Nhom</quotes>;
ConfigSet := [<quotes>TRACKTYPE: 2</quotes>];
-- Save the file witness_data in ApCoCoA directory/Bertini. In this exammple we can use the following file.

4
3
1
2
52
5.565526640875543e-01 3.486877417858003e-01
3.500659632917004e-01 -6.132734154671150e-01
-5.721270410075433e-01 2.012168578122028e-03
6.863472388783394e-01 5.972202311132409e-01
52
5.565526640873006e-01 3.486877417858785e-01
3.500659632926851e-01 -6.132734154660159e-01
-5.721270410085784e-01 2.012168576850362e-03
6.863472388783461e-01 5.972202311130588e-01
1.000000000000000e+00
0
3.319220103162024e-03
0.000000000000000e+00
10
1
0
0
52
5.036510877340633e-01 1.454616573815811e-01
-5.531197782767149e-01 1.264217225328824e-01
4.692782265207243e-01 -7.716455726951312e-01
8.298040333939428e-01 6.089446696116878e-01
52
5.036510877340730e-01 1.454616573815189e-01
-5.531197782770511e-01 1.264217225329790e-01
4.692782265211026e-01 -7.716455726952207e-01
8.298040333939808e-01 6.089446696117080e-01
1.000000000000000e+00
0
1.494343809475570e-03
0.000000000000000e+00
10
1
0
0
2
6
52
1.777791036661873e+00 -5.879389926987107e-01
8.371810169339621e-01 -5.381722763592328e-01
3.596166136115721e-01 -3.879323179323894e-01
1.337065929459078e-01 -2.473259991477609e-01
52
1.777791036661789e+00 -5.879389926985648e-01
8.371810169340158e-01 -5.381722763590965e-01
3.596166136114090e-01 -3.879323179324481e-01
1.337065929459972e-01 -2.473259991477353e-01
9.239465819894503e+00
0
2.311369308586180e-02
0.000000000000000e+00
10
1
3
0
52
2.801078874321721e-01 5.815307461738819e-01
3.602184484724343e-01 -6.856646564513529e-01
-9.183171422752723e-01 1.429861040336559e-01
7.942652024873893e-01 7.828205287876466e-01
52
2.801078874345398e-01 5.815307461783135e-01
3.602184484733199e-01 -6.856646564552420e-01
-9.183171422767007e-01 1.429861040419545e-01
7.942652024894031e-01 7.828205287870957e-01
9.903193701737050e+01
0
6.113734060564361e-04
0.000000000000000e+00
10
1
3
0
52
7.794026532326790e-01 6.438486770366723e-01
-5.511209013756149e-01 -4.552697655906182e-01
3.897013266163394e-01 3.219243385183361e-01
1.054343379801123e+00 5.809168127219385e-01
52
7.794026532326920e-01 6.438486770366824e-01
-5.511209013756679e-01 -4.552697655905938e-01
3.897013266164013e-01 3.219243385183344e-01
1.054343379801143e+00 5.809168127219345e-01
4.374295962959485e+00
0
2.286082168348384e-01
0.000000000000000e+00
10
1
0
0
52
2.480644358066108e-01 2.812814217076330e-01
-5.317945942111184e-01 1.336818293531960e-01
1.829122341866813e-01 -7.805728420468510e-01
8.915030044886882e-01 7.610652719830333e-01
52
2.480644358050654e-01 2.812814217073318e-01
-5.317945942103757e-01 1.336818293522557e-01
1.829122341846779e-01 -7.805728420469515e-01
8.915030044881618e-01 7.610652719839810e-01
6.015239676438355e+02
0
5.166904527784629e-05
0.000000000000000e+00
10
1
3
0
52
1.429155740109253e+00 -5.743679627312509e-01
7.145778700546264e-01 -2.871839813656256e-01
2.279525891501262e-01 -7.528357666690323e-01
1.786444675136565e-01 -7.179599534140634e-02
52
1.429155740109399e+00 -5.743679627313251e-01
7.145778700546536e-01 -2.871839813657727e-01
2.279525891502284e-01 -7.528357666688903e-01
1.786444675135966e-01 -7.179599534147321e-02
1.651321081771953e+01
0
8.707915499833527e-03
0.000000000000000e+00
10
1
1
0
52
7.185714193516700e-01 -2.226007471289887e+00
5.081067233904082e-01 -1.574024977920998e+00
3.592857096758350e-01 -1.113003735644943e+00
-9.638142491390969e-01 5.075337374339561e-01
52
7.185714193515241e-01 -2.226007471290154e+00
5.081067233903571e-01 -1.574024977921150e+00
3.592857096758574e-01 -1.113003735645067e+00
-9.638142491392726e-01 5.075337374340601e-01
3.841442764800970e+01
0
2.603188596646477e-02
0.000000000000000e+00
10
1
2
0
3
1
52
1.299580404330397e+00 -6.044565403080021e-01
6.497902021651987e-01 -3.022282701540011e-01
6.497902021651987e-01 -3.022282701540011e-01
6.497902021651987e-01 -3.022282701540011e-01
52
1.299580404330128e+00 -6.044565403085679e-01
6.497902021653607e-01 -3.022282701541981e-01
6.497902021650848e-01 -3.022282701542752e-01
6.497902021649185e-01 -3.022282701538901e-01
6.896280458897404e+00
0
4.394857579432204e-03
0.000000000000000e+00
10
1
0
0
-1

2
1 2
108723397967774785/1152921504606846976 -1276921637840786251/73786976294838206464
-1830867849111980429/36893488147419103232 -4584732275555858575/4611686018427387904

2
3
4
1 0
0 0
0 0
0 0

0 0
2 4
367776963113838806789/20000000000000000 8578223665279742151/100000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000

4
4028259749117460225/18446744073709551616 -4330798452886879565/36893488147419103232
11914445949293424397/73786976294838206464 10011862545781538653/18446744073709551616
2033170931026697119/18446744073709551616 4595823280080588459/9223372036854775808
10271323522064441169/18446744073709551616 -16068244986954793375/73786976294838206464

2 1
-5527276071396270107/73786976294838206464 6119401794520521373/18446744073709551616
5101220359790769903/36893488147419103232 -8579339317661386167/9223372036854775808

3
1
4
1 0
0 0
0 0
0 0

0 0
1 4
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000
-3156090912479527573/100000000000000000 4338464515047412657/2000000000000000000000

4
4028259749117460225/18446744073709551616 -4330798452886879565/36893488147419103232
11914445949293424397/73786976294838206464 10011862545781538653/18446744073709551616
2033170931026697119/18446744073709551616 4595823280080588459/9223372036854775808
10271323522064441169/18446744073709551616 -16068244986954793375/73786976294838206464

3 0

4
1 0
0 0
0 0
0 0

0 0
0 4

4
4028259749117460225/18446744073709551616 -4330798452886879565/36893488147419103232
11914445949293424397/73786976294838206464 10011862545781538653/18446744073709551616
2033170931026697119/18446744073709551616 4595823280080588459/9223372036854775808
10271323522064441169/18446744073709551616 -16068244986954793375/73786976294838206464

-- Then we compute the sample points with
Bertini.BPCSSolve(P,SysTyp,ConfigSet);

--Then you need to interact with ApCoCoAServer. At this stage the ApCoCoAServer will look like this

NOTE: You have requested to use adaptive path tracking.  Please make sure that you have

setup the following tolerances appropriately:
COEFFBOUND: 1.060000000000e+02, DEGREEBOUND: 8.000000000000e+00
AMPSAFETYDIGITS1: 1, AMPSAFETYDIGITS2: 1, AMPMAXPREC: 1024

*************** Components to Sample ****************

Dimension 2: 1 classified component
-----------------------------------------------------
degree 2: 1 component

Dimension 1: 4 classified components
-----------------------------------------------------
degree 1: 3 components
degree 3: 1 component

Dimension 0: 1 classified component
-----------------------------------------------------
degree 1: 1 component

Please select a dimension to sample (-1 to quit):

-- Now depending on the information in ApCoCoAServer you need to select a dimension to sample. Lets enter 2 (for dimension 2)
-- At this stage you will have the following information in ApCoCoAServer

Dimension 2: 1 classified component
-----------------------------------------------------
degree 2: 1 component

Please select a component to sample (-1 to quit):

-- According to the information in ApCoCoAServer dimensioin 2 has 1 classified component
-- Now enter 0 for first component (note that 0 means first component, 1 means second component and so on)
-- At this stage you will get the following message in ApCoCoAServer.

How many points you would like to find on component 0 of dimension 2(-1 to quit)?

-- Lets say we need two points. Then we enter 2.
-- Now you will have the following message in ApCoCoAServer.

Enter 0 to write the sample points to a file or enter 1 to display the sample points to the screen:

--Definitely we enter 0. Because we want sample points in a file.
--The next message in ApCoCoAServer will be

Enter the name of the file where to write the sample points (max of 255 characters):

--Enter the name <quotes>witness_data</quotes> for the file. This is important. If you provide some other name
--then you will get error message in ApCoCoA GUI. Now you are done and you can see your
--required points as list of lists in ApCoCoA GUI.
---------------------------------------------------------------
[
[
Vector(1757273644596243375574545953819515856489/100000000000000000000000000000000000,
8147772211058790989036635734369200777823/1000000000000000000000000000000000000),
Vector(-431733868086111204913711309223667436531/250000000000000000000000000000000000,
-37962521351941262128928875924787458113/2000000000000000000000000000000000),
Vector(-1557380603151899455989605438122949238809/100000000000000000000000000000000000,
564916712400652233062432018034019557871/50000000000000000000000000000000000)
],
[
Vector(-121943356274388147122353428227028494517/6250000000000000000000000000000000,
1360624366795248157000895588285686343567/100000000000000000000000000000000000),
Vector(269101922754170957542913598304064433393/12500000000000000000000000000000000,
65533729956025537516221610150609783991/6250000000000000000000000000000000),
Vector(-845765805387772422259623073262578114251/500000000000000000000000000000000000,
-1174655199638212258677283490719018859963/50000000000000000000000000000000000)
]
]

--For Bertini output files please refer to ApCoCoA directory/Bertini.
```