|
From: Richard F. <fa...@gm...> - 2015-09-07 22:57:46
|
Incidentally, Mathematica 10.0 returns an expression, the first 1/3 of
which looks like
-(2/13) 3^(
4/13) (2 ArcTan[(x^(1/6) Sec[(3 \[Pi])/26])/3^(1/13) -
Tan[(3 \[Pi])/26]] Cos[\[Pi]/26] +
2 ArcTan[Cot[(2 \[Pi])/13] + (x^(1/6) Csc[(2 \[Pi])/13])/3^(1/13)]
.....
whereas Wolfram Alpha's answer returns
-2/13 *3^(4/13)* ( Log( .....) ...
RJF
On Mon, Sep 7, 2015 at 3:50 PM, Richard Fateman <fa...@gm...> wrote:
> A bunch of responses:
>
> 1. Thanks for providing a brief way of producing this error message.
> 2. If you really want an answer, you could try
>
> integrate_use_rootof:true;
>
> integrate(1/(x^(5/2)+3*x^(1/3)),x);
>
> though I'm not sure the answer returned is correct or
> even sensible.
>
> It returns
> 6*lsum(log(x^(1/6)-%r1)/(13*%r1^9),%r1,rootsof(x^(13/6)+3))
>
> Mathematica produces an answer, but one which is quite large.
> Wolfram Alpha produces an answer that is different but is
> also large, and runs out of time, it seems, in analyzing the
> expression. Incidentally, it apparently allows the Maxima syntax :)
>
> I'm not sure the answer is correct or even sensible. The
> Mathematica system 10 could not simplify the derivative back
> to the input, at least not before I lost patience.
>
>
>
> 3. My understanding of algebraic:true is that it uses
> only roots of integers (absent in your expression)
> %i (also absent), and tellrat() info (also absent).
> So setting algebraic to true is maybe not the right thing to do.
>
> Introducing both sqrt(x) and x^(1/3) by a single algebraic
> extension of degree 6 is possible via tellrat. I'm not
> sure this gets you to where you want.
>
> Or even if you really want this integral or are just poking at Maxima.
>
> 4. If you really want to try to patch this bug in the handling of
> algebraic:true,
> + integrate + ratsimp, not by fixing the bug, but by catching it in a
> different
> place, you can look at code in src/rat3a.lisp where you can see that the
> polynomial division in the function pquotient, at some point says, in
> effect,
> HEY! you want me to divide exactly -- that's what pquotient does -- but
> the remainder is not zero. There's no bug in pquotient, but there is a bug
> in someone who called it on bad argumemtns. (This is probably because
> the GCD routine in use fails when there are algebraically dependent
> indeterminates, but this handling of algebraics is touchy. maybe because
> of comment 1. (thanks) someone can find this??? Anyway, this
> error-catch of the throw in pquotient is what you would have to change, so
> that
> it doesn't just vomit all the way to the top, but to some other err-catch.
> Maybe you can figure out enough from the comments and the code to
> do this. The main body of code (but not all the comments) are almost
> 50 years old, circa 1966 I think.
>
> 5. I am not sure what you mean by "throw to the outside" and how this makes
> life easier. Perhaps you are resisting the "easy" way -- which is to use
> the Maxima read-meval-print loop to call your functionality -- and
> calling
> Maxima via some other language at the end of a pipe?
> (Why easy? load into Maxima some lisp function from a file foo, by
> load("c:/..../foo.lisp");
>
> and in the file foo.lisp
>
> (defun $sherfgen(x) (call_whatever_you_want_next x))
>
> ;; call_whatever .... can link to fortran, python, jscript, java, most any
> windows dll, typical unix .o files, libraries etc
>
> And the load() command can be put into a maxima initialization file so
> it is loaded up without user attention.
>
>
> Anyway. I hope this info is useful, and you take the opportunity to learn
> more lisp and
> Maxima stuff.
>
> RJF
>
>
> On Mon, Sep 7, 2015 at 12:54 AM, David Scherfgen <
> d.s...@go...> wrote:
>
>> Hello,
>>
>> the following integral results in an error "quotient by zero":
>>
>> integrate(ev(ratsimp(1/(x^(5/2)+3*x^(1/3))),algebraic),x);
>>
>> Unfortunately, I can't catch the error using errcatch. It goes right
>> through it, i.e. the whole evaluation is aborted, and I don't get any
>> result (usually, errcatch would give me an empty list if it caught an
>> error).
>>
>> I've had a similar problem with questions being asked by Maxima - there
>> is no official way to intercept them. This is really bad if you run Maxima
>> "automatedly" - without anybody being there to answer questions.
>>
>> But luckily, there is Robert Dodier's noninteractive package that
>> re-defines the Maxima functions that are responsible for asking those
>> questions. The re-defined functions don't ask the questions, but throw
>> them, so that it can be caught from the outside.
>>
>> I tried to do something similar with the function that's responsible for
>> generating the error, the function merror in merror.lisp.
>>
>> This is my attempt at it:
>>
>> ; If this is enabled, errors will be intercepted and thrown.
>> (defmvar $no_errors t)
>>
>> ; A wrapper around MERROR in merror.lisp.
>> (defvar *real-merror* (symbol-function 'merror))
>> (defun merror (sstring &rest l)
>> (if $no_errors
>> (meval `(($throw) '(($merror) ,sstring ,@ l)))
>> (apply *real-merror* sstring l)))
>>
>> In a simple test case, it seems to work:
>>
>> (%i1) catch(1/0);
>> (%o1) merror("expt: undefined: 0 to a negative exponent.")
>>
>> It throws the error instead of aborting the evaluation, just as I want.
>>
>> But in my original problem, it doesn't work, but crashes Maxima instead:
>>
>> (%i1) catch(integrate(ev(ratsimp(1/(x^(5/2)+3*x^(1/3))),algebraic),x));
>> Maxima encountered a Lisp error:
>> Condition in MEVAL [or a callee]: INTERNAL-SIMPLE-ERROR: Bind stack
>> overflow.
>> Automatically continuing.
>> To enable the Lisp debugger set *debugger-hook* to nil.
>>
>> Unfortunately, my LISP knowledge is basically nonexistent.
>>
>> Does anyone of you know why this doesn't work? Why can't errcatch catch
>> the error in the first place? Is there something wrong with my merror
>> wrapper?
>>
>> Thanks for any help!
>>
>> Best regards,
>> David
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Maxima-discuss mailing list
>> Max...@li...
>> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>>
>>
>
|