The general way to invert a function is solve, e.g.
ex: x^2 + x$
solve(ex = y, x);
=> [x = -(sqrt(4*y+1)+1)/2,x = (sqrt(4*y+1)-1)/2]
However, for more than two points, linearinterpol returns a result involving
charfun2, which Maxima's solve function doesn't know how to deal with. In
general, Maxima is rather weak in dealing with piecewise-defined functions.
Not sure what your intention is with 'simplify' and 'funcsimplify' -- as far
as I know Maxima doesn't have functions by those names. Maxima performs
basic simplifications without any special command, e.g. 2*x/4 => x/2. Other
useful transformations, like (x-1)/(x^2-1) => 1/(x+1) (ratsimp) or 1/(x^2-1)
=> 1/2*(1/(x-1)-1/(x+1)) (1/2*multthru( partfrac(expr,x) / (1/2)) require
more explicit commands.
-s
On Thu, Feb 17, 2011 at 12:45, Stefan Veeser <stefanveeser at gmx.net> wrote:
> Hi,
>
> I defined a function giving a set of points with linearinterpol then I
> added another function, which I defined with a simple formula. The resulting
> function is still strictly rising in value, so mathematically it can be
> inverted, so I wanted to invert the function, but I could not find an
> operator for that anywere, I tried
>
> simplify([y=f(x)],x), which produced some expression, but not what I needed
> and funcsimplify([y=f(x(y)),x(y)), which failed (division by zero).
>
> Is there a standard way to do this ? it seems something pretty basic.
>
> for any help I would be very grateful,
>
> Stefan
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>