On Tue, May 27, 2008 at 11:47 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
> On Tue, May 27, 2008 at 11:42 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
>> Hi,
>>
>> I have a disk in the (x,y) plane rotating with the angular velocity
>> omega. Now I'd like to play with differential geomtry on the disk, so
>> I start with the Euclidean metrics in my laboratory system and
>> transform it to the disk, I get this:
>>
>> In [1]: var("t omega")
>> Out[1]: (t, ω)
>>
>> In [2]: g_dd = Matrix([(-1+omega*(x**2+y**2),2*omega*y,-2*omega*x,0),
>> (2*omega*y, 1, 0, 0), (-2*omega*x, 0, 1, 0), (0, 0, 0, 1)])
>>
>> In [4]: g_dd
>> Out[4]:
>> ⎡       ⎛ 2    2⎞                                                   ⎤
>> ⎢-1 + ω*⎝x  + y ⎠            2*ω*y           -2*ω*x                0⎥
>> ⎢                                                                   ⎥
>> ⎢           2*ω*y                1                0                0⎥
>> ⎢                                                                   ⎥
>> ⎢          -2*ω*x                0                1                0⎥
>> ⎢                                                                   ⎥
>> ⎣               0                0                0                1⎦
>>
>>
>> The g_dd stands for g_\mu_\nu (i.e. both indices down). Now I want to
>> calculate the Christoffel symbols from this metrics. For this, I need
>> to calculate the g^\mu^\nu, which is just the matrix
>> inversion:
>>
>> In [3]: g_uu = g_dd.inv()
>>
>> However, try to display this:
>>
>> In [6]: g_uu
>> [many pages of output]
>>
>> So let's just try to look at [0,0]:
>>
>> In [9]: g_uu[0, 0]
>> [still too long]
>>
>> In [9]: print g_uu[0, 0]
>> -1/(1 - 4*omega**2*x**2/(-1 + omega*(x**2 + y**2)) -
>> 16*omega**4*x**2*y**2*(-1 + omega*(x**2 + y**2))**(-2)/(1 -
>> 4*omega**2*y**2/(-1 + omega*(x**2 + y**2))))*(2*omega*x/(-1 +
>> omega*(x**2 + y**2)) + 8*x*omega**3*y**2*(-1 + omega*(x**2 +
>> y**2))**(-2)/(1 - 4*omega**2*y**2/(-1 + omega*(x**2 +
>> y**2))))*(-2*omega*x/(-1 + omega*(x**2 + y**2)) -
>> 8*x*omega**3*y**2*(-1 + omega*(x**2 + y**2))**(-2)/(1 -
>> 4*omega**2*y**2/(-1 + omega*(x**2 + y**2)))) + 1/(-1 + omega*(x**2 +
>> y**2)) + 4*omega**2*y**2*(-1 + omega*(x**2 + y**2))**(-2)/(1 -
>> 4*omega**2*y**2/(-1 + omega*(x**2 + y**2)))
>>
>>
>> Any try to simplify this has failed (I mean simply that it didn't
>> simplify much). Is there any way to get this simplified, or is it just
>> so complex by nature? Maybe that's the reason to use polar
>> coordinates.
>
> Well, but try this:
>
> In [8]: one = g_uu * g_dd
>
> In [20]: print one[0, 0]
> -1/(-1 + omega*x**2 + omega*y**2) + omega*x**2/(-1 + omega*x**2 +
> omega*y**2) + omega*y**2/(-1 + omega*x**2 + omega*y**2) -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 4*omega**2*x**2*(-1 + omega*x**2 + omega*y**2)**(-2)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 4*omega**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))/(-1 + omega*x**2 + omega*y**2) + 4*omega**3*x**4*(-1 +
> omega*x**2 + omega*y**2)**(-2)/(1 - 4*omega**2*x**2/(-1 + omega*x**2 +
> omega*y**2) - 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 +
> omega*x**2 + omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) +
> 4*omega**3*x**2*y**2*(-1 + omega*x**2 + omega*y**2)**(-2)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 64*omega**6*x**2*y**4*(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))**(-2)*(-1 + omega*x**2 + omega*y**2)**(-4)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 64*omega**6*x**2*y**4*(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))**(-2)*(-1 + omega*x**2 + omega*y**2)**(-3)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 32*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-3)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 32*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) +
> 32*omega**5*x**2*y**4/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-3)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) +
> 32*omega**5*x**4*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-3)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) +
> 64*omega**7*x**2*y**6*(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))**(-2)*(-1 + omega*x**2 + omega*y**2)**(-4)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) +
> 64*omega**7*x**4*y**4*(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))**(-2)*(-1 + omega*x**2 + omega*y**2)**(-4)/(1 -
> 4*omega**2*x**2/(-1 + omega*x**2 + omega*y**2) -
> 16*omega**4*x**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)) -
> 4*omega**2*y**2/(1 - 4*omega**2*y**2/(-1 + omega*x**2 +
> omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2) + 4*omega**3*y**4/(1
> - 4*omega**2*y**2/(-1 + omega*x**2 + omega*y**2))*(-1 + omega*x**2 +
> omega*y**2)**(-2) + 4*omega**3*x**2*y**2/(1 - 4*omega**2*y**2/(-1 +
> omega*x**2 + omega*y**2))*(-1 + omega*x**2 + omega*y**2)**(-2)
>
>
> this should simplify to a unit matrix, so one[0,0] should be 1, but it isn't.

Well, but by substituting different integers for omega, x, and y, one
always gets 1, so the result is correct:

In [1]: var("t omega")
Out[1]: (t, ω)

In [2]: g_dd = Matrix([(-1+omega*(x**2+y**2),2*omega*y,-2*omega*x,0),
(2*omega*y, 1, 0, 0), (-2*omega*x, 0, 1, 0), (0, 0, 0, 1)])

In [3]: g_uu = g_dd.inv()

In [4]: one = g_uu * g_dd

In [5]: one[0,0].subs({omega: 5, x: 1, y:3})
Out[5]: 1

In [6]: one[0,0].subs({omega: 6, x: 1, y:3})
Out[6]: 1

In [7]: one[0,0].subs({omega: 1, x: 2, y:3})
Out[7]: 1

In [9]: one[0,0].subs({omega: 1, x: 1, y:2})
Out[9]: 1



The question now is how to simplify it. E.g. if I do this:

In [7]: e = one[0,0].subs({omega: 1, x: 0})

In [8]: e
Out[8]:
            2                 2                        2
  1        y               4*y                      4*y                     4*
────── - ────── - ────────────────────── + ───────────────────── + ───────────
     2        2           2 ⎛        2 ⎞            ⎛        2 ⎞           2 ⎛
1 - y    1 - y    ⎛     2⎞  ⎜     4*y  ⎟   ⎛     2⎞ ⎜     4*y  ⎟   ⎛     2⎞  ⎜
                  ⎝1 - y ⎠ *⎜1 + ──────⎟   ⎝1 - y ⎠*⎜1 + ──────⎟   ⎝1 - y ⎠ *⎜
                            ⎜         2⎟            ⎜         2⎟             ⎜
                            ⎝    1 - y ⎠            ⎝    1 - y ⎠             ⎝

 4
y
───────────
        2 ⎞
     4*y  ⎟
1 + ──────⎟
         2⎟
    1 - y ⎠

In [9]: simplify(e)
Out[9]: 1

it works. And I wouldn't like to do this by hand! :) But the full
expression takes too much time to simplify.

Ondrej

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to