Martin Rubey wrote: > it occurred to me (perhaps it's obvious) that we could add provisos in a > rather > straightforward way to FriCAS, namely through an Operator "Cond". Perhaps > this > is not ideal performancewise, but I think it could be a first step into a good > direction. > Yes it is really petty for single computation.
try integrate (1/(x^2+a), x) in Fricas ; there are 2 solutions but the display doesn't explain what is what... I'll also use it in limit (exp(a*x), x), in solve (a*x=a, x) and sin(%pi/2+n*%pi) = (-1)^n > Cond would be a list with every second element being an expression, every > other > the condition when it holds. > > Of course, the tricky part is to design a language expressive enough to hold > many conditions, and easy enough to make simplification possible. I guess we > want to allow things like > > expr <> 0 > > expr in Integer and expr > 0 > > imag expr > 0 > Complex variables seem right, but it's easiest to cut a real interval. x in [0, 5] and x in [2, 7] give x in [0, 2] and so. > I do not know whether we should always pretend that variables are complex, but > my feeling is yes. > > I do not know whether it's better to insist that the branches are disjoint or > not. > The glue is easier over ]minusInfinity,0]] and [[0,plusInfinity[ than over ]minusInfinity,0[[ and [0,plusInfinity[ for [-1,0]. > Eg., sqrt(z^2) could give > > Cond [z, re z >= 0, -z, re z < 0] > > Or, asin sin z could give > > Cond [z, -%pi/2 <= re z <= %pi/2, asin sin z, true] > > or perhaps > > Cond [z - 2*k*%pi, k in Integer and (4*k-1)*%pi/2 <= re z <= > (4*k+1)*%pi/2, > -z + (2*k+1)*%pi, k in Integer and > (4*k+1)*%pi/2 <= re z <= (4*k+2)*%pi/2] > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/fricas-devel?hl=en -~----------~----~----~----~------~----~------~--~---
