John Cremona wrote: > The problem is surely that the pieces f1a etc are just Python > lambda-functions, yet the integral() method is being called on each of > these in the line > return sum([funcs[i].integral(x,invs[i][0],invs[i][1]) for i in range(n)]) > so the problem arises since you are asking to integrate each funcs[i] > but they do not know how to integrate themselves. > > The solution would be to define your f1a (etc) not as lambda-functions > but as functions which Sage knows how to integrate, and then form the > piecewise function out of those "integrable" components. >
Something like this? sage: f1a(x)=(-x+1) sage: f1b(x)=x+1 sage: f2a(x)=(-(x-2)-1) sage: f2b(x)=(x-2)-1 sage: tri_wave = piecewise([ [(-1,0), f1a], [(0,1),f1b], \ [(1,2),f2a],[(2,3),f2b]]) sage: tri_wave.integral() 2 I noticed that the following gives an error in Sage 2.9: sage: f(x)=-x ------------------------------------------------------------ File "<ipython console>", line 1 <type 'exceptions.SyntaxError'>: can't assign to function call (<ipython console>, line 1) Is that a bug? It seems to be related to the negative sign, since the following works: sage: f(x)=(-x) sage: f(2) -2 Jason --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/ -~----------~----~----~----~------~----~------~--~---