Re: Import polynomial from file and define function
- To: mathgroup at smc.vnet.net
- Subject: [mg112147] Re: Import polynomial from file and define function
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Thu, 2 Sep 2010 02:31:00 -0400 (EDT)
Hi,
maybe it helps when you have a function which does all that stuff for
you by taking either a filename or a polynomial as string and the
symbols you want to assign:
SetAttributes[makePolynomial, HoldRest];
makePolynomial::invpar = "An error occured parsing the input \
string or in creating the polynomial.";
makePolynomial[polyOrFilename_String, f_Symbol,
vars__Symbol] := Block[{polystr, expr},
If[FileExistsQ[polyOrFilename], polystr =
Import[polyOrFilename, "Text"],
polystr = polyOrFilename]; If[SyntaxQ[polystr],
expr = ToExpression[polystr];
If[PolynomialQ[expr, {vars}],
Evaluate[f @@ (Pattern[#1, _] & ) /@ {vars}] :=
Evaluate[expr], Message[makePolynomial::invpar];
Return[$Failed]]]]
Now you can do something like
makePolynomial["x^5 + 5*x^4*y + 10*x^3*y^2 + 10*x^2*y^3 + 5*x*y^4 +
y^5", f, x, y]
f[x,3]
or even
makePolynomial["~/tmp/polynomial.txt", g, x, y]
Hope this helps.
Cheers
Patrick
On Wed, 2010-09-01 at 06:27 -0400, nick_twisp wrote:
> Hello Mathematica community,
>
> I am looking for a solution of the following problem:
>
> I have some quite long polynomial in q and x stored in a file and
> with
>
> test = Import["this_file_containing_the_polynomial"];
>
> I import the string and with
>
> poly = ToExpression[test];
>
> I convert it to an expression. If I usually would like to define a
> function (like in this case in x and q) from it, I would write
>
> F[q_, x_] := poly;
>
> Unfortunately this doesn't work at all. Strange enough if I just paste
> the huge expression behind F[q_, x_]:=, then it works and I have a
> function in q and x, which is evaluated when I put a concrete number
> e.g. for q (then becoming a polynomial in x).
>
> Does someone have an idea, how I could define a function from an
> expression?
>
> Thanks in advance,
>
>