[GiNaC-list] subscripted variables
Vladimir V. Kisil
V.Kisil at leeds.ac.uk
Mon Feb 6 09:08:52 CET 2023
Good day, Marko,
>>>>> On Mon, 6 Feb 2023 06:18:11 +0100, Marko Riedel <riedelmo at mathematik.uni-stuttgart.de> said:
MR> Post Scriptum. I managed to get the subscripts by subclassing
MR> the symbol class to attach an integer to it. Still I wonder if
MR> that is the best way to go about it.
It depends on your purpose, why do you need integer associated to
symbols? An alternative solution to keep a C++
std::map<GiNaC::ex, int>
which will be a dictionary converting symbols to respective
indices. Or consider a usage of GiNaC::indexed
ex a=symbol("a"), i=symbol("i");
ex ai=indexed(a, idx(i,4));
ex a1=ai.subs(i==1);
ex a2=ai.subs(i==2);
ex a3=ai.subs(i==3);
ex e = 2*pow(a1, 2) + 3*a1*a2 + 4*pow(a2, 3);
cout << e << endl;
// -> 4*(a.2)^3+3*a.1*a.2+2*(a.1)^2
cout << a2.op(1).op(0) << endl;
// -> 2
for (int j=1; j < 4; ++j)
cout << "Variable with index " << j << " has degree " << e.degree(ai.subs(i == j)) << endl;
/*
-> Variable with index 1 has degree 2
-> Variable with index 2 has degree 3
-> Variable with index 3 has degree 0
*/
The example also suggests a solution to your other question:
MR> Am 05.02.23 um 23:07 schrieb Marko Riedel:
>> better way. I am also looking for a means of extracting a set of
>> variables that are present in a polynomial, or the degree these
>> variables have.
Best wishes,
Vladimir
--
Vladimir V. Kisil http://www1.maths.leeds.ac.uk/~kisilv/
Book: Geometry of Mobius Maps https://doi.org/10.1142/p835
Soft: Geometry of cycles http://moebinv.sourceforge.net/
Jupyter notebooks: https://github.com/vvkisil?tab=repositories
More information about the GiNaC-list
mailing list