Advertisement
Guest User

Christopher_Symbols

a guest
Mar 26th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. from sympy import *
  2. import numpy as np
  3. import math
  4.  
  5. def det(l):
  6.   return (l[0][0]*l[1][1]-l[0][1]*l[1][0])
  7.  
  8. def solve(a,b):
  9.     if det(a) == 0:
  10.         print("\nSistema sem solução.\n\n")
  11.     else:
  12.         return [det([[b[0],a[0][1]],[b[1],a[1][1]]])/det(a),det([[a[0][0],b[0]],[a[1][0],b[1]]])/det(a)]
  13.  
  14. x, y, z, t, r = symbols('x y z t r', real=True)
  15.  
  16. def first_form_para(func):
  17.     Fx=[]
  18.     Fy=[]
  19.     for k in range(3):
  20.         Fx.append(diff(func[k],x))
  21.         Fy.append(diff(func[k],y))
  22.         E = simplify(np.dot(Fx,Fx))
  23.         F = simplify(np.dot(Fx,Fy))
  24.         G = simplify(np.dot(Fy,Fy))
  25.     return (E,F,G)
  26.  
  27. def christopher_symbols_para(func):
  28.     E = first_form_para(func)[0]
  29.     F = first_form_para(func)[1]
  30.     G = first_form_para(func)[2]
  31.     M = [[E,F],[F,G]]
  32.     i = [[simplify(diff(E,x)/2),simplify(diff(F,x)-diff(E,y)/2)],
  33.         [simplify(diff(E,y)/2),simplify(diff(G,x)/2)],
  34.         [simplify(diff(F,y)-diff(G,x)/2),simplify(diff(G,y)/2)]]
  35.     cs = []
  36.     for k in range(3):
  37.         cs.append(simplify(solve(M,i[k])))
  38.     return cs
  39.  
  40. def curvature_para(func):
  41.     cs = christopher_symbols_para(func)
  42.     K = simplify((diff(cs[1][1],x)-diff(cs[0][1],y)+cs[1][0]*cs[0][1]+cs[1][1]**2-cs[0][1]*cs[2][1]-cs[0][0]*cs[1][1])/-E)
  43.     return K
  44.  
  45. def first_form(func):
  46.     E = simplify(np.dot(diff(func,x),diff(func,x)))
  47.     F = simplify(np.dot(diff(func,x),diff(func,y)))
  48.     G = simplify(np.dot(diff(func,y),diff(func,y)))
  49.     return (E, F, G)
  50.  
  51.  
  52.  
  53. f = (sin(x)*cos(y),sin(x)*sin(y),cos(x)) # Esfera
  54. print(first_form_para(f))
  55. # print(christopher_symbols_para(f))
  56.  
  57. g = (y*cos(x),y*sin(x),t*x) # Helicóide
  58. print(first_form_para(g))
  59. # print(christopher_symbols_para(g))
  60.  
  61. h = ((t+r*cos(x))*cos(y),(t+r*cos(x))*sin(y),r*sin(x)) #
  62. print(first_form_para(h))
  63. # print(christopher_symbols_para(h))
  64.  
  65. # i = ((2-y*sin(x/2))*sin(x), (2-y*sin(x/2)*cos(x)), cos(x/2)) # Möbius
  66. # print(first_form_para(i))
  67. # print(christopher_symbols_para(i))
  68.  
  69. j = (x,y,x*y)
  70. print(first_form_para(j))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement