|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
# See:
# (find-es "python" "execfile")
# (find-angg ".pythonrc.py")
# (find-angg ".pythonrc.py" "ee_dofile")
# Usage:
# execfile(os.getenv("HOME")+"/.sympyrc.py") # (find-angg ".sympyrc.py")
# <<.GA-vectors>> (to "GA-vectors")
# <<.GA-intersections-R3>> (to "GA-intersections-R3")
# <<.C2-trig-ids>> (to "C2-trig-ids")
# <<.exactify>> (to "exactify")
M, R = Matrix, Rational
# <<GA-vectors>> (to ".GA-vectors")
# Analytic Geometry:
# kprod2(k, v), kprod3(k, v)
# sprod2(u, v), sprod3(u, v)
# norm2(u), norm3(u)
# norm22(u), norm32(u)
# proj2(u, v), proj3(u, v)
# vprod(u, v)
#
V2 = lambda x,y: M([x,y])
V3 = lambda x,y,z: M([x,y,z])
V = V2
#
kprod2 = lambda k,u: (k*u[0], k*u[1])
kprod3 = lambda k,u: (k*u[0], k*u[1], k*u[2])
sprod2 = lambda u,v: u[0]*v[0] + u[1]*v[1]
sprod3 = lambda u,v: u[0]*v[0] + u[1]*v[1] + u[2]*v[2]
norm22 = lambda u: sprod2(u, u)
norm32 = lambda u: sprod3(u, u)
norm2 = lambda u: sqrt(sprod2(u, u))
norm3 = lambda u: sqrt(sprod3(u, u))
proj2 = lambda u,v: kprod2(sprod2(u, v)/sprod2(u, u), u)
proj3 = lambda u,v: kprod3(sprod3(u, v)/sprod3(u, u), u)
vprod_ = lambda u1,u2,u3,v1,v2,v3: (u2*v3-u3*v2, u3*v1-u1*v3, u1*v2-u2*v1)
vprod = lambda u,v: M(vprod_(u[0], u[1], u[2], v[0], v[1], v[2]))
#
drPdenom = lambda m: sqrt(1 + m**2)
# <<GA-intersections-R3>> (to ".GA-intersections-R3")
# Intersections in R^3
# Experimental. See: (find-es "ipython" "2017.1-GA-VR")
# Example:
# plane = lambda P: sprod3(P, V3(2,2,1)) + 4
# line = lambda t: V3(1,2,3) + t*V3(2,1,0)
plane_line_to_t = lambda plane,line: solve(plane(line(t)), t)[0]
plane_line_to_P = lambda plane,line: line(solve(plane(line(t)), t)[0])
inter_plane_line = lambda plane,line: line(solve(plane(line(t)), t)[0])
dist_plane_P = lambda nn,A,B: sprod3(nn,(B-A)) / norm3(nn)
plane_from_nn_A = lambda nn,A: lambda P: sprod3((P-A), nn)
line_from_A_vv = lambda A,vv: lambda t: A+t*vv
#
def closest_plane_P(nn,A,P):
plane = plane_from_nn_A(nn, A)
line = line_from_A_V(P, nn)
return plane_line_to_P(plane, line)
#
# 2018jan19:
Proj2 = lambda u,v: (sprod2(u, v)/sprod2(u, u)) * u
Proj3 = lambda u,v: (sprod3(u, v)/sprod3(u, u)) * u
closest_line_P2 = lambda line,P: line(0) + Proj2(line(1)-line(0), P-line(0))
closest_line_P3 = lambda line,P: line(0) + Proj3(line(1)-line(0), P-line(0))
# Calculus 2:
# (find-es "ipython" "2016.1-C2-P1")
def differenc(body, xab):
return body.subs(xab[0], xab[2]) - body.subs(xab[0], xab[1])
def differen2(body, xab):
return (body.subs(xab[0], xab[2]), body.subs(xab[0], xab[1]))
# <<C2-trig-ids>> (to ".C2-trig-ids")
# (find-es "sympy" "trigonometric-identities")
# Trigonometric identities using Fourier to obtain the coefficients
#
th,E = symbols("th,E")
EE = lambda n: E**n
Cos = lambda n: (EE(n) + EE(-n)) / 2
Sin = lambda n: (EE(n) - EE(-n)) / (2*I)
expify = lambda f: f.expand().subs(E, exp(I*th))
int02pi = lambda f: integrate(f, (th, 0, 2*pi)) / (2 * pi)
getcoef = lambda f,n: int02pi(expify(f * EE(-n)))
getcoefcos = lambda f,n: (getcoef(f, n) + getcoef(f, -n))
getcoefsin = lambda f,n: (getcoef(f, n) - getcoef(f, -n)) * I
getcos = lambda f,n: getcoefcos(f, n) * cos(n*th)
getsin = lambda f,n: getcoefsin(f, n) * sin(n*th)
getconst = lambda f: getcoef(f, 0)
# <<exactify>> (to ".exactify")
# (find-es "sympy" "exactify")
exactness = lambda M,N: M.diff(y) - N.diff(x)
exactify_x = lambda M,N: (M.diff(y) - N.diff(x)) / N
exactify_y = lambda M,N: (N.diff(x) - M.diff(y)) / M
exactify_xi = lambda M,N: integrate(exactify_x(M, N), x)
exactify_yi = lambda M,N: integrate(exactify_y(M, N), y)
exactify_xie = lambda M,N: exp(exactify_xi(M, N))
exactify_yie = lambda M,N: exp(exactify_yi(M, N))
# Not yet:
# (find-es "ipython" "trig-subst")
# Local Variables:
# ee-anchor-format: "<<%s>>"
# End: