Hot answers tagged polynomials
38
In general, a typical root of a negative number is complex, so you need to get rid of most roots. A nice approach would be Root, e.g.
Root[ x^3 + 8, #] & /@ Range[3]
{-2, 1 - I Sqrt[3], 1 + I Sqrt[3]}
To get only real roots you can do :
Select[Root[ x^3 + 8, #] & /@ Range[3], Re[#] == # &]
{-2}
This is a handy approach when you ...
18
If you Rationalize your real numbers you will be able to use Mathematica's arbitrary precision engine:
poly2 = Rationalize[poly[z], 0];
Plot[Evaluate[poly2], {z, 0, 1}, WorkingPrecision -> 50]
Mathematica has two kinds of numeric calculations: machine precision, and arbitrary precision. Machine precision is fast but is limited to ~16 digits (53 ...
17
Short answer is
Expand[(x + y)^2]
x^2 + 2 x y+ y^2
But I recommend you to look at the following tutorials.
Transforming Algebraic Expressions
Putting Expressions into Different Forms
And of course a super tutorial:
Algebraic Manipulation
Also this palette maybe really useful: Top Menu >> Palettes >> Other >> Algebraic Manipulation
16
You may use a function, which gives you the "real Power":
rprule=(b_?Negative)^Rational[m_,n_?OddQ]:>(-(-b)^(1/n))^m;
Attributes[realPower]={Listable, NumericFunction,OneIdentity} (* same as Power *)
realPower[b_?Negative, Rational[m_, n_?OddQ]] := (-(-b)^(1/n))^m;
realPower[x_,y_]:=Power[x,y];
realPower[x_]:=x//.rprule;
Then you'll get:
...
15
I will show a method that is conjectural, though i believe it is correct. It differs from the more common approach of using (quadratic) birational transformations to force singularities to be double points. More a detailed approach to that, see Madelina's response. Also I cover the exact case, although at least some of this could be adopted to the case of ...
15
For computing the genus of a plane algebraic curve implicitly defined by a squarefree polynomial $f(x,y)$ there are different softwares available in the literature.
Remark: I assume you are interested in computing the genus when the coefficients of the defining polynomial of the curve are either integers or rationals right? This is the case of exact data. ...
13
To implement what you intended to do, I suggest to take a look at this approach :
hermite[0, x_] := 1
hermite[1, x_] := 2 x
hermite[n_Integer /; n >= 2, x_] :=
hermite[n, x] = Expand[2 x*hermite[n - 1, x] - 2 (n - 1) hermite[n - 2, x]]
Now you shouldn't have problems anymore.
Recalling that there are in Mathematica the Hermite polynomials ...
13
All of the polynomial functions, have an option Modulus which allows you to specify an integer field, like $\mathbb{Z}_5$. In particular, Factor works on your example polynomial
Factor[x^2+4, Modulus -> 5]
(* (1 + x) (4 + x) *)
Additionally, IrreduciblePolynomialQ works to determine irreducibility of $x^2+2
$, as follows
IrreduciblePolynomialQ[x^2 + ...
12
You were definitely on the right track with MonomialList. Here is a solution. Others will probably find nicer ways. Using the trick found here, we first define a Format that looks like "Plus" but doesn't rearrange things:
Format[myPlus[expr__]] := Row[Riffle[{expr}, "+"]]
With this format in hand, we can wrap your original function in the following:
...
12
In general, to get a list of all the cube roots of -8 (or the $m$ roots of any number $n$), you can use either the the Roots or Solve or Reduce functions.
Roots[x^3 == -8, x]
(* Out[1]= x == 2 || x == 2 (-1)^(2/3) || x == -2 (-1)^(1/3) *)
Reduce and Solve are perhaps more flexible because you can specify the domain that you want or leave it out for all ...
12
You have some errors in your syntax:
you name your lists x_sample and y_sample, but in Mathematica, an underscore is not allowed in names (as it is reserved to patterns).
your last sum runs from 0, but in Mathematica, the first element in a List has index 1
your last sum should run until the number of data points, not 4
furthermore, I would advise you to ...
12
This question is not trivial as it would seem and a detailed discussion could help to understand the issue, especially when we deal with roots of special functions, however to do the task as simply as possible this would be the best way :
f[x_] := LegendreP[6, x]
Reduce[f[x] == 0, x, Reals] == Reduce[f[x] == 0, x]
True
Reduce[f[x] == 0, x, Reals] ...
12
Collect
Since it hasn't been mentioned (and one can interpret the question in another way) I'd recommend to use also Collect (it can be applied not only to polynomials) :
Collect[(x + y)^2, x]
x^2 + 2 x y + y^2
In more general cases it would be handy to use the second argument in the form of List, e.g. Collect[(x + y)^2, {x, y}].
Comparing it to ...
12
You can use PolynomialForm :
Collect[(1 + x + Cos[s] x^2)^3, x] // PolynomialForm[#, TraditionalOrder -> True] &
Cos[s]^3 x^6 + 3 Cos[s]^2 x^5 + (3 Cos[s]^2 + 3 Cos[s]) x^4 + (6 Cos[s] + 1) x^3
+ (3 Cos[s] + 3) x^2 + 3 x + 1
11
FullSimplify is Simplify with additional transformation rules; some of these rules may be necessary to simplify a polynomial to a form where you can see the equality explicitly.
In case of polynomials, I usually use Simplify@Expand to group terms the same way; Expand brings the polynomial in an unambiguous standard form, at which point both results should ...
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 ...
10
The reason why the replacement doesn't work is that replacement rules are not mathematical replacements, but pure structural replacements. Therefore the replacement z^2->x just looks for occurrences of the pattern z^2 and replaces that with x. Now z^4 doesn't match that pattern.
Also note that rules operate on the internal form, which doesn't always ...
10
There is no need for the Modulus option in CharacteristicPolynomial, since PolynomialMod serves that purpose. Assume we have a matrix m e.g. :
m = RandomInteger[10, {5, 5}]
m // MatrixForm
{{10, 1, 4, 10, 9}, {1, 9, 6, 1, 5}, {9, 7, 9, 1, 0}, {1, 10, 8, 0, 4}, {4, 0, 4, 7, 10}}
then
CharacteristicPolynomial[m, x]
2310 - 4008 x + 1739 x^2 - ...
10
Defining your polynomial as
p[x_, a_, b_, c_] := the formula
I'd do this :
Manipulate[ CountRoots[ p[x, a, b, c], {x, 0, Infinity}],
{a, -100, 100}, {b, -100, 100}, {c, -100, 100}]
If a plot is needed one can proceed this way :
ListContourPlot3D[ Table[ CountRoots[ p[x, a, b, c], {x, 0, Infinity}],
{a, -10, ...
10
The most straightforward way would be FindRoot[ eq, {x, 0}] but since this specific polynomial eq has a singular Jacobian at x == 0 (evaluate e.g. Reduce[ D[ eq, x] == 0, x]) one would rather use FindRoot[ eq, {x, x0}] for small x0 > 0. The argument x0 depends on a case by case basis, but for the problem at hand an appropriate value might be 0 < x0 ...
9
Solve with Modulus
We can use Solve with domain specification like i.e. Integers, or with e.g. integers modulo 5, then instead of specifying the domain one uses Modulus :
Solve[x^2 + 4 == 0, x, Modulus -> 5]
{{x -> 1}, {x -> 4}}
Times @@ ( x - Last @@@ %)
Expand[ %, Modulus -> 5]
(-4 + x) (-1 + x)
4 + x^2
For an integer $n$, ...
9
The first thing that comes to mind is to use Through, as in
Through[(f + g)[x]]
f[x] + g[x]
However, this is a little tricky to apply when you also have powers as in f^2 - so in your case it seems to be more efficient to make use of the fact that all symbols are evaluated at the same x anyway (i.e., there isn't any f[y] and f[z] anywhere). Then you ...
9
Perhaps
Exponent[# /. Thread[Variables[#] -> \[FormalX]], \[FormalX]] &[s1 + s2^2 s3 + s3^2 s4^7]
(* 9 *)
?
UPDATE: As noted by Daniel in the comments, the original function gives the wrong result if cancellations occur after all variables are replaced by the same symbol. To fix this issue, one can modify the function as
Exponent[# /. ((# ...
9
The Hermite polynomials are orthogonal with respect to the inner product
$$\langle f,g \rangle = \int_{-\infty}^{\infty} f(x)g(x)e^{-x^2} \, dx.$$
Thus, the nth coefficient can be computed using the inner product of your polynomial with the nth normalized Hermite polynomial.
Example:
p[x_] = 1 + x + x^2 + x^3;
coeffs = Table[
Integrate[HermiteH[n, ...
8
Well, I am more inclined to try something that leverages Mathematica "knowledge" of polynomials.
In fact, in Mathematica 7 and 8, you can collect by $x-y$. However, it only works if $(x-y)$ is explicitly apparent in the form of the argument seen by the Collect function.
So, this works:
Collect[a (x - y)^3 + b (x - y)^2 + c (x - y) + d, x - y]
But, this ...
8
We get different results because Simplify, working with a smaller range of accessible transformations than FullSimplify does, applied to structurally very different expressions at the begining, reaches only the local minimum of the default ComplexityFunction, being roughly close to LeafCount, unlike in case of FullSimplify even though its underlying ...
8
As you said in your comment that you just want a well displayed formula, I suggest using Row to force specific orders. A rough example will look like following, you might want to adjust the priority level according to your needs:
expr = A^2 e^2 SuperMinus[\[Phi]] SuperPlus[\[Phi]] +
A e SuperMinus[\[Phi]] SuperPlus[\[Phi]] Subscript[c, 2 w] Subscript[g, ...
8
You were almost there. Just add the following to your code:
iC3v = Inverse /@ C3v;
sa = SolveAlways[Flatten@
Table[basis[[i]][iC3v[[k]].{x, y}] == Sum[basis[[j]][{x, y}] d[k, j, i], {j, 3}],
{i, 3}, {k, 6}],
{x, y}];
MatrixForm /@ Table[d[k, i, j], {k, 6}, {i, 3}, {j, 3}] /. sa
And you get your expected result:
$\left(
...
8
Here is an approach that doesn't rely on undocumented features or on low-level box manipulations. We're dealing with a polynomial, so we can simply collect its coefficients and arrange them any way we like as follows:
c0 = Collect[(1 + x + Cos[s] x^2)^3, x];
cx = CoefficientList[c0, x] x^Range[0, Exponent[c0, x]]
(*
==> {1, 3 x, x^2 (3 + 3 Cos[s]), x^3 ...
7
Mădălina Hodorog has software to do this.
She has some Mathematica packages too, so she might really have the last word on this.
She publishes her email address, so you can contact her directly at the Technical University Berlin Institute of Mathematics:
hodorog@math.tu-berlin.de
And a list of her publications.
Only top voted, non community-wiki answers of a minimum length are eligible

