| 1 | initial version |
You can get the documentation about piecewise functions by typing Piecewise? In your particular case, you can do:
sage: f1(x) = 0
sage: f2(x) = exp(-x^2/(1-x^2))
sage: f = Piecewise([[(-2,-1),f1],[(-1,1),f2],[(1,2),f1]])
sage: f.plot()
| 2 | No.2 Revision |
You can get the documentation about piecewise functions by typing Piecewise? In your particular case, you can do:
sage: f1(x) = 0
sage: f2(x) = exp(-x^2/(1-x^2))
sage: f = Piecewise([[(-2,-1),f1],[(-1,1),f2],[(1,2),f1]])
sage: f.plot()
EDIT : i did not answer the second part of your question. Indeed, if you do:
sage: g(x) = x
sage: h(x) = x^2
sage: parametric_plot3d([f, g, h], (x, -2, 2))
Then you get the following error:
AttributeError: PiecewisePolynomial instance has no attribute '__float__'
This is because parametric_plot3d needs to evaluate the function f with the __float__ method that does not exists for piecewise functions. However, piecewise finctions are able to evaluate on floating points (with the __call__ method):
sage: f(0.1)
0.989949833766045
So, a possible wotrkaround is to redirect the __float__ method for piecewise functions to the __call__
method that currently works:
sage: f.__float__ = f.__call__
Now, the following works:
sage: parametric_plot3d([f, g, h], (x, -2, 2))
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.