on 00.9.9 0:41 AM, Richard Fateman at fateman at EECS.Berkeley.EDU wrote:
>
>
> Andrzej Kozlowski wrote:
>>
>> on 00.9.8 11:28 AM, Richard Fateman at fateman at cs.berkeley.edu wrote:
>>
>>> The problem pointed out here is that Mathematica gives, for the
>>> indefinite integral, a form that cannot be used via the fundamental
>>> theorem of calculus, to compute the definite integral.
>>> First of all it would be nice if the result were "simplified"
>>> to Sqrt[Sin[z]^2].
>>
>> It might be nice but also wrong, since the two answers are only equal in the
>> first and third quadrants (for real z) e.g:
>>
>> In[23]:=
>> Sqrt[Cos[z]^2]*Tan[z] /. z -> 7*Pi/4
>>
>> Out[23]=
>> 1
>> -(-------)
>> Sqrt[2]
>>
>> In[24]:=
>> Sqrt[Sin[z]^2] /. z -> 7Pi/4
>>
>> Out[24]=
>> 1
>> -------
>> Sqrt[2]
>
> Actually, the non-equivalence of the two expressions as demonstrated by
> substitution is NOT convincing.
> As we know, the sqrt(2) has TWO values, +1.41... and - 1.41... and
> Mathematica is choosing the wrong ones sometimes. If you return, for
> the square-root, a set of the two values, then the answers are
> equivalent
> at any point. All you've shown above is that Mathematica still doesn't
> know how to simplify square roots, not that the expressions are
> different.
It seems to me that you are just trying to confuse the issue here. You
wrote:
>>> First of all it would be nice if the result were "simplified"
>>> to Sqrt[Sin[z]^2].
First of all, it would be a strange program that "simplified"
Sqrt[Cos[z]^2]*Tan[z] to Sqrt[Sin[z]^2]. And if you meant to say that
Mathematica should have "chosen" Sqrt[Sin[z]^2] as its answer rather than
Sqrt[Cos[z]^2]*Tan[z], than that would be almost as bad since while
Sqrt[Cos[z]^2]*Tan[z] gives the wrong answer for certain z, Sqrt[Sin[z]^2]
is wrong more often.
>>
>>> Then it would be nice if it were noted that integration through
>>> points at which Sqrt[0] were computed would result in possible
>>> problems.
>>> Rather than saying "I understand how Mathematica might compute this
>>> wrong
>>> result" and it is therefore forgivable, I would recommend trying
>>> to figure out how to conditionalize the result so that illegal
>>> substitutions can be avoided.
>>
>> This is basically a question of interface rather anything to do with "bugs"
>> etc. I must admit I am also disturbed when Mathematica "innocently" returns
>> what looks like a mathematically wrong answer. However, in many cases,
>> including this one, the answer only "looks" wrong. A good case can be made
>> for the view that
>>
>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] /. a -> 3/4
>>
>> is simply not a legitimate way to try to get an answer to the question
>> posed, particularly that Integrate[Abs[Cos[x]], {x, 0, (Pi)*(3/4)}] returns
>> the correct answer.
> If it is not legitimate, then Mathematica should note that, don't you
> think?
> Imagine if the computation were in the middle of 8 hours of computing
> time,
> and were hidden inside a much larger expression. It is unreasonable to
> REQUIRE every human user of Mathematica to check over its answers, don't
> you think?
That's what I meant by "a matter of interface".
>
>> There is a deeper philosophical issue involved here. In
>> my first posting I wrote that "there is nothing mathematically wrong" with
>> the answer returned by Mathematica, but actually a more correct view would
>> be that everything is wrong with both the answer and the question. The input
>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] has no mathematical meaning until an
>> interpretation is assigned to a, and also until it has been agreed what sort
>> of mathematical (?) object an answer to this sort of question is supposed to
>> be.
>
> I disagree. Based on your approach, the answer should be
> If{some_test[a], answer1[a], answer2[a]], which Mathematica can and
> should
> return.
>
> Actually, we need to do something about the path as well, since the
> integrand
> is not analytic.
Well, that is actually what I meant. Mathematica is often asked to return an
answer where there is no unique answer. It sometimes will simply return the
input unevaluated (as in Sqrt[a^2]), sometimes an "If" statement and
sometimes just an answer which is only valid under some conditions. That's
what I meant when I wrote that there is no clear principle about what
constitutes a "Mathematica answer". On the other hand one may argue that
there is a good reason for the absence of such a principle. In some areas
Mathematica enters into territory where there are no known general
algorithms that in all cases lead to correct solutions. In fact integration
is an obvious example of this sort of situation, but there are others. One
then has the choice between not returning any answer (or, in Mathematica's
case returning the input unevaluated) or using ad hoc methods which which
will give the right answer in certain cases but may also give erroneous ones
in other. In mathematics this sort of thing does not arise because we are
not forced to use general algorithms to solve particular problems, but can
treat each as a special case. Obviously this is not a feasible approach for
computer science. When I wrote that the main issue is one of interface I was
referring mainly to these sort of situations. Basically the question is how
to make the user aware that he is entering into a territory where there are
no general methods and where correct answers are not guaranteed. I do not
think Mathematica is very good at this. Sometimes warning messages are
issued (e.g. by Solve, then it is using inverse functions), but in other
cases only partially true or even wrong solutions are returned without any
warning, even though this cannot be said to involve a "bug", because this
sort of thing is to some extent inevitable (unless when restricted
Mathematica only to those areas where perfectly general and infallible
methods exist, which would make it a pretty boring and much less useful
program).
I think this deals with all the rest of the points you make. You seem to be
assuming that everything can be dealt by general algorithms and the problem
is only with implementing them. Well, maybe because our subjects are
different, (I am an algebraic topologist) but to me this seems ridiculous.
I can produce countless examples of mathematical problems which can't be
dealt by any general algorithm, and others, where there are general
algorithms which break down in various special cases. In fact from my point
of view essentially all interesting mathematics is of this kind. This does
make computer programs useless but it means that the program has to be used
as a subsidiary tool, the main one being your brain and your knowledge of
mathematics. With this approach I am, as I wrote, not terribly worried by
Mathematica giving answers like the one in this case, because I can see what
they mean and make as good use them as I would of a "correct answer",
whatever that may mean in this case (and that itself is not quite well
defined actually).
Andrzej
>
> Of course if one uses a computer algebra system whose model of
> mathematics
> is broken, or which has outright bugs in it, then there are
> difficulties,
> just as if you were using a C compiler with a bug.
>
>>
>> That
>> means that understanding what is going on is and is going to remain
>> essential, whether the answers returned are "correct" or not. That is why I
>> am not terribly worried by "wrong" answers as long as that are easily
>> understandable.
>
> And if the answer is very plausible, but wrong just the same, what are
> you going to do? It is the responsibility of the computer scientists
> and the mathematicians who build computer algebra systems to avoid the
> commission of errors that result in errors.
>
> The view of certain physicist-programmers that suggest it is ok to
> return
> wrong answers because a good scientist would always seek independent
> confirmation, suggest that the role of computers in symbolic mathematics
> is trivialized to doing only what can be reproduced or confirmed by
> paper and pencil in a reasonable time. I believe the role of computers
> can be a good deal stronger. For example, a computer could be the
> world's most expert source of knowledge about integration. It could
> include
> all tabulated integrals, and all algorithms. Of course a algorithm W
> that sometimes returns wrong answers could NOT be used unless the
> program
> itself used some failure-proof program that called W, and rejected all
> answers that were wrong.
>
> RJF
>
>> Actually I think they can be more useful than right answers
>> which are not "understandable" (like the billionth digit of Pi etc), though
>> of course understandable right answers are preferable.
>>
>>> Andrzej Kozlowski wrote:
>>>>
>>>> My mathematica 4 (for MacOS) gives:
>>>>
>>>> In[1]:=
>>>> Table[Integrate[Abs[Cos[x]], {x, 0, (Pi/2)*n}], {n, 1, 5, 2}]
>>>> Out[2]=
>>>> {1, 3, 5}
>>>>
>>>> which undobtedly is correct, so I suppose you must be referring to
>>>> something
>>>> else.
>>>>
>>>> Perhaps you have in mind something like this:
>>>>
>>>> In[3]:=
>>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*a}] /. a -> 3/4
>>>> Out[3]=
>>>> 1
>>>> -(-------)
>>>> Sqrt[2]
>>>>
>>>> In[4]:=
>>>> Integrate[Abs[Cos[x]], {x, 0, (Pi)*(3/4)}]
>>>> Out[4]=
>>>> 1
>>>> 2 - -------
>>>> Sqrt[2]
>>>>
>>>> The first answer is "wrong" but it is quite understandable and, in a way,
>>>> reasonable how it is obtained. To see this note that Mathematica gives:
>>>>
>>>> In[5]:=
>>>> Integrate[Abs[Cos[x]], {x, 0, z}]
>>>> Out[5]=
>>>> 2
>>>> Sqrt[Cos[z] ] Tan[z]
>>>>
>>>> The indefinite integral is interpreted as a path integral in the complex
>>>> plane. Is this answer right or wrong? There is nothing mathematically wrong
>>>> with it, except that the function Abs[Cos[z]] is not analytic everywhere
>>>> and
>>>> there is no "unique" correct answer, independent of the path chosen (and
>>>> hence also of z). In my opinion Mathematica does here as much as could be
>>>> reasonably expected of it in this sort of situation. The alternative would
>>>> be for it not to give any answer to "path integrals" involving non-analytic
>>>> functions. At least then there would be less complaint about "bugs" in
>>>> integration.
>>>>
>>>> --
>>>> Andrzej Kozlowski
>>>> Toyama International University, JAPAN
>>>>
>>>> For Mathematica related links and resources try:
>>>> <http://www.sstreams.com/Mathematica/>
>>>>
>>>> on 9/2/00 2:57 AM, Paul Cally at cally at kronos.maths.monash.edu.au wrote:
>>>>
>>>>> Try integrating | cos u| from u=0 to u = Pi x. Despite the integrand
>>>>> being everywhere
>>>>> non-negative, Mathematica 4 gives a result which jumps DOWNWARDS by 2 at
>>>>>
>>>>> x=1/2, 3/2, 5/2, .... I thought these simple integration errors had been
>>>>> sorted out by
>>>>> Wolfram years ago!
>>>>>
>>>>> Paul Cally
>>>>>
>>>>> --
>>>>>
>>>>> +-------------------------------------------------------------------------
>>>>> -+
>>>>> |Assoc Prof Paul Cally | Ph: +61 3 9905-4471
>>>>> |
>>>>> |Dept of Mathematics & Statistics | Fax: +61 3 9905-3867
>>>>> |
>>>>> |Monash University | paul.cally at sci.monash.edu.au
>>>>> |
>>>>> |PO Box 28M, Victoria 3800 |
>>>>> |
>>>>> |AUSTRALIA | http://www.maths.monash.edu.au/~cally/
>>>>> |
>>>>> +-------------------------------------------------------------------------
>>>>> -+
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>
>> --
>> Andrzej Kozlowski
>> Toyama International University
>> JAPAN
>>
>> http://platon.c.u-tokyo.ac.jp/andrzej/
>> http://sigma.tuins.ac.jp/
--
Andrzej Kozlowski
Yokohama, JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/http://sigma.tuins.ac.jp/