From: Robert D. <rob...@gm...> - 2015-09-09 19:22:41
|
On 2015-09-08, David Scherfgen <d.s...@go...> wrote: > All we need to do is to use a different variable inside the rootsof > expression, not the original variable of integration. This prevents the > back-substitution at the end of the integration. > > Here's a possible way to do that: > > src/sin.lisp, line 169: > - (($rootsof) ,qq)))) > + (($rootsof) ,(subst (make-param) variable qq))))) > > (%i1) integrate(1/(x^(1/3)+x+1),x),integrate_use_rootsof:true; > (%o1) 3*'lsum((%r1^2*log(x^(1/3)-%r1))/(1+3*%r1^2),%r1,rootsof(%r2^3+%r2+1)) > > As you see, there are now two auxiliary variables, %r1 and %r2. Maybe the > second one should get a different prefix? I don't know if there is any kind > of guideline for that. Is there another way to inhibit the unwanted substitution? I think it's better to keep the rootsof(...) expression in terms of the variable of integration -- otherwise we would need to add a notation to rootsof to indicate what the variable is. Also it might (or might not) look unfamiliar to users. > If somebody gives me the permission, I would gladly make this my very first > Git commit to Maxima. If you have a Sourceforge user name, I will gladly add it to the list of developers. best, Robert Dodier |