Community RSS Feed
http://community.wolfram.com
RSS Feed for Wolfram Community showing any discussions in tag Mathematics sorted by active[✓] Separate out the real and imaginary part and export data?
http://community.wolfram.com/groups/-/m/t/1091350
I have an Mathematica code which goes like this:
ClearAll["Global`*"]
first = 1 + 17000000/k^2 + 5000000/k^2 + 868670/k^2;
second = 14000/w^2 + (5000000 w^2)/(k^2*(w^2 - 1));
third = 600/(w - 0.01)^2 + (400000 (w - 0.01)^2)/(k^2*0.125 ((w - 0.01)^2 - 0.25));
(*First way*)
hello = Table[{k, NSolve[first - second - third == 0, w]}, {k, 0.01,1, 0.01}]
(*Second way*)
eqn = NSolve[first - second - third == 0, w];
hello = Table[{k, eqn}, {k, 0.01, 1, 0.01}]
(*Third way*)
rt := (r = Solve[ first - second - third == 0, w];
s = Evaluate[w /. r];
Return[s])
Table[{k, rt}, {k, 0.01, 1, 0.01}]
I have some question in this regard:
1. From an analytical point of view you can see that for a single value of k, 8 different omegas are posibble. For k=0.01, first way, second way and third way are giving 8 omegas. But at some places, for e.g 0.7, first way gives you 4 roots, on the other hand second way and third way gives 8 roots. I have to tell you that 4 roots which are given by first way are still included in second and third way. Why/ What is this happening?
2. I want to export this to a dat file, with first colum with k, next column with real value of first w, next with imaginary of first w, next with real of second omega, etc... How can I do that? Simple export is not helping me.
By the by, I am using Mathematica 9.
Thanks in advanceSreeraj T2017-05-12T00:26:35ZHow can I simplify the logarithm of a sum: Log[ a+b]?
http://community.wolfram.com/groups/-/m/t/1109283
Dear Wolfram team and community:
How can I rearrange the logarithm of a sum: Log[a+b]
Is the following formula (found on wikipedia) true or false? :
**Log[a+b] = Log[a] + Log[1 + b/a]**
If is true, how can I do it in *Mathematica*?Alberto Silva Ariano2017-05-28T03:33:40ZChaos bifurcation of double pendulums calculation with OOP
http://community.wolfram.com/groups/-/m/t/1109273
This sample program is developed to show the power of [Mathematica OOP][1] as shown in other my OOP projects.
It is well known that the double pendulum motion becomes a chaos with time development. Also, in the time development of a pendulum, we can observe another kind of chaos caused by the initial condition. A very small fluctuation of the initial condition affect the time development deeply. In this program case, angle perturbation less than 10^-12 can have an effect on the time development.
To observe this phenomenon this program traces simultaneously a several tens of double pendulums each has random initial angle difference. The pendulums are represented by the instance constructed from the OOP Lagrange equation of motion class. The Mathematica OOP can represent these number of double pendulums motion in time development with a simple and an effective way.
![50 pendulums in time development][2]
Setup for global parameters and OOP class
{g = 9.8, m = 1, r1 = 1, r2 = 0.5, time = 50};
case[nam_] :=
Module[{\[Theta]1, \[Theta]2, ans, T1, T2, V1, V2, t, L, lkeq,
initcond},
initialize[nam[th1_, th2_]] ^:= (
(* Lagrangian setup *)
T1 = 1/2 m*r1^2*\[Theta]1'[t]^2;
V1 = -m*g*r1*Cos[\[Theta]1[t]];
T2 =
1/2 m*(r1^2*\[Theta]1'[t]^2 + r2^2*\[Theta]2'[t]^2 +
2 r1*r2*\[Theta]1'[t]*\[Theta]2'[t]*r1*r2*
Cos[\[Theta]1[t] - \[Theta]2[t]]);
V2 = -m*g*(r1*Cos[\[Theta]1[t]] + r2*Cos[\[Theta]2[t]]);
L = T1 + T2 - (V1 + V2);
(* Lagrange equation of motion *)
lkeq = {D[D[L, \[Theta]1'[t]], t] - D[L, \[Theta]1[t]] == 0,
D[D[L, \[Theta]2'[t]], t] - D[L, \[Theta]2[t]] == 0};
initcond = {
\[Theta]1[0] == th1,
\[Theta]2[0] == th2,
\[Theta]1'[0] == 0,
\[Theta]2'[0] == 0};
(* Numerical solve of equation *)
ans = NDSolve[{lkeq, initcond}, {\[Theta]1, \[Theta]2}, {t, 0,
time}, MaxSteps -> Infinity, PrecisionGoal -> \[Infinity]][[
1]];
);
pendulum[nam[tr_]] ^:= (
(* Pendulum graphics return *)
Graphics[{Line[{{0,
0}, {r1*Sin[\[Theta]1[tr]], -r1*Cos[\[Theta]1[tr]]} /.
ans}], Line[{{r1*Sin[\[Theta]1[tr]], -r1*
Cos[\[Theta]1[tr]]}, {(r1*Sin[\[Theta]1[tr]] +
r2*Sin[\[Theta]2[tr]]), (-r1*Cos[\[Theta]1[tr]] -
r2*Cos[\[Theta]2[tr]])}} /. ans]},
PlotRange -> {{-1.8, 1.8}, {-1.8, 1.8}}]
)
];
Setup initial conditions and construct instances, and display of results
{pendulums = 50, angle1 = 4 Pi/3, angle2 = 4 Pi/3, butterfly = 10^-12};
objectList = Table[Unique[], {pendulums}];
Map[case[#] &, objectList];
Map[initialize[#[angle1, angle2 + butterfly*RandomReal[{-1, 1}]]] &,
objectList];
Animate[Show[
Map[pendulum[#[tr]] &, objectList]
], {tr, 0, time}, AnimationRepetitions -> 1, AnimationRate -> 1]
Enjoy a sudden divergence.
[1]: http://community.wolfram.com/groups/-/m/t/897081?p_p_auth=tO31eCls
[2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2302d-pendulum.jpg&userId=897049Hirokazu Kobayashi2017-05-28T01:05:18Z[✓] Use Plot Labels for Parametric curves?
http://community.wolfram.com/groups/-/m/t/1108310
Below is a code snippet to plot a handful of curves with some plot labels. For some reason only the first label is used and not the other four. What am I missing here? I've successfully used PlotLabels for parametric curves before but they seem to fail me here. Got any ideas??:
lmt=10
qq[zets_]=1/Sqrt[1+zets^2]^3
zets[rr_,eps_,eta_]=eps (1-rr^2) (1+eta (1+rr^2))
demcurves=Array[qq[zets[rr,2 #/lmt,0]]&,lmt/2]
Plot[demcurves,{rr,0,1}]
demlabels = Map[ToString,Array[qqzz[N[2/lmt]#]&,lmt/2]]
Plot[demcurves,{rr,0,1},PlotLabels -> Placed[demlabels,Left]]Anthony DeGance2017-05-25T17:19:36ZUse Solve with a condition of a limit x is much less than D?
http://community.wolfram.com/groups/-/m/t/1106375
Greetings,
I am working on a very complicated equation that needs to be solved. To simplify the function I use a limit in which x is much less than D or ( x<<D). I cannot find much less/greater condition in Mathematica. I need to solve that equation symbolically and I know that I should get four solutions. By taking a limit manually I got something like A*x^4-B*x^2+C=0. Then using solve I was able to get four solution, but with coefficients that were very long. (In manual calculations, I was able to get shorter coefficients)
How do I solve equation with much less condition?
Just for the sake of example let say I want to solve
f(x)= sqrt( D^2 - ( x - z )^2 ) + x * cos(a) + x + z
after limit
f(x)= sqrt( D^2 - ( z )^2 ) + x * cos(a) + x + z
Is there a command in Mathematica to selectively simplify/factor/expand some terms instead all terms in equations?Adam Szewczyk2017-05-25T01:56:46Z[✓] Modify OX labels output format?
http://community.wolfram.com/groups/-/m/t/1108667
Hello!
I want to plot a simple function, but on the OX axis, the output labels are by default 1,2,3, etc.
I want to have them in the format **x/2**.
Instead of 1,2,3, I want 2/2, 4/2, 6/2. Is this possible? But only on the OX axis.
Thank you in advance!Robert Poenaru2017-05-26T09:12:30Z[✓] Plot disks of radius r=1-f[x]?
http://community.wolfram.com/groups/-/m/t/1108617
Hi i'm trying to plot disks of radius =(1-f[x]), so that it makes a sphere, as we know that the volume of a cylinder having height=2 radius - the volume of the cone having radius r, is always equal to the volume of a sphere having radius r. but i want to show that using disks.Muhammad Afzal2017-05-26T06:59:19Z[GIF] Back and Forth (Möbius transformations of the circle)
http://community.wolfram.com/groups/-/m/t/1108324
![Möbius transformations of the circle][1]
**Back and Forth**
One fact I've known for a while but never really dived into is that Möbius transformations of the circle can be realized by inverse stereographic projecting to the sphere (here I'm thinking of the circle as the equator of the sphere, so inverse stereographic projection is just the identity in this case), rotating the sphere in space (say, around the south pole), and then stereographically projecting from the new "north pole" back to the circle. The animation shows what happens when you do this to 15 equally-spaced points on the circle, where the sphere is being rotated by an angle of $\pi/3$ around the axis $(\cos \psi, \sin \psi, 0)$ anchored at $(0,0,-1)$, and we let $\psi$ vary from 0 to $2\pi$.
Here's the code. First, some helper functions to tell me the center and pole of the rotated sphere:
RotatedCenter[θ_, axis_] := RotationTransform[θ, axis, {0, 0, -1}][{0, 0, 0}];
RotatedPole[θ_, axis_] := RotatedCenter[θ, axis] + {0, 0, 1};
And then a function which performs stereographic projection from any point $q$ to the plane $z=0$:
StereoPointToPlane[p_, q_] := 1/(p[[3]] - q[[3]]) {q[[1]] p[[3]] - p[[1]] q[[3]], q[[2]] p[[3]] - p[[2]] q[[3]]};
Finally, the big `Manipulate` for the animation:
DynamicModule[{axis, θ = π/3., n = 15, viewpoint = {0, 0, 2},
cols = RGBColor /@ {"#FF9F1C", "#2EC4B6", "#E71D36", "#011627"}},
Manipulate[
axis = {Cos[ψ], Sin[ψ], 0};
Graphics3D[{Sphere[
Append[StereoPointToPlane[
RotationTransform[θ, axis, {0, 0, -1}][Append[#, 0]],
RotatedPole[θ, axis]], 0], .075] & /@
CirclePoints[n]},
PlotRange -> 1.2, ViewPoint -> viewpoint, Boxed -> False,
Lighting ->
Append[Table[{"Point", cols[[i]],
Append[2 CirclePoints[3][[i]], 0]}, {i, 1, 3}], {"Ambient", cols[[-1]], viewpoint}],
Background -> cols[[-1]], ImageSize -> 540],
{ψ, 0, 2 π}]
]
[1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=mobius12.gif&userId=610054Clayton Shonkwiler2017-05-25T19:34:31ZDefine a NN function that multiply matrices within a tensor?
http://community.wolfram.com/groups/-/m/t/1104811
I'm wondering how to define a net function that will multiply matrices inside a tensor. For example, if $s$ and $t$ are tensors with shapes $\{a,b,c\}$ and $\{a,c,d\}$ respectively, for each $i\leq a$ the subtensors in $s$ and $t$ with first index $i$ form matrices of dimensions $b\times c$ and $c\times d$ respectively. Multiplying corresponding matrices in $s$ and $t$ would produce a new tensor with shape $\{a,b,d\}$.
Is there currently a way to do this in Mathematica using nn layers? DotLayer and ThreadingLayer have depth limitations that seem to prevent it.Andrew Dabrowski2017-05-23T19:26:30Z[✓] Combine these plots in a single Manipulate?
http://community.wolfram.com/groups/-/m/t/1106852
How can i combine these plots in a single manipulate. I'll be very much thankful of your help please.
Clear[x, t, n];
h[x_] := x;
a = 0;
b = 1;
startpos[k_] := a + (k - 1) 0.01;
a1 = Plot[{1, -1, t, -t}, {t, 0, 1}, AspectRatio -> 1];
Manipulate[
b = Graphics[
Table[{Red, Opacity[0.5], Disk[{x, 0}, {0.01, 1}], Green,
EdgeForm[Black], Disk[{x, 0}, {0.01, h[x]}]}, {x, 0, r, 0.1}]];
aa = Table[
Graphics3D[{{Opacity[2/5], Sphere[{1, 0, 0}, 1]}, {Opacity[1/5],
Cylinder[{{i, 0, 0}, {i + 0.02, 0, 0}}, i]}},
Boxed -> False], {i, 0, r, 0.1}];
Show[a1, b, aa], {r, 0, 1}]Muhammad Afzal2017-05-25T06:41:33Z[✓] Does NumberPadding work in NumberForm?
http://community.wolfram.com/groups/-/m/t/1105146
Dear Community,
I would like to produce output of a two-digit number like 7.2 as 7.200, a three-digit number like 27.2 as 27.20, and a four-digit number like 127.2 as 127.2. I tried
NumberForm[7.2, 4, NumberPadding -> {"", "0"}]
but it produced verbatim 7.2, not 7.200. Even though the following would produce what I want for 27.2
NumberForm[27.2, {4, 2}, NumberPadding -> {"", "0"}]
it wouldn't produce what I want for 7.2 or 127.2.
Any suggestion for this petty question is much appreciated!Chi-Hsiang Wang2017-05-23T23:56:00ZMake efficient the computation of an integral with NIntegrate?
http://community.wolfram.com/groups/-/m/t/1102909
Hi,
I need to compute the integral shown in the attached figure but I keep obtaining the same error "NIntegrate::slwcon : Numerical integration converging too slowly; suspect one of the following: singularity, value of the integration is 0, highly oscillatory integrand, or WorkingPrecision too small.". I have played a lot with the WorkingPrecision, the AccurayGoal, the PrecisionGoal, but I can not obtain the solution of the integral. Please, could someone help me? Any tip/suggestion that I should follow.
ThanksAna Doblas2017-05-22T23:34:52ZInterpolatingFunction appears to be "Listable"?
http://community.wolfram.com/groups/-/m/t/1105784
Dear all,
consider an ``InterpolatingFunction`` depending on more than on variable:
ClearAll["Global`*"]
data = RandomReal[{-1, 1}, {10, 10}];
func = ListInterpolation[data, {{0, 1}, {0, 1}}];
A regular function call would then be:
func[x, y]
(* Out: InterpolatingFunction[{{0.`,1.`},{0.`,1.`}},"<>"][x,y] *)
But if I try a ``List`` as argument (I definitely expected no further evaluation!), I get:
func[{x, y}]
(* Out: {InterpolatingFunction[{{0.`,1.`},{0.`,1.`}},"<>"][x], InterpolatingFunction[{{0.`,1.`},{0.`,1.`}},"<>"][y]} *)
so, ``InterpolatingFunction`` seems to have the attribute ``Listable``, which one does not find when calling
Attributes[InterpolatingFunction]
(* Out: {Protected,ReadProtected} *)
Can anybody give me a hint on where I am missing the point? (On a somewhat larger piece of code it took me quite a while tracking that effect down ...)
Best regards -- HenrikHenrik Schachner2017-05-24T13:23:45ZSporadic convergence failure: “SingularValueDecomposition::cflsvd”
http://community.wolfram.com/groups/-/m/t/1065721
<b>Update 1</b> Per a request from Daniel Lichtblau at Wolfram Research, a minimal example has been uploaded to Google Drive as a pure-ASCII no-format `"m"`-file named [`"oneMatrixThatFailsSVD_2017.m"`][1]. The file is rather large (about 7.7 MBytes) because it encodes a convergence-failing `320x320` complex matrix as an integer byte-array of dimension `320x320x16`. This bit-perfect encoding "trick" is necessary because SVD convergence-failure seemingly is exquisitely sensitive to the least-significant bits of IEEE complex numbers (which are of course precisely the bits to which no well-conditioned SVD algorithm should be sensitive).
---
<b>Update 2</b> A comment has been added to the end of the above-mentioned text file [`"oneMatrixThatFailsSVD_2017.m"`][1] that provides the following (exact) pipe for flipping the least-significant-bit of complex matrices:
<code>
Flatten// (* complex square matrix -> complex list *)
ExportString[#,"Complex128"]&// (* complex list -> byte string *)
ExportString[#,"Base64"]&// (* byte string -> Base64 string *)
ByteArray[#]&//Normal// (* Base64 string -> integer list *)
Partition[#,16]&// (* integer list -> {...} *)
Partition[#,#//Length//Sqrt]&// (* {...} -> integer array *)
Map[(
{#[[1]]//If[#//EvenQ,#+1,#-1]&} ~ Join ~ (* flip LSB of real part *)
#[[2;;8]] ~ Join ~
{#[[9]]//If[#//EvenQ,#+1,#-1]&} ~ Join ~ (* flip LSB of imag part *)
#[[10;;16]]
)&,#,{2}]&//
Flatten// (* integer array -> integer list *)
ExportString[#,"Byte"]&// (* integer list -> byte string *)
ImportString[#,"Complex128"]&// (* byte string -> complex list *)
Partition[#,#//Length//Sqrt]&; (* complex list -> complex matrix *)
</code>
It turns out that flipping the least-significant bits of a convergence-failing input matrix <i>does</i> reproducibly eliminate the `"SingularValueDecomposition::cflsvd:"` message (which is behavior that no well-conditioned SVD algorithm should exhibit).
Hopefully this fine-grained, exactly reproducible control of the `"cflsvd"` SVD bug will make fixing it much easier in 2017 than back in 2005, when Mathematica tools like `ByteArray[__]` and `ExportString[_,"Complex128"]` were less-developed, such that the bug was more challenging to exhibit reproducibly and diagnose reliably.
----
<b>The bug in a nutshell:</b>&nbsp; for single-precision complex matrices, Mathematica's SingularValueDecomposition[] sporadically fails to converge.
The associated Mathematica-generated error message is:
SingularValueDecomposition::cflsvd: Machine-precision algorithm
failed to converge. Arbitrary-precision algorithm is called,
which is slower but more accurate.
This is a followup to a long-standing Mathematica bug report (specifically Wolfram Research bug report [TS 28968], submitted way back in 2005).
[This tarball][2] provides (in a folder named `"SVDfailures_2017"`) 25 examples of matrices whose convergence fails under Mathematica 10.2.0 for Mac OS X x86. The same tarball provides (in a folder named "`SVDfailures_2005`") matrices that fail under various versions of Mathematica dating back to 2005 (these files were provided with bug report [TS 28968]). The tarball is rather large (more than 100 MBytes) because it consists mostly of numerical matrices created with `"DumpSave[__]"`).
A principal difference between the 2005 failures and the 2017 failures is that (at least some of) the matrices that failed outright back in 2005, now generate the (undocumented?) convergence-failure message `"SingularValueDecomposition::cflsvd"`
To anticipate some questions:
- The arbitrary-precision evaluation does yield a correct decomposition, at the expense of a runtime that is 500-1000X longer.
- The matrices that fail of convergence are (seemingly) unremarkable in respect to numerical condition and rank.
- There is no reason (known to me at least) why SVDs of $\mathcal{O}(1)$-entry single-precision matrices should ever "fail to converge", and there is no linear algebra software other than Mathematica's (known to me) that exhibits a similar convergence failure.
My questions are:
- Does `"SingularValueDecomposition::cflsvd"` convergence-failure occur more generally, i.e., on systems other than Mathematica 10.2.0 for Mac OS X?
- What's the best way to report this bug (if it is a reproducible bug)?
[1]: https://drive.google.com/open?id=0ByYbFbzq4CGyZ3hobWZKb0U1TXM
[2]: https://drive.google.com/open?id=0ByYbFbzq4CGyNHBnMTRNeEMwTDAJohn Sidles2017-04-19T01:44:14Z[TMJ] Polynomial $L^2$ Approximation
http://community.wolfram.com/groups/-/m/t/1105974
New *THE MATHEMATICA JOURNAL* article:
----------
Polynomial $L^2$ Approximation
--------------------------------------------------------------------
**Relating Orthonormal Polynomials, Gram—Schmidt Orthonormalization, QR Factorization, Normal Equations and Vandermonde and Hilbert Matrices**
*by GOTTLOB GIENGER*
----------
ABSTRACT: This didactic synthesis compares three solution methods for polynomial $L^2$ approximation and systematically presents their common characteristics and their close interrelations:
1. Classical Gram–Schmidt orthonormalization and Fourier approximation in $L^2(a,b)$
2. Linear least-squares solution via QR factorization on an equally
spaced grid in $[a,b]$
3. Linear least-squares solution via the normal equations method in $L^2(a,b)$
and on an equally spaced grid in $[a,b]$
The first two methods are linear least-squares systems with Vandermonde matrices $V$ ; the normal equations contain matrices of Hilbert type $H=V^TV$ . The solutions on equally spaced grids in $[a,b]$ converge to the solutions in $L^2(a,b)$. All solution characteristics and their relations are illustrated by symbolic or numeric examples and graphs.
- [Read full text][1]
- [Submit an article][2]
----------
![enter image description here][3]
[1]: http://www.mathematica-journal.com/2017/05/polynomial-l2-approximation/
[2]: http://www.mathematica-journal.com/submit-article/
[3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Gienger_Output_20.gif&userId=20103Moderation Team2017-05-24T16:34:28Z[✓] Select specific values from Solve function?
http://community.wolfram.com/groups/-/m/t/1105931
Hello guys!
I want to solve a 4th order equation, and to find its solutions.
This procedure is straightforward but, after this, I want to select only the last 2 roots, and to store them as variables, say w1 and w2.
sol1 = Solve[equ[t, x, j1] == 0, {t}, Reals];
{{t -> -0.241908}, {t -> -0.173627}, {t -> 0.173627}, {t -> 0.241908}}
If I write
w1 = sol1[[3]];
w2 = sol1[[4]];
Print[w1, w2]
I get this thing
{t->0.173627}{t->0.241908}
But I want only the numerical values, without those useless arrows and letters.
HOW CAN I FIX THIS?
Thank you in advance!Robert Poenaru2017-05-24T13:44:10Z[GIF] Tangents (Tangent lines to a Bessel function)
http://community.wolfram.com/groups/-/m/t/1105345
![Tangent lines to a Bessel function][1]
**Tangents**
This shows 900 tangent lines to the Bessel function $J_4$. The Bessel function itself is not explicitly shown at all, but, as in [_Bessel_][2], the graph of the function emerges quite clearly from the approximations.
One note: the GIF is made up out of 1801 frames, which seems to make the Javascript on the post preview page very unhappy, and the original file output by Mathematica was 275 MB(!). Using [gifsicle][3] to reduce the color palette and only record diffs between consecutive frames, I was able to get this down to 2.9 MB, or about 100 times smaller (and thereby actually reasonable to post online).
Here's the code, which makes use of one simple function that returns the tangent line to a function at a given point:
TangentLine[f_, x_] := InfiniteLine[{x, f[x]}, {1, f'[x]}];
DynamicModule[{f, b = N[BesselJZero[4, 6]], n = 450,
cols = RGBColor /@ {"#FF5200", "#003355"}},
f[x_] := BesselJ[4, x];
Manipulate[
Graphics[
{Opacity[.1], cols[[1]],
Table[TangentLine[f, x], {x, Max[-b, s - 2 b], Min[s, b], b/n}]},
PlotRange -> {{-b, b}, {-2, 2}}, AspectRatio -> 2/3,
ImageSize -> 540, Background -> cols[[-1]]],
{s, -b, 3 b}]
]
[1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=lines9c.gif&userId=610054
[2]: http://community.wolfram.com/groups/-/m/t/1052218
[3]: http://lcdf.org/gifsicle/Clayton Shonkwiler2017-05-24T05:00:14ZFind all possible combinations subject to a condition?
http://community.wolfram.com/groups/-/m/t/1096245
Hello!
I am trying to find all possible ways to obtain p3[1] from the following list of constraints:
p2[1] = p1[1] + p1[2],
p2[2] = p1[3] + p1[4],
p2[3] = p1[5] + p1[6],
p2[4] = p1[7] + p1[8],
p3[1] = p2[1] + p2[2],
p3[2] = p2[3] + p2[4],
p4[1] = p3[1] + p3[2]
Let's say p3[1] can be written as p2[1]+p2[2], p1[1]+p1[2]+p2[2] and so on...
Reduce seems to give me some of it, but I have to put in the quantifiers one by one myself. FrobeniusSolve is similar but only works for actual numbers. Is there a better/programmatic way to obtain all possible expressions equivalent to p3[1]?
Thanks a lot!Stuart Griffith2017-05-16T19:48:08Z