# Tag Info

10

"[O]nly a little"?? You just went from a system of 6 equations in 6 variables to a 20 x 20 system. I have to wonder what a big enlargement might be. You might try soln = NSolve[polys] But that also could well hang. A better possibility in terms of likelihood of completing might be to use local methods such as FindRoot, provided you have some idea of ...

10

Your question cannot realistically be answered. One almost never knows what specifically comprises such an impediment. Here is a Groebner basis for your system of polynomials, computed for degree reverse lexicographic order. It takes some time to do this. Not sure if it will run in reasonable time directly; I used a numeric approximation and rationalized (...

9

The Buchberger algorithm (the main approach used in computing a GroebnerBasis) strongly depends on the number of variables. It has double exponential dependence. So, if in the first example you have only six variables, while in the latter one there are 20, in the worst case you could expect up to 2^(2^20)/2^(2^6) // N 3.654379384547651*10^315633 ...

9

Here is how I would go about finding the reciprocal as a member of that quotient ideal. I'll demonstrate with an example. We start with polynomials that generate an ideal I in Q[x,y,z]. polys = {x^2 + x*y - z^3 + 3, x*y - y^2 + 2*z - 5, 58 x - 4*y^2*z - 3*x*z + 7}; Here is the polyniomial we wish to invert in Q/I. We will set it equal to a new ...

8

If the (ordered) list of variables is not specified, GroebnerBasis will order the variables as it encounters them. I remark that, as this depends on implementation details, it can be version dependent. The question (which I should have anticipated) was raised as to how one might get the "variables" that GroebnerBasis sees, and in the same order. It can be ...

6

I show some aged code cribbed from this MathGroup post (See also this library item). There is some amount of explanation in each. But the most salient quote, from the post, is this. "It is unlikely that I can do justice to the explanation. So far as correctness goes, let's just say the code is on the honor system." firstContainsSecond[l1_, l2_] := (Union[l1,...

5

There is an undocumented command (Mma V9). Use it at your own risk, YMMV. I found it following @Daniel's hint above: pols = {x - a, x - b y, y - k}; mvr = Internal`MultivariateResultant[pols, {x, y}] (* -a + b k *) We can test that that is effectively the condition for common roots: Solve[And @@ Thread[(pols /. First@Solve[mvr == 0]) == 0], {x, y}] (* {{...

5

The simplest method, that will usually be correct, is to just use NSolve. polys = {x^2 y + 2 x y + 2, y^3 + 2 x + 1}; Length[NSolve[polys]] (* Out[421]= 7 *) Below is from code I have used for solution counting and related (it is related to code inside NSolve, to answer the question of "Why not just use NSolve?"). Some is also used in this MSE response. ...

4

As noted, what you want is to use a GrÃ¶bner basis to eliminate the parameter: curve = 2 {t (3 t^4 + 50 t^2 - 33), 7 t^6 - 60 t^4 + 15 t^2 + 2}/(t^2 + 1)^3; implicit = GroebnerBasis[Thread[{x, y} == curve], {x, y}, t] // First 550731776 - 41620992 x^2 + 585816 x^4 + 625 x^6 - 182250 x^4 y - 41620992 y^2 + 1171632 x^2 y^2 + 1875 x^4 y^2 + 364500 x^2 y^3 ...

4

I know this isn't what you want, but perhaps it can be twisted to approach it: ns = NSolve[And @@ Thread[Equal[1.0 list, 0.]], {x, y, z, w, t}, Complexes] Retuns: NSolve::infsolns: Infinite solution set has dimension at least 1. Returning intersection of solutions with (153196 t)/195501+(185938 w)/195501+(38650 x)/65167-(41688 y)/65167-(153968 z)/...

3

Here's the code kindly provided by Daniel Lichtblau in the accepted answer, modified to work with Mathematica 9. All the credit goes to him, and, of course, this comes with no warranties ;) The code is inspired from T.Becker, V.Weisphenning - Groebner bases, (Table 9.6, pp 449). firstContainsSecond[l1_, l2_] := (Union[l1, l2] === l1); isIndependentSet[set_, ...

3

Not sure if it helps but since you have five variables and four equations you might eliminate three variables and get a bivariate. Timing[ gbelim = GroebnerBasis[polys, {x, y}, {z, t, w}, MonomialOrder -> EliminationOrder];] (* t[41]= {359.164000, Null} *) The result is not all that large actually. gbelim (* Out[46]= {6115962008563732 + ...

3

Does this do what you want? GroebnerReduce[L_, order_: Lexicographic] := Module[{G, V}, G = Union[L, SameTest -> (PolynomialMod[MonomialList[#1, order][[1]], MonomialList[#2, order][[1]]] === 0 &)]; V = Union@Flatten@(Variables /@ G); #[[2]] & /@ (PolynomialReduce[#, Complement[G, {#}], V] & /@ G) ]

1

I found the answer in dmesg It actually was killed by the out-of-memory killer Although the computer had more than 4 GB, perhaps the other programs (e.g. Firefox) filled it up

1

It appears that the only thing that PolynomialReduce guarantees is that p[x,y]= c1 b1[x,y] + c2 b2[x,y] + ... + cn bn[x,y] + r where {{c1,c2,...,cn},r} is the result of polynomial reduce, as it is for your example. Not that the result is in any way minimal or unique. In your example p[x,y] = x^4 - 1, so in fact the 'best' result would be {{0,0,1},0}, but ...

1

The documentation is very instructive. For your particular example: gb = GroebnerBasis[{x^2 y + 2 x y + 2, y^3 + 2 x + 1}, {x, y}] Finding roots: sol = N@Solve[gb[[1]] == 0, y] =>{{y -> -1.29819}, {y -> -0.871821 - 1.29622 I}, {y -> -0.871821 + 1.29622 I}, {y -> 0.274176 - 1.20102 I}, {y -> 0.274176 + 1.20102 I}, {y -> 1.24674 - 0.331078 I}, ...

Only top voted, non community-wiki answers of a minimum length are eligible