On Thu, 27 Jul 2023, 11:05 'Nasser M. Abbasi' via sage-devel, <
sage-devel@googlegroups.com> wrote:

> Thanks TB; I did not know about the hold context but like you said, it
> does not work here:
>
> sage: var('f x e n a p h g b c d q')
> sage: anti=integrate(x*sec(a+b*log(c*x^n))^2,x, algorithm="maxima")
> sage: with hold:
> ....:          latex(anti)
> ....:
> Not invertible Error: Bad Argument Value
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> Undef/Unsigned Inf encountered in limit
> loops forever...
>

Does "with hold" work if you strip everything apart from integrate() in
anti ?


> The strange thing it works for other expressions
>
> sage: with hold:
> ....:          latex(integrate(sin(x),x))
> ....:
> \int \sin\left(x\right)\,{d x}
>
> I have no idea what is the difference. How does it know that the first
> result was even
> generated by Maxima for it to make any difference?
>
> Anyway, I changed my test program to avoid calling latex() for result that
> failed to avoid this problem.
>
> --Nasser
>
> On Thursday, July 27, 2023 at 4:54:11 AM UTC-5 TB wrote:
>
>> There is the hold context for symbolic expressions:
>>
>> sage: with hold:
>> ....: latex(integrate(sin(x), x))
>> ....:
>> \int \sin\left(x\right)\,{d x}
>>
>> The short docs are at
>>
>> https://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/expression.html#sage.symbolic.expression.hold_class
>> but it looks like it does not work well together with
>> algorithm="maxima". Quick search about this gives the tickets #10035,
>> #10169, #23304 and #31554.
>>
>> Even without the hold context, there is the argument "hold":
>> sage: integrate(sin(x), x)
>> -cos(x)
>> sage: integrate(sin(x), x, hold=True)
>> integrate(sin(x), x)
>> sage: latex(_)
>> \int \sin\left(x\right)\,{d x}
>> sage: integrate(sin(x), x, algorithm="maxima", hold=True) # Bug?
>> -cos(x)
>>
>> Regards,
>> TB
>>
>> On 27/07/2023 0:59, 'Nasser M. Abbasi' via sage-devel wrote:
>> >
>> > " I think it would be reasonable for Sage to do what the original
>> poster
>> > suggested, and turn integrals into \int in latex rather than trying to
>> > evaluate them."
>> >
>> > Yes, this is what I am asking. If there is a way to prevent evaluation
>> > of an expression being passed to latex() command.
>> >
>> > In Mathematica for example, this is done by wrapping the expression in
>> > HoldForm, like this
>> >
>> > TeXForm[Integrate[Sin[x], x]]
>> >            -\cos (x)
>> >
>> > TeXForm[HoldForm[Integrate[Sin[x], x]]]
>> >       \int \sin (x) \, dx
>> >
>> > In Maple this is done by wrapping the expression by '  '  like this
>> >
>> > latex(int(sin(x),x))
>> >            -\cos \! \left(x \right)
>> >
>> > latex('int(sin(x),x)')
>> >        \int \sin \! \left(x \right)d x
>> >
>> > I just wanted to know how to do the same in sagemath. Many times there
>> > is a need to obtain the latex of an expression without it being
>> evaluated,
>> >
>> > --Nasser
>> >
>> > On Wednesday, July 26, 2023 at 9:34:34 AM UTC-5 David Roe wrote:
>> >
>> > Even if adding some assumptions makes this particular integral
>> > evaluate fully, the underlying problem may still show up in other
>> > cases.  I haven't tracked it down fully (and probably won't spend
>> > more time on this), but the error messages are coming from Sage's
>> > interface to Giac, via this function in expression.pyx:
>> >
>> > cpdef _latex_Expression(x):
>> >     return char_to_str(GEx_to_str_latex(&(<Expression>x)._gobj))
>> >
>> > I think it would be reasonable for Sage to do what the original
>> > poster suggested, and turn integrals into \int in latex rather than
>> > trying to evaluate them.
>> > David
>> >
>> > On Wed, Jul 26, 2023 at 7:14 AM Dima Pasechnik <dim...@gmail.com>
>> wrote:
>> >
>> > On Wed, Jul 26, 2023 at 6:17 AM 'Nasser M. Abbasi' via sage-devel
>> > <sage-...@googlegroups.com> wrote:
>> > >
>> > > Sometimes when calling integrate using algorithm such as
>> > maxima, it returns result which is not fully resolved but still
>> > have an integrate inside it.
>> > >
>> > > Next, when calling latex() on the anti-derivative this cause
>> > problems, because sage tried to calls maxima again on the
>> > integrate command inside the result.
>> > >
>> > > Is there a way to make latex() just convert the result
>> > without calling integrate again?
>> > > This results in problems like the following
>> > >
>> > > sage: latex(anti)
>> > > Not invertible Error: Bad Argument Value
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > >
>> > > Here is an example
>> >
>> > for this integral, I think you'd like to add
>> >
>> > assume(n,"integer")
>> > assume(n>0)
>> >
>> > Do you really want to work in the complex domain, not also
>> >
>> > assume(x>0)
>> > assume(c>0)
>> >
>> > ?
>> >
>> > Anyhow, this looks like a Maxima bug to me.
>> >
>> > Dima
>> >
>> >
>> > >
>> > > >sage
>> > > │ SageMath version 10.0, Release Date: 2023-05-20
>> >         │
>> > > │ Using Python 3.11.3. Type "help()" for help.
>> >        │
>> > > sage: var('f x e n a p h g b c d q')
>> > > sage: anti=integrate(x*sec(a+b*log(c*x^n))^2,x,
>> > algorithm="maxima");
>> > > sage: latex(anti)
>> > >
>> > > Not invertible Error: Bad Argument Value
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > >
>> > > The result of maxima in this case has unresolved integrate
>> > inside it. This is the actual antiderivative
>> > >
>> > > sage: integrate(x*sec(a+b*log(c*x^n))^2,x, algorithm="maxima")
>> > > 2*(x^2*cos(2*b*log(x^n) + 2*a)*sin(2*b*log(c)) +
>> > x^2*cos(2*b*log(c))*sin(2*b*log(x^n) + 2*a) -
>> > 2*(2*b^2*n^2*cos(2*b*log(c))*cos(2*b*log(x^n) + 2*a) -
>> > 2*b^2*n^2*sin(2*b*log(c))*sin(2*b*log(x^n) + 2*a) +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*cos(2*b*log(x^n) + 2*a)^2 +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*sin(2*b*log(x^n) + 2*a)^2 +
>> > b^2*n^2)*integrate((x*cos(2*b*log(x^n) + 2*a)*sin(2*b*log(c)) +
>> > x*cos(2*b*log(c))*sin(2*b*log(x^n) +
>> > 2*a))/(2*b^2*n^2*cos(2*b*log(c))*cos(2*b*log(x^n) + 2*a) -
>> > 2*b^2*n^2*sin(2*b*log(c))*sin(2*b*log(x^n) + 2*a) +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*cos(2*b*log(x^n) + 2*a)^2 +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*sin(2*b*log(x^n) + 2*a)^2 + b^2*n^2),
>> > x))/(2*b*n*cos(2*b*log(c))*cos(2*b*log(x^n) + 2*a) +
>> > (b*cos(2*b*log(c))^2 + b*sin(2*b*log(c))^2)*n*cos(2*b*log(x^n) +
>> > 2*a)^2 - 2*b*n*sin(2*b*log(c))*sin(2*b*log(x^n) + 2*a) +
>> > (b*cos(2*b*log(c))^2 + b*sin(2*b*log(c))^2)*n*sin(2*b*log(x^n) +
>> > 2*a)^2 + b*n)
>> > >
>> > > Notice there is an integrate(...) command inside the above
>> > output. So maxima found it can't integrate that part and left
>> > the integrate command there. So I do not want this to be
>> > evaluated. I just need the latex conversion done keeping
>> > integrate as "\int{.....}" without evaluating.
>> > >
>> > > This happens because sage was calling
>> > >
>> > > integrate((x*cos(2*b*log(x^n) + 2*a)*sin(2*b*log(c)) +
>> > x*cos(2*b*log(c))*sin(2*b*log(x^n) +
>> > 2*a))/(2*b^2*n^2*cos(2*b*log(c))*cos(2*b*log(x^n) + 2*a) -
>> > 2*b^2*n^2*sin(2*b*log(c))*sin(2*b*log(x^n) + 2*a) +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*cos(2*b*log(x^n) + 2*a)^2 +
>> > (b^2*cos(2*b*log(c))^2 +
>> > b^2*sin(2*b*log(c))^2)*n^2*sin(2*b*log(x^n) + 2*a)^2 + b^2*n^2), x)
>> > > Not invertible Error: Bad Argument Value
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Not invertible Error: Bad Argument Value
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > Undef/Unsigned Inf encountered in limit
>> > > and these go on forever it seems
>> > >
>> > > And getting these error. The strange thing, is calling the
>> > above exact command inside Maxima just returns the input back,
>> > without these errors!
>> > >
>> > > So these errors are generated by sagemath and not by maxima
>> > from the latex() command.
>> > >
>> > > I am using Maxima 5.47 with sagemath 10.0
>> > >
>> > > >which maxima
>> > > /usr/bin/maxima
>> > > >maxima --version
>> > > ;;; Loading #P"/usr/lib/ecl-21.2.1/sb-bsd-sockets.fas"
>> > > ;;; Loading #P"/usr/lib/ecl-21.2.1/sockets.fas"
>> > > Maxima 5.47.0
>> > > >
>> > > And
>> > >
>> > > >which sage
>> > > /home/me/TMP/sage-10.0/sage
>> > > >sage --version
>> > > SageMath version 10.0, Release Date: 2023-05-20
>> > > >
>> > >
>> > > Thanks
>> > > --Nasser
>> > >
>> > > --
>> > > You received this message because you are subscribed to the
>> > Google Groups "sage-devel" group.
>> > > To unsubscribe from this group and stop receiving emails from
>> > it, send an email to sage-devel+...@googlegroups.com.
>> > > To view this discussion on the web visit
>> >
>> https://groups.google.com/d/msgid/sage-devel/43c4f68d-4be8-4cbc-a68a-d54321969ab7n%40googlegroups.com
>> <
>> https://groups.google.com/d/msgid/sage-devel/43c4f68d-4be8-4cbc-a68a-d54321969ab7n%40googlegroups.com>.
>>
>> >
>> > --
>> > You received this message because you are subscribed to the
>> > Google Groups "sage-devel" group.
>> > To unsubscribe from this group and stop receiving emails from
>> > it, send an email to sage-devel+...@googlegroups.com.
>> >
>> > To view this discussion on the web visit
>> >
>> https://groups.google.com/d/msgid/sage-devel/CAAWYfq30oD1XdVmcCNZtkZfXVAwOKZimb%3D59hMi7ug6FpYYTFA%40mail.gmail.com
>> <
>> https://groups.google.com/d/msgid/sage-devel/CAAWYfq30oD1XdVmcCNZtkZfXVAwOKZimb%3D59hMi7ug6FpYYTFA%40mail.gmail.com>.
>>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "sage-devel" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an email to sage-devel+...@googlegroups.com
>> > <mailto:sage-devel+...@googlegroups.com>.
>> > To view this discussion on the web visit
>> >
>> https://groups.google.com/d/msgid/sage-devel/f3acc34c-a9eb-475f-bd64-710c3241af91n%40googlegroups.com
>> <
>> https://groups.google.com/d/msgid/sage-devel/f3acc34c-a9eb-475f-bd64-710c3241af91n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sage-devel/37579431-23f4-4ae6-9880-675efe0e952fn%40googlegroups.com
> <https://groups.google.com/d/msgid/sage-devel/37579431-23f4-4ae6-9880-675efe0e952fn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAAWYfq3c-FvjgrqwRCOzRBAGwuPsdJh_sCd%2B1cNA%2BH8AVbak7g%40mail.gmail.com.

Reply via email to