Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

How can I make FullSimplify work for user-defined functions?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg52569] How can I make FullSimplify work for user-defined functions?
  • From: gilmar.rodriguez at nwfwmd.state.fl.us (Gilmar Rodr?guez Pierluissi)
  • Date: Thu, 2 Dec 2004 02:21:28 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

(First; a necessary short introduction, and then
 two questions.  Please, bear with me...)

Let N be an even integer greater or equal to 4.

Assume that there exist points (Pi, Qi) on the line
Y = -X + N such that: 

(1.) both Pi, and Qi are primes,

(2.) the points (Pi,0) are on the subinterval [2,N/2]
      of the X-Axis,

(3.) the points (0,Qi) are on the subinterval [N/2,N-2]
      of the Y-Axis.
 
A Minimal Goldbach Prime Partition Point corresponding
to N,(abbreviated: "MGPPP[N]")is a point (P,Q) among
the points (Pi,Qi)  such that:

the distance between the point (P,Q) and the point (N/2,N/2)

= smallest distance among all distances between
  the points (Pi, Qi) and the point (N/2, N/2).

If N is of the form N = 2P then MGPPP[N] = (N/2,N/2).

If N is of the form N = P + Q, with P not equal to Q, then
MGPPP[N] = (P,Q).

For geometrical pictures please visit:
http://gilmarlily.netfirms.com/goldbach/goldbach.htm

Please download the following Mathematica notebook
(version 5.0)by double-cliking this link:

http://gilmarlily.netfirms.com/download/FullSimplify.nb

You can use this notebook to duplicate the evaluations
appearing in the discussion below:

Having said the above; the following program
calculates the MGPPP[N]:

MGPPP[n_] := Module[{p, q},
    {m = n/2; If[Element[m, 
    Primes], {p = m, q = m}, {k =PrimePi[m];
    Do[If[Element[n - Prime[i], Primes], hit = i; 
    Break[]], {i, k, 1, -1}],p = Prime[hit],
    q = n - p}]}; {p, q}]

Examples:

MGPPP[4]={2,2}

MGPPP[100]={47,53}.

The above program can be easily changed as follows to give
only the "p-value" (instead of the point {p,q}):

pvalue[n_] := Module[{p},
    {m = n/2; If[Element[m, 
    Primes], {p = m}, {k =PrimePi[m];
    Do[If[Element[n - Prime[i], Primes], hit = i;
    Break[]],{i, k, 1, -1}], p = Prime[hit]}]}; p]

A plot to depict the p-values is given by:

plt1=ListPlot[Table[pvalue[n],{n,4,100,2}],PlotJoined®True,
PlotStyle®Hue[0.1]]

It has been conjectured that the Minimal Goldbach Prime Partition
p-values have a lower bound given by:

Prime[PrimePi[Sqrt[N]].

To visualize this do:

(** oldlb= abbreviation for old lower bound. **)

oldlb[n_]:=Prime[PrimePi[Sqrt[n]]];

plt2=ListPlot[Table[oldlb[n],{n,4,100,2}],
PlotJoined®True,PlotStyle®Hue[0.2]]

Show[plt1,plt2]

Try also:

TableForm[Table[{n,oldlb[n],pvalue[n]},{n,4,100,2}],
TableHeadings->{None,{"n","oldlb[n]","p"}},
TableAlignments->Center]

However; that lower bound can be improved by the following
new lower bound:

Prime[PrimePi[(N+2*Sqrt[N])/4].

The following program makes use of this latest interval:

pval[n_] := Module[{p},
    {m = n/2; If[Element[m, 
    Primes], {p = m}, {k =PrimePi[m];
    l=PrimePi[(n+2*Sqrt[n])/4];
    Do[If[Element[n - Prime[i], Primes], hit = i; 
          Break[]], {i, k, l, -1}], p = Prime[hit]}]}; p]

To compare the p-values with the old and new lower bounds do:

plt3=ListPlot[Table[pval[n],{n,4,100,2}],PlotJoined®True,
PlotStyle®Hue[0.1]]

newlb[n_]:=Prime[PrimePi[(n+2*Sqrt[n])/4]]

plt4=ListPlot[Table[newlb[n],{n,4,100,2}],
PlotJoined®True,PlotStyle®Hue[0.6]]

Show[plt3,plt4]

Show[plt2,plt3,plt4]

Try also:

TableForm[Table[{n,newlb[n],pval[n]},{n,4,100,2}],
TableHeadings->{None,{"n","newlb[n]","p"}},
TableAlignments->Center]


Finally; I try the FullSimplify command, to test the validity
of the new bound,via:

FullSimplify[newlb[n]<= pval[n],Element[n,EvenQ]&&n³4]

hoping that this evaluation gives me "True" as a result.

I get instead a cryptic:

"Prime[PrimePi[1/4(2Sqrt[n]+n)]]<= p$214"

as answer.

Then I realize: one would really need to prove Goldbach's Conjecture first,
so that the "True" after the above FullSimplify evaluation is truly valid.

So I try instead:

FullSimplify[newlb[n]<=pval[n],Element[n,EvenQ]&&n³4&&n<10^6]

and this time I get:

"Prime[PrimePi[1/4(2Sqrt[n]+n)]]<= p$358".

My questions are:

(1.) How can I make FullSimplify work for user-defined functions?

(2.) How can I make
     FullSimplify[newlb[n]<=pval[n],Element[n,EvenQ]&&n³4&&n<10^6]
     "True"?

Thank you for your attention, and your help!


  • Prev by Date: Re: Inserting user material in the HelpBrowser
  • Next by Date: Fedora3 segmentation fault
  • Previous by thread: Re: Compiled function with NIntegrate
  • Next by thread: Re: How can I make FullSimplify work for user-defined functions?