Re: Re: Problem with element and Maximize
- To: mathgroup at smc.vnet.net
- Subject: [mg83015] Re: [mg82814] Re: [mg82746] Problem with element and Maximize
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Wed, 7 Nov 2007 06:36:04 -0500 (EST)
- References: <219557.50206.qm@web26010.mail.ukl.yahoo.com>
- Reply-to: drmajorbob at bigfoot.com
That's not the polynomial I got from Rationalize; if you got a different
one from the same input, you must have a different version of Mathematica
or a different OS, different chip, etc. I had already noticed that if I
used Chop@Rationalize[eq,0], then Maximize failed -- too-large integers
involved, I assume -- so I suggest you use a larger tolerance, such as:
data = {{0, 0}, {10, 10}, {20, 0}, {30, 10}};
eq = Fit[data, {1, x, x^2, x^3}, x]
proxy = Rationalize[eq, 10^-6]
Maximize[{proxy, x \[Element] Integers, x <= 20}, x]
eq /. Last@%
1.96128*10^-15 + 3.33333 x - 0.3 x^2 + 0.00666667 x^3
(10 x)/3 - (3 x^2)/10 + x^3/150
{273/25, {x -> 7}}
10.92
That's obviously an easier problem than
proxy = Rationalize[eq, 10^-15]
Maximize[{proxy, x \[Element] Integers, x <= 20}, x]
eq /. Last@%
1/509872338168900 + (10 x)/3 - (3 x^2)/10 + x^3/150
{5567805932804389/509872338168900, {x -> 7}}
10.92
or
proxy = Rationalize[eq, 0]
Maximize[{proxy, x \[Element] Integers, x <= 20}, x]
eq /. Last@%
4/2039489352675603 + (10 x)/3 - (
245650888765664 x^2)/818836295885547 + (
14612439855600 x^3)/2191865978340001
Maximize[{4/2039489352675603 + (10 x)/3 - (245650888765664 x^2)/
818836295885547 + (14612439855600 x^3)/2191865978340001,
x \[Element] Integers, x <= 20}, x]
ReplaceAll::reps: {x} is neither a list of replacement rules nor a \
valid dispatch table, and so cannot be used for replacing. >>
1.96128*10^-15 + 3.33333 x - 0.3 x^2 + 0.00666667 x^3 /.x
Bobby
On Mon, 05 Nov 2007 09:46:11 -0600, Peter van Summeren
<peter_van_summeren at yahoo.co.uk> wrote:
> Hello Bobby,
> the solution you gave does not work for me(see code below).
> Maximize does not give a solution.
> Maximize[{1/379250494936462 + (105718301111983 x)/31715490333595 - (
> 3 x^2)/10 + x^3/150, x \[Element] Integers, x <= 20}, x]
> And this is what Mathematica gives.
> ReplaceAll::reps: {x} is neither a list of replacement rules nor a \
> valid dispatch table, and so cannot be used for replacing. >>
>
> I do not know enough of Mathematica to see what went wrong.
> Could you give me some idea?
> with friendly greetings,
> Peter van Summeren
>
> ----- Original Message ----
> From: DrMajorBob <drmajorbob at bigfoot.com>
> To: mathgroup at smc.vnet.net
> Sent: Wednesday, 31 October, 2007 12:20:56 PM
> Subject: [mg82814] Re: [mg82746] Problem with element and Maximize
>
> Don't round the real-valued solution; it won't always get you the best
> integer solution.
>
> But this should work:
>
> data = {{0, 0}, {10, 10}, {20, 0}, {30, 10}};
> eq = Fit[data, {1, x, x^2, x^3}, x]
> proxy = Rationalize[eq, 10^-15]
> Maximize[{proxy, x \[Element] Integers, x <= 20}, x]
> eq /. Last@%
>
> 1.96128*10^-15 + 3.33333 x - 0.3 x^2 + 0.00666667 x^3
>
> 1/509872338168900 + (10 x)/3 - (3 x^2)/10 + x^3/150
>
> {5567805932804389/509872338168900, {x -> 7}}
>
> 10.92
>
> Without the upper bound the function has no maximum and, with
> approximate
> coefficients, Maximize can't use efficient integer optimization
> methods.
>
> Bobby
>
> On Tue, 30 Oct 2007 03:31:51 -0500, Uncle Paul <paul at desinc.com> wrote=
:
>
>> I'm not sure what I am doing wrong. I am trying to get the nearest
>> integer maximim for the mentioned equation. I could round the X
>> value, but I would like to operate Mathematica correctly.
>>
>> (*generate the equation*)
>> data = {{0, 0}, {10, 10}, {20, 0}, {30, 10}};
>> eq = Fit[data, {1, x, x^2, x^3}, x]
>> Plot[eq, {x, 0, 30}]
>>
>> Maximize[{eq, x \[Element] Integers}, x] (*wrong!*)
>>
>> Maximize[{eq}, x] (*correct, but not integer, of course*)
>>
>>
>> Best Regards,
>> Paul
>>
>>
>
>
>
-- =
DrMajorBob at bigfoot.com