" Does "with hold" work if you strip everything apart from integrate() in anti ?"
Yes. 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: anti 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) #copy the integrate part only from the above and paste it in the following command sage: with hold: ....: latex(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*l ....: og(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)) ....: \int \frac{x \cos\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right) \sin\left(2 \, b \log\left(c\right)\right) + x \cos\left(2 \, b \log\left(c\right)\right) \sin\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right)}{2 \, b^{2} n^{2} \cos\left(2 \, b \log\left(c\right)\right) \cos\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right) - 2 \, b^{2} n^{2} \sin\left(2 \, b \log\left(c\right)\right) \sin\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right) + {\left(b^{2} \cos\left(2 \, b \log\left(c\right)\right)^{2} + b^{2} \sin\left(2 \, b \log\left(c\right)\right)^{2}\right)} n^{2} \cos\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right)^{2} + {\left(b^{2} \cos\left(2 \, b \log\left(c\right)\right)^{2} + b^{2} \sin\left(2 \, b \log\left(c\right)\right)^{2}\right)} n^{2} \sin\left(2 \, b \log\left(x^{n}\right) + 2 \, a\right)^{2} + b^{2} n^{2}}\,{d x} No error. --Nasser On Thursday, July 27, 2023 at 6:14:09 AM UTC-5 Dima Pasechnik wrote: > > > On Thu, 27 Jul 2023, 11:05 'Nasser M. Abbasi' via sage-devel, < > sage-...@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+...@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/94ec170a-3809-4410-8a4a-b3cbee37ba44n%40googlegroups.com.