공변 벡터, 반변 벡터 생성기를 만들려고 했다

공변 벡터와 반변 벡터 계산을 편하게 하고 싶



일반 상대성 이론을 공부할 때 가장 큰 난관이 "공변 벡터와 반변 벡터의 이미지가 붙지 않는다"는 것이라고 생각합니다.
공변 벡터와 반변 벡터를 곱하면 깨끗이 스칼라가 되는 부분이 제일 재미 있다고 개인적으로는 생각합니다만, 그 앞에서 이미지가 붙지 않는다고 좌절할 것 같았습니다.
그런 때, "자동으로 크리스토펠이나 공변이나 반변을 계산해 주는 사이트가 있으면 좋겠다"고 생각했습니다.
생각했기 때문에 만들고 싶어지고 만들었습니다.

반변 벡터와 공변 벡터 계산기

내 컴퓨터에서 본 경우 vs Firebase에 호스팅하는 경우



자신의 컴퓨터에서 보면, 그래! 확실히! 할 수 있습니다 1 차 ~ 100 차원까지 계산할 수 있습니다!

 
그러나 Firebase에 호스팅하면 LaTex 디스플레이가됩니다.


왜 이렇게 되었는가



웹에 수식을 표시하려면 "MathJax"라는 javascript 기법을 사용하는 것이 쉽고,
MathJax를 사용하면 Latex 형식으로 붙여 넣으면 수식이 표시됩니다.
하지만 Firebase는 MathJax와 궁합이 나쁜 것 같고, 어쩔 수 없는 것을 치지 않으면 힘든 것 같습니다.

내부 메커니즘



이번 작품은 전혀 좋지 않지만,
「LaTex 형식에서는 쓸어내릴 수 있어」이므로, 개인적으로는 만족합니다(word라든지에 붙여 변환해 주시면 사용할 수 있을 것입니다)

그 자리에서 계산식을 풀고 있는 것은 아니고, python으로 n=1~100까지 계산시키고 나서 그 결과를 미리 html에 숨기고 있어,
vue.js에서 이벤트 처리 (수치가 입력되면 show되는 것을 변경)하고 있습니다.

결과와 고찰



· 웹에 수식을 표시하는 기술에 기술적 한계가 현재 존재하고, 이것은 누군가가 해결해도 좋은 문제처럼 느꼈다
⇨ 그 때문에, 이번은 web 브라우저상에서의 계산을 포기하고, 미리 python으로 계산한 것을 표시하기로 했다.

・크리스토펠을 그대로 계산하거나 하는 수법은, python나 C++에서는 존재하지만, web상에서 누구라도 계산할 수 있도록(듯이)는 현상되고 있지 않다. 이곳은 누군가가 해결해도 좋은 문제에 느꼈다.
⇨⇨대학생의 리포트가 편해지고, 상대성 이론으로 고통받는 학생이 줄어드는 것은?

· LaTex에서 "\"가 다양하지만 파이썬은이 기호가 이스케이프에 사용되기 때문에 상당히 프로그램 자체에 고전했다.
⇨python에서는, 「\」에 의해, 「\」1개분을 표시한다(이스케이프로 이스케이프 한다)라고 하는 문법인 것을 배웠다. 이것을 깨닫기까지는 또 길었다.

미래



Firebase가 좋지 않다면 Heroku와 AWS는 시도하고 싶습니다.
가능하면 공변 벡터, 반변 벡터의 경험을 살려 리치 텐서, 크리스토펠도 계산하고 싶은 곳! (이것도 브라우저상 계산이 아니고, 결과를 미리 출력한 것이 타당하게 생각합니다.)

HTML에서 LaTex 형식으로 출력하는 파이썬 소스 코드


for n in range(1,101):
    First_1 = "          <jigen"
    First_2 = " v-show="
    First_3 = "\"jigen == "
    First_4 = "\">"
    First = First_1 + str(n) + First_2+ First_3 + str(n) + First_4
    print(First)

    Second_1 = "            ~~~~~~~~~~~~~~"
    print(Second_1)

    Third_1 = "            <br>共変ベクトル \[q_i^\prime=\]"
    print(Third_1)
    Forth_1 = "            <p class="+ "\"sample1\"" + ">"
    print(Forth_1)
    Fifth_1 = "              <!-- 共変ベクトル -->"
    print(Fifth_1)

    #共変
    res_start = "\["
    res1 = "\\"+ " " + "\\"+ " " +"\\"+ "frac{\partial x_"
    res2 = "}{\partial x_i\ }\ q_"
    res_end = "\]"

    res_ans1 = "" 

    for s in reversed(range(1,n+1)):
      res = res1 + str(s) + res2 + str(s)
      #print(res)
      res_ans1 = res + "+" + " " + res_ans1
      #print(res_ans1)

    res_ans1 = res_ans1.rstrip(" +")
    res_ans2 = "              " +res_start + res_ans1 + res_end
    print(res_ans2)

    Seventh_1 = "            </p>"
    print(Seventh_1)

    Eighth_1 = "            ~~~~~~~~~~~~~~"
    print(Eighth_1)

    Ninth_1 = "            <br>反変ベクトル \[q^{\prime i}=\]"
    print(Ninth_1)
    Tenth_1 = "            <p class="+ "\"sample1\"" + ">"
    print(Tenth_1)
    Eleventh_1 = "              <!-- 反変ベクトル -->"
    print(Eleventh_1)




    #反変
    res_start = "\["
    res1 = "\\"+ " " + "\\" + "frac{\partial x^{\prime i}}{\partial x^"
    res2 = "\ }\ q^"
    res_end = "\]"

    res_ans1 = "" 

    for s in reversed(range(1,n+1)):
      res = res1 + str(s) + res2 + str(s)
      #print(res)
      res_ans1 = res + "+" + " " + res_ans1
      #print(res_ans1)

    res_ans1 = res_ans1.rstrip(" +")
    res_ans2 = "              " + res_start + res_ans1 + res_end
    print(res_ans2)

    Thirteenth_1 = "            </p>"
    print(Thirteenth_1)

    Forteenth_1 = "          </jigen"+str(n)+">"
    print(Forteenth_1)

좋은 웹페이지 즐겨찾기