[GiNaC-list] Expanding Polynomials

Patrick Schulz pschulz at posteo.de
Thu Sep 6 08:59:13 CEST 2018


And sorry for messing up the subject!


On 06.09.2018 08:47, Patrick Schulz wrote:
> Hi all!
>
> I'm working with polynomials in one variable, where i want to compare 
> coefficients and remove some (simplification). For this, i need to 
> iterate over the individual coefficients, but in order to compare 
> them, i need them to be in a standard form. Since only terms with 
> products and sums are involved, i expand the expressions to remove any 
> nested expressions, e.g. R1 * (C1 + C2) -> R1 * C1 + R1 * C2.
> This works well, but sometime terms of nth power also exist, which are 
> not expanded:
>
> GiNaC::symbol R1("R1");
> GiNaC::symbol R2("R2");
> GiNaC::symbol C1("C1");
> GiNaC::symbol C2("C2");
> GiNaC::ex e = (R1 + R2) * (C1 + C2 * (R1 * C1));
> std::cout << e << '\n' << e.expand() << '\n';
>
> Here we get a term R1^2 * C1 * C2, which does not comply with my 
> "standard form".
>
> In the end, ideally i would like to have only a sum of products, no 
> deeper nesting:
>
> R1 * C1 + R1 * R1 * C1 * C2 + R2 * C1 + R1 * R2 * C1 * C2
>
> Is there a way to do this?
>
> Maybe some information what i'm trying to acchieve:
> I solve spice netlists and extract transfer functions in s-space. For 
> the simplification (the removal of individual terms) i want to look at 
> the coefficients of the numerator and the denominator polynoms. This 
> is easy, since i use ex::coeff(). So now i have expressions for each 
> power
> of s. Then i want to store the individual elements in a vector, which 
> makes up the individual products. These are again stored in another 
> vector making up the sum of the polynoms. This works, kinda, but i 
> have to parse the ginac expression, which does not always behave
> in a way i can foresee. Also i have a strong feeling that there is a 
> better way to do this, given that ginac has already many functions 
> dealing with polynoms. I'm happy to get some pointers on this topic :)
>
> Thank you for your help!
>
> Greetings,
> Patrick
> _______________________________________________
> GiNaC-list mailing list
> GiNaC-list at ginac.de
> https://www.cebix.net/mailman/listinfo/ginac-list



More information about the GiNaC-list mailing list