grzegorzmazur / yacas

Computer calculations made easy
http://www.yacas.org
GNU Lesser General Public License v2.1
124 stars 24 forks source link

Yacas seems can‘t solve the indefinite integral if it‘s a little bit complex #288

Closed Orbis36 closed 4 years ago

Orbis36 commented 4 years ago

I first used Ryacas in Ubuntu18.04 with both 1.1.3 and 0.3.1 version, both of them can't solve the integral like x^2/(2*(1+x^2)), which is not very sophisticated. It just give me the output like CN)6V12CN0896Y5VC1(SBBR in 0.3.1

In 1.1.3, there is no method "Sym" , so I use yacas directly, it can solve the simple question perfect but if I use something like "x^x" or "log(x)", it seems not work. 86A4~RRG5MT%S(E1672NT25

I noticed that in the document of Yacas(https://s0yacas0readthedocs0io.icopy.site/en/latest/book_of_algorithms/integration.html?highlight=integrate) there is a sentence: "Integrate() can have its own set of rules for specific integrals, which might return a correct answer immediately. Alternatively, it calls the function AntiDeriv() , to see if the anti-derivative can be determined for the integral requested. If this is the case, the anti-derivative is used to compose the output."

Is it mean if yacas confront with some complex indefinite integral, it will just give the answer like "AntiDeriv(expression)" ? or there is any way to forbid the output and get the real answer?

Thanks a lot if you can provide some help.

grzegorzmazur commented 4 years ago

Hi,

Unfortunately, the support for integrals in yacas is very rudimentary, as you've noticed. Spitting out AntiDeriv() is just admitting "I don't really know the answer", so just blocking it wouldn't help - knowing the answer would. But implementing decent integration is not really for the faint of heart, there's perhaps just only a few full implementations of the Risch algorithm, and other approaches as https://rulebasedintegration.org/ are not exactly easy to implement either. So while improving integration is on the todo list, it's not going to happen soon.

Cheers, Grzesiek

Orbis36 commented 4 years ago

Hi,

Unfortunately, the support for integrals in yacas is very rudimentary, as you've noticed. Spitting out AntiDeriv() is just admitting "I don't really know the answer", so just blocking it wouldn't help - knowing the answer would. But implementing decent integration is not really for the faint of heart, there's perhaps just only a few full implementations of the Risch algorithm, and other approaches as https://rulebasedintegration.org/ are not exactly easy to implement either. So while improving integration is on the todo list, it's not going to happen soon.

Cheers, Grzesiek

Get it Thanks for your reply Cheers!