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

## Bertini.BPCSolve

Computes numerical irreducible decomposition by finding witness point supersets of a positive dimensional homogeneous or non-homogeneous polynomial systems of equations.

### Syntax

```Bertini.BPCSolve(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.

How Bertini finds solutions

Bertini carries out many of the same operations in case of positive dimensional tracking as it does in the case of zero-dimensional

tracking, so users should read the documentation of functions designed for zero-dimensional solving before proceeding. Bertini

(by default) also sets up the cascade homotopy and uses a total degree start system at the top level to get the cascade going. Before all of this, though, Bertini computes the rank of the target system (via the SVD) at a generic point so that the system can be squared to the appropriate size (potentially decreasing both the number of variables and the number of polynomials), and so that the cascade will only run through dimensions that might have solutions.

The cascade algorithm produces a pure-dimensional witness superset in each dimension of interest, meaning it does not immediately find the desired witness sets, but rather sets that may contain "junk" from higher-dimensional components. This first step of positive-dimensional solving involves slicing the algebraic set of interest by generic hyperplane sections (in the form of linear equations with randomly chosen coefficients). Users may also ask Bertini to handle each dimension independently (i.e., not in a cascade) or use regeneration, via the configuration setting WITNESSGENTYPE. After witness superset generation

is complete (running from codimension 1 to the codimension determined by the rank test), the "junk" is removed from each pure-dimensional witness point superset either by using a membership test or by using the local dimension test. The configuration JUNKREMOVALTEST allows the user to select between the two junk removal algorithms. Once the junk is removed, Bertini has a witness point set for each dimension of interest. Using the witness set, the singular witness points are deflated. That is, for each witness point in the witness set, Bertini creates a system of polynomials and a witness point on a reduced component of the new system that corresponds to the given witness point.

To break the pure-dimensional witness sets into components, Bertini employs a combination of monodromy and a test known as the linear trace test. Once the breakup is complete, all data is reported to the user and also stored in a special file named

witness_data. Component sampling and membership testing then just involve reading in this file and moving the linears around either to sample a given component or to test whether the points given in member_points lie on an irreducible component of the algebraic set. The output files of Bertini can be found in the Bertini directory within the ApCoCoA directory.

This function uses numerical algebraic geometry to find witness point supersets of a positive dimensional homogeneous or non-homogeneous polynomial systems of equations. It enables you to use all kinds of user configurations provided by Bertini. Please read about configuration settings provided in Bertini manual. The system of polynomials may be homogeneous or nonhomogeneous. The output will be the list of all witness point supersets. Please note that every irreducible component of a solution set of a positive dimensional polynomial system is presented by a witness set whose cardinality equals the degree of the irreducible component. In this sense we refer witness point supersets as solutions of the system.

• @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: 1"]. If you want to provide user specific configurations then simply add them to ConfigSet. Please note that ConfigSet must contain "TRACKTYPE: 1". The use of configuration settings is little tricky but very usefull. You can sifft from one kind of solving to the other just by changing or adding some configurations. 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 homogeneous positive dimensional solving with default configurations.
-- We want to solve a positive dimensional homogeneous system x^2-wy=0, x^3-zw^2=0.

Use S ::= QQ[x,y,z,w];
P := [x^2-wy, x^3-zw^2];
SysTyp := "hom";
ConfigSet := ["TRACKTYPE: 1"];

-- Then we compute the solution with
Bertini.BPCSolve(P,SysTyp,ConfigSet);

-- And we achieve a list of lists containing witness point supersets.
----------------------------------------
[
[
Vector(-755572432434347/12500000000000000, 1212469385646449/500000000000000000),
Vector(1298004943638751/5000000000000000, -1142577751598529/10000000000000000),
Vector(-2342040006871913/2500000000000000, 1179799639878209/1250000000000000),
Vector(609385691937087/50000000000000000, 211745411898973/50000000000000000)
],
[
Vector(1261061851901631/2500000000000000, 2488819338268271/5000000000000000),
Vector(2282600091308383/5000000000000000, -1003166917277761/5000000000000000),
Vector(-1266611634699783/100000000000000000, -3506599942546397/10000000000000000),
Vector(-245572945934717/625000000000000, 2318280651577719/2500000000000000)
],
[
Vector(-5499850009487371/10000000000000000, -1238476107570149/1000000000000000),
Vector(1731610073705601/2000000000000000, -4674149620192353/10000000000000000),
Vector(966993267243377/2500000000000000, 1501592012502773/2500000000000000),
Vector(-1758972965024007/1000000000000000, 6238313035434359/10000000000000000)
],
[
Vector(-1674674005500441/50000000000000000000000000000000, -139223041258509/4000000000000000000000000000000),
Vector(2733406006983317/10000000000000000, -210607026124287/2000000000000000),
Vector(-918496799516071/1000000000000000, 1142768401415781/1250000000000000),
Vector(13944005158723/1250000000000000000000000000000, -3407948311604289/100000000000000000000000000000000)
]
]

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

#### Example

```-- An example of homogenous positive dimensional solving with user configurations.
-- We want to solve a positive dimensional homogenous polynomial system x^2-wy=0, x^3-zw^2=0, for fixed higher precision.

Use S ::= QQ[x,y,z,w];
P := [x^2-wy, x^3-zw^2];
SysTyp := "hom";
ConfigSet := ["TRACKTYPE: 1", "MPTYPE: 1", "PRECISION: 128"];

-- Then we compute the solution with
Bertini.BPCSolve(P,SysTyp,ConfigSet);

-- And we achieve a list of lists containing witness point supersets.
----------------------------------------
[
[
Vector(-3789467495454911613823851164626681463651/10000000000000000000000000000000000000000,
1200734725407166211921788902942849185503/1000000000000000000000000000000000000000),
Vector(-246001393466366309986866914393676541221/125000000000000000000000000000000000000,
-279722792064708736248520972068122497257/500000000000000000000000000000000000000),
Vector(4083988954899604873030242779673433634501/5000000000000000000000000000000000000000,
-1611351492565067582850937617799756261201/500000000000000000000000000000000000000),
Vector(7319342772891341731507480575523588267957/10000000000000000000000000000000000000000,
19870617690036348352514491511362841819/78125000000000000000000000000000000000)
],
[
Vector(3048866987455758258878751406208402973051/10000000000000000000000000000000000000000,
-2898035102105205140344370335032912017083/5000000000000000000000000000000000000000),
Vector(-5539460172405722710678127397246600460333/10000000000000000000000000000000000000000,
626442207647239461619975960511872586713/5000000000000000000000000000000000000000),
Vector(986380263365471019267174885767305829617/2500000000000000000000000000000000000000,
736987741407866469670001545005869554379/2500000000000000000000000000000000000000),
Vector(1400107689781321399920833229898425820819/5000000000000000000000000000000000000000,
2191732091470400698700321524968735909/3125000000000000000000000000000000000)
],
[
Vector(354996962262331142136973979259558150991/400000000000000000000000000000000000000,
1816598489416934847206968307485748462499/1000000000000000000000000000000000000000),
Vector(1967511413109990263685197237623604100867/1000000000000000000000000000000000000000,
1727412577136936817572423873769337954923/1000000000000000000000000000000000000000),
Vector(803360350133974614907008034061208613233/250000000000000000000000000000000000000,
1081558694105850161535777129438751374871/1000000000000000000000000000000000000000),
Vector(9143301947447558293770285751969676840889/100000000000000000000000000000000000000000,
155856385824660750993297595625859090071/100000000000000000000000000000000000000)
],
[
Vector(-825065032224960020386592540685453030181/50000000000000000000000000000000000000000000000000000000000000000000000000,
-870815934189224420445215323683468742119/50000000000000000000000000000000000000000000000000000000000000000000000000),
Vector(-2670487187708557160891411850766573823343/1000000000000000000000000000000000000000,
2412331000084757896737353053811227631099/2500000000000000000000000000000000000000),
Vector(-2260897026243730139776564722393608088003/1000000000000000000000000000000000000000,
-5881973549623185468407939053314195499303/10000000000000000000000000000000000000000),
Vector(-6276316819449156764984023481918376370437/1000000000000000000000000000000000000000000000000000000000000000000000000000,
-457717591175786069863350181676761297761/25000000000000000000000000000000000000000000000000000000000000000000000000)
]
]

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

#### Example

```-- An example of homogeneous positive dimensional solving with user configurations.
-- We want to find the numerical irreducible decomposition of the twisted cubic, x^2-wy=0, xy-wz=0, xz-y^2=0.
-- In addition we want to instruct Bertini to use dimension by dimension slicing for witness superset generation to compute the
-- numerical irreducible decomposition of the twisted cubic.

Use S ::= QQ[x,y,z,w];
P := [x^2-wy, xy-wz, xz-y^2];
SysTyp := "hom";
ConfigSet := ["TRACKTYPE: 1", "WITNESSGENTYPE: 1"];

-- Then we compute the solution with
Bertini.BPCSolve(P,SysTyp,ConfigSet);

-- And we achieve a list of lists containing witness point supersets.
----------------------------------------
[
[
Vector(-6942026116799083/100000000000000000, 4612445857279657/10000000000000000),
Vector(-660130555588941/2500000000000000, -3406132801364543/10000000000000000),
Vector(1980599587423497/5000000000000000, 4074862446889013/100000000000000000),
Vector(258142996733279/625000000000000, -580518904347863/2000000000000000)
],
[
Vector(333984658654543/400000000000000, 2114142485709457/10000000000000000),
Vector(2502940254499371/5000000000000000, 166534572523981/400000000000000),
Vector(2057347374261689/10000000000000000, 223561664132829/500000000000000),
Vector(1117184759814529/1000000000000000, -2238949523369569/10000000000000000)
],
[
Vector(2522626882012411/10000000000000000, -449777889912661/2500000000000000),
Vector(-3124384466089009/10000000000000000, -3468473241908347/10000000000000000),
Vector(-465770235043267/1000000000000000, 2634944111403243/5000000000000000),
Vector(9964067241416377/100000000000000000, 224882867669343/1250000000000000)
],
[
Vector(-8958209355386233/10000000000000000, 5991364293445607/10000000000000000),
Vector(4479104677693117/5000000000000000, 748920536680701/1250000000000000),
Vector(4479104677693117/5000000000000000, 748920536680701/1250000000000000),
Vector(4479104677693117/5000000000000000, 748920536680701/1250000000000000)
],
[
Vector(838951317127217/5000000000000000, 1225282193168769/2000000000000000),
Vector(2669420883548849/10000000000000000, -542051267199167/1250000000000000),
Vector(-4000931691247049/10000000000000000, 2026256168319313/25000000000000000),
Vector(-1753050275159781/2500000000000000, -3689466057646187/10000000000000000)
],
[
Vector(1994140751299623/5000000000000000, -571186186780739/12500000000000000),
Vector(417774557591413/2500000000000000, -4720503734495957/10000000000000000),
Vector(-4376288560752593/10000000000000000, -4457205772193031/10000000000000000),
Vector(866134273205727/5000000000000000, 2712167348922953/10000000000000000)
],
[
Vector(-3041727474132977/5000000000000000, -1407307897083329/10000000000000000),
Vector(129825645247897/312500000000000, -349049200579/1250000000000),
Vector(-6388578727727609/100000000000000000, 3961667379950517/10000000000000000),
Vector(3899466643358429/10000000000000000, 3371280434832643/5000000000000000)
],
[
Vector(-3521791211952947/10000000000000000, 1053118768909601/5000000000000000),
Vector(3521791211952947/10000000000000000, -1053118768909601/5000000000000000),
Vector(-3521791211952947/10000000000000000, 1053118768909601/5000000000000000),
Vector(3521791211952947/10000000000000000, -2106237537819201/10000000000000000)
],
[
Vector(7754466790293177/10000000000000000, 9327014277087599/1000000000000000000),
Vector(4140435604899347/10000000000000000, 8742834549314157/10000000000000000),
Vector(-3766519251579417/5000000000000000, 9426940170746841/10000000000000000),
Vector(559053891116487/2000000000000000, -5553052894825133/10000000000000000)
],
[
Vector(0, 0),
Vector(0, 0),
Vector(-9187908867396413/10000000000000000, 3764804692184237/10000000000000000),
Vector(9038104431042463/100000000000000000000000000000000, 1369503460549361/10000000000000000000000000000000)
]
]

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

#### Example

```-- Deflation Example
-- An example of Non-homogeneous positive dimensional solving with user configurations.
-- We want to find the numerical irreducible decomposition of the curve, (29/16)x^3-2xy=0, y-x^2=0.
-- In addition we want to instruct Bertini to sharpen the witness points for each component to 30 digits. Bertini automatically
-- deates the components that are generically nonreduced. In this case the isolated solution at the origin is correct to at least
-- 30 digits.

Use S ::= QQ[x,y];
P := [(29/16)x^3-2xy, y-x^2];
SysTyp := "Nhom";
ConfigSet := ["TRACKTYPE: 1", "SHARPENDIGITS: 30"];

-- Then we compute the solution with
Bertini.BPCSolve(P,SysTyp,ConfigSet);

-- And we achieve a list of lists containing witness point supersets.
----------------------------------------
[
[
Vector(-144037547051541/25000000000000000000000000000000000000, 1194673810665003/1250000000000000000000000000000000000000),
Vector(3960923778190771/10000000000000000000000000000000000000000, 2427766741188941/1000000000000000000000000000000000000000)
]
]

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