Re: critical points of a third order polynomial fit (simplification)
- To: mathgroup at smc.vnet.net
- Subject: [mg68490] Re: [mg68466] critical points of a third order polynomial fit (simplification)
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 7 Aug 2006 01:41:11 -0400 (EDT)
- References: <200608060656.CAA23460@smc.vnet.net> <5951C758-2C5C-4727-AD67-41E11F62F79E@mimuw.edu.pl> <acbec1a40608060838n1c214499ledaa6ebdc94e0ebc@mail.gmail.com> <A35E92CF-D0AD-4DB3-8BCF-C23ECF0E51A4@mimuw.edu.pl> <acbec1a40608060945k24193537uf04f334949cede30@mail.gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
On 6 Aug 2006, at 18:45, Chris Chiasson wrote:
> Per offlist discussion with Andrzej Kozlowski, it is seen that
> Mathematica is capable of detecting the numerical ill conditioning in
> this problem when using arbitrary precision numbers. This can be
> tested by appending the following replacements to the definition of
> bracket:
>
> /. x_Real?InexactNumberQ :> SetPrecision[x, 14]
>
> /. x_Real?InexactNumberQ :> SetPrecision[x, 32]
Actually, what hapens in this case is that unless you use precision
of at least 24 both expressions will return the same (not very
useful) output: {ComplexInfinity, Indeterminate}. You need precision
of at leat 25 to get one guaranteed correct digit, in which case you
will get
Precision[x/.rep[3]/.rep[5]//InputForm]
1.42222
Precision[x/.rep[4]/.rep[5]//InputForm]
1.42222
With lower precision at some point of the computation Mathematica
attempts to evaluate 1/0``11.03871382942938 (which it interprets as
ComplexInfinity) issues a warning to the effect that it encountered
division by zero and then returns the answer {ComplexInfinity,
Indeterminate}. Although this answer is not very useful, it will be
the same for both expression and you can see from it that Mathematica
arrived at an approximate 0, which has 0 digits of Precision (and 11
of accuracy). This tells you that you should significantly increase
the precision of your input.
All of this can be avoided by using exact numbers in the input and
writing everything as
N[expression to be computed,n]
where n is the number of correct digits you want to have in the
output. Mathematica should then itself choose the right precision in
the input that guarantees the requested number of digits in the
output. I think that in most cases this approach is more efficient
and convenient than using SetPrecision.
Andrzej Kozlowski
- References:
- critical points of a third order polynomial fit (simplification)
- From: "Chris Chiasson" <chris@chiasson.name>
- critical points of a third order polynomial fit (simplification)