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
-~----------~----~----~----~------~----~------~--~---