|   | 1 |  initial version  | 
Polynomials over the symbolic ring can help here.
There is also a way to get a large sequence of indexed variables.
Below we use monomials a_i*x^i rather than a_i*x^j
with i + j = degree(p).
Define a polynomial ring in x over the symbolic ring:
sage: R.<x> = SR[]
Define a bunch of indexed symbolic variables:
sage: a = var('a', 100)
Define a polynomial of degree 7, look at it,
check the coefficient of x^5 and of x^0:
sage: p = sum(a[k]*x^k for k in range(8))
sage: p
a_7*x^7 + a_6*x^6 + a_5*x^5 + a_4*x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0
sage: p[5]
a_5
sage: p[0]
a_0
Define two more symbolic variables:
sage: x0 = SR.var('x0')
sage: z = SR.var('z')
Define the equations specifying values of p and
its derivatives at 0, 1 and x0:
sage: eq = [p(0) == 0,
....:       p.diff(1)(0) == 0,
....:       p.diff(2)(0) == 0,
....:       p(1) == 1 + z,
....:       p.diff(1)(1) == 0,
....:       p.diff(2)(1) == 0,
....:       p(x0) == 1,
....:       p.diff(1)(x0) == 1,
....:      ]
Solve the equation, getting the answers as a list of dictionaries:
sage: s = solve(eq, a[:8], solution_dict=True)
sage: s
[{a_0: 0,
  a_1: 0,
  a_2: 0,
  a_3: (10*x0^7 - 28*x0^6 + 21*x0^5 + x0^2 + (10*x0^7 - 28*x0^6 + 21*x0^5)*z
        - 8*x0 + 4)/(x0^7 - 4*x0^6 + 6*x0^5 - 4*x0^4 + x0^3),
  a_4: -(15*x0^8 - 24*x0^7 - 21*x0^6 + 42*x0^5 + 3*x0^3 - 23*x0^2
         + 3*(5*x0^8 - 8*x0^7 - 7*x0^6 + 14*x0^5)*z + 5*x0
         + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_5: 3*(2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4 + x0^3 - 7*x0^2
          + (2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4)*z - 3*x0
          + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_6: -(12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4 + x0^3 - 5*x0^2
         + (12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4)*z - 17*x0
         + 9)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_7: (6*x0^6 - 18*x0^5 + 15*x0^4 + x0^2
        + 3*(2*x0^6 - 6*x0^5 + 5*x0^4)*z - 7*x0
        + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4)}]
|   | 2 |  No.2 Revision  | 
Polynomials over the symbolic ring can help here.
There is also a way to get a large sequence of indexed variables.
Below we use monomials a_i*x^i rather than a_i*x^j
with i + j = degree(p).
Define a polynomial ring in x over the symbolic ring:
sage: R.<x> = SR[]
Define a bunch of indexed symbolic variables:
sage: a = var('a', SR.var('a', 100)
Define a polynomial of degree 7, look at it,
check the coefficient of x^5 and of x^0:
sage: p = sum(a[k]*x^k for k in range(8))
sage: p
a_7*x^7 + a_6*x^6 + a_5*x^5 + a_4*x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0
sage: p[5]
a_5
sage: p[0]
a_0
Define two more symbolic variables:
sage: x0 = SR.var('x0')
sage: z = SR.var('z')
Define the equations specifying values of p and
its derivatives at 0, 1 and x0:
sage: eq = [p(0) == 0,
....:       p.diff(1)(0) == 0,
....:       p.diff(2)(0) == 0,
....:       p(1) == 1 + z,
....:       p.diff(1)(1) == 0,
....:       p.diff(2)(1) == 0,
....:       p(x0) == 1,
....:       p.diff(1)(x0) == 1,
....:      ]
Solve the equation, getting the answers as a list of dictionaries:
sage: s = solve(eq, a[:8], solution_dict=True)
sage: s
[{a_0: 0,
  a_1: 0,
  a_2: 0,
  a_3: (10*x0^7 - 28*x0^6 + 21*x0^5 + x0^2 + (10*x0^7 - 28*x0^6 + 21*x0^5)*z
        - 8*x0 + 4)/(x0^7 - 4*x0^6 + 6*x0^5 - 4*x0^4 + x0^3),
  a_4: -(15*x0^8 - 24*x0^7 - 21*x0^6 + 42*x0^5 + 3*x0^3 - 23*x0^2
         + 3*(5*x0^8 - 8*x0^7 - 7*x0^6 + 14*x0^5)*z + 5*x0
         + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_5: 3*(2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4 + x0^3 - 7*x0^2
          + (2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4)*z - 3*x0
          + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_6: -(12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4 + x0^3 - 5*x0^2
         + (12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4)*z - 17*x0
         + 9)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_7: (6*x0^6 - 18*x0^5 + 15*x0^4 + x0^2
        + 3*(2*x0^6 - 6*x0^5 + 5*x0^4)*z - 7*x0
        + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4)}]
|   | 3 |  No.3 Revision  | 
Polynomials over the symbolic ring can help here.
There is also a way to get a large sequence of indexed variables.
Below we use monomials a_i*x^i rather than a_i*x^j
with i + j = degree(p).
Define a polynomial ring in x over the symbolic ring:
sage: R.<x> = SR[]
Define a bunch of indexed symbolic variables:
sage: a = SR.var('a', 100)
Define a polynomial of degree 7, look at it,
check the coefficient of x^5 and of x^0:
sage: p = sum(a[k]*x^k for k in range(8))
sage: p
a_7*x^7 + a_6*x^6 + a_5*x^5 + a_4*x^4 + a_3*x^3 + a_2*x^2 + a_1*x + a_0
sage: p[5]
a_5
sage: p[0]
a_0
Another way to create the same polynomial:
sage: p = R(a[:8])
Define two more symbolic variables:
sage: x0 = SR.var('x0')
sage: z = SR.var('z')
Define the equations specifying values of p and
its derivatives at 0, 1 and x0:
sage: eq = [p(0) == 0,
....:       p.diff(1)(0) == 0,
....:       p.diff(2)(0) == 0,
....:       p(1) == 1 + z,
....:       p.diff(1)(1) == 0,
....:       p.diff(2)(1) == 0,
....:       p(x0) == 1,
....:       p.diff(1)(x0) == 1,
....:      ]
Solve the equation, getting the answers as a list of dictionaries:
sage: s = solve(eq, a[:8], solution_dict=True)
sage: s
[{a_0: 0,
  a_1: 0,
  a_2: 0,
  a_3: (10*x0^7 - 28*x0^6 + 21*x0^5 + x0^2 + (10*x0^7 - 28*x0^6 + 21*x0^5)*z
        - 8*x0 + 4)/(x0^7 - 4*x0^6 + 6*x0^5 - 4*x0^4 + x0^3),
  a_4: -(15*x0^8 - 24*x0^7 - 21*x0^6 + 42*x0^5 + 3*x0^3 - 23*x0^2
         + 3*(5*x0^8 - 8*x0^7 - 7*x0^6 + 14*x0^5)*z + 5*x0
         + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_5: 3*(2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4 + x0^3 - 7*x0^2
          + (2*x0^8 + 4*x0^7 - 21*x0^6 + 14*x0^5 + 7*x0^4)*z - 3*x0
          + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_6: -(12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4 + x0^3 - 5*x0^2
         + (12*x0^7 - 21*x0^6 - 14*x0^5 + 35*x0^4)*z - 17*x0
         + 9)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4),
  a_7: (6*x0^6 - 18*x0^5 + 15*x0^4 + x0^2
        + 3*(2*x0^6 - 6*x0^5 + 5*x0^4)*z - 7*x0
        + 3)/(x0^8 - 4*x0^7 + 6*x0^6 - 4*x0^5 + x0^4)}]
 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.
 
                
                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.