Corrugated Shells geometry

Init symbols for sympy


In [1]:
from sympy import *
from geom_util import *
from sympy.vector import CoordSys3D
import matplotlib.pyplot as plt
import sys
sys.path.append("../")

%matplotlib inline

%reload_ext autoreload
%autoreload 2
%aimport geom_util

In [2]:
# Any tweaks that normally go in .matplotlibrc, etc., should explicitly go here
%config InlineBackend.figure_format='retina'
plt.rcParams['figure.figsize'] = (12, 12)

    
plt.rc('text', usetex=True)
    
plt.rc('font', family='serif')
# SMALL_SIZE = 42
# MEDIUM_SIZE = 42
# BIGGER_SIZE = 42
    
# plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
# plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title
# plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
# plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
# plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
# plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize
# plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title

init_printing()

In [3]:
N = CoordSys3D('N')
alpha1, alpha2, alpha3 = symbols("alpha_1 alpha_2 alpha_3", real = True, positive=True)

Cylindrical coordinates


In [4]:
R, L, ga, gv = symbols("R L g_a g_v", real = True, positive=True)

In [5]:
a1 = pi / 2 + (L / 2 - alpha1)/R

a2 = 2 * pi * alpha1 / L

x1 = (R + ga * cos(gv * a2)) * cos(a1)
x2 = alpha2
x3 = (R + ga * cos(gv * a2)) * sin(a1)

r = x1*N.i + x2*N.j + x3*N.k

r1=r.diff(alpha1)
r1


Out[5]:
$$(\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )})\mathbf{\hat{i}_{N}} + (\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} - \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )})\mathbf{\hat{k}_{N}}$$

In [6]:
A = r1.dot(r1)
trigsimp(A)


Out[6]:
$$1 - \frac{4 g_{a}}{R} \sin^{2}{\left (\frac{\pi \alpha_{1}}{L} g_{v} \right )} + \frac{2 g_{a}}{R} + \frac{4 g_{a}^{2}}{R^{2}} \sin^{4}{\left (\frac{\pi \alpha_{1}}{L} g_{v} \right )} - \frac{4 g_{a}^{2}}{R^{2}} \sin^{2}{\left (\frac{\pi \alpha_{1}}{L} g_{v} \right )} + \frac{g_{a}^{2}}{R^{2}} - \frac{16 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{4}{\left (\frac{\pi \alpha_{1}}{L} g_{v} \right )} + \frac{16 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{\pi \alpha_{1}}{L} g_{v} \right )}$$

In [7]:
z = 2*ga*gv*pi/L*sin(gv*a2)
w = 1 + ga/R*cos(gv*a2)

dr1x=w*sin(a1) - z*cos(a1)
dr1z=-w*cos(a1) - z*sin(a1)

# r1 = dr1x*N.i + dr1z*N.k
# r2 =N.j

mag=sqrt((w)**2+(z)**2)

nx = -dr1z/mag
nz = dr1x/mag

n = nx*N.i+nz*N.k

dnx=nx.diff(alpha1)
dnz=nz.diff(alpha1)

dn= dnx*N.i+dnz*N.k

n


Out[7]:
$$(\frac{- \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )}}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}})\mathbf{\hat{i}_{N}} + (\frac{\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}})\mathbf{\hat{k}_{N}}$$

In [8]:
Ralpha = r+alpha3*n

R1=r1+alpha3*dn
R2=Ralpha.diff(alpha2)
R3=n

Ralpha


Out[8]:
$$(\frac{\alpha_{3} \left(- \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )}\right)}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}} - \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )})\mathbf{\hat{i}_{N}} + (\alpha_{2})\mathbf{\hat{j}_{N}} + (\frac{\alpha_{3} \left(\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}} + \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )})\mathbf{\hat{k}_{N}}$$

In [9]:
R1


Out[9]:
$$(\alpha_{3} \left(\frac{1}{\left(\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{\frac{3}{2}}} \left(- \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )}\right) \left(\frac{2 \pi g_{a} g_{v}}{L R} \left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} - \frac{8 \pi^{3}}{L^{3}} g_{a}^{2} g_{v}^{3} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) + \frac{1}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}} \left(\frac{1}{R^{2}} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{4 \pi g_{a} g_{v}}{L R} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} + \frac{4 g_{a}}{L^{2}} \pi^{2} g_{v}^{2} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)\right) + \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )})\mathbf{\hat{i}_{N}} + (\alpha_{3} \left(\frac{1}{\left(\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{\frac{3}{2}}} \left(\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \left(\frac{2 \pi g_{a} g_{v}}{L R} \left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} - \frac{8 \pi^{3}}{L^{3}} g_{a}^{2} g_{v}^{3} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) + \frac{1}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}} \left(\frac{1}{R^{2}} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} - \frac{4 \pi g_{a} g_{v}}{L R} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{4 g_{a}}{L^{2}} \pi^{2} g_{v}^{2} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)\right) + \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} - \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )})\mathbf{\hat{k}_{N}}$$

In [10]:
R2


Out[10]:
$$\mathbf{\hat{j}_{N}}$$

In [11]:
R3


Out[11]:
$$(\frac{- \frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )} \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )}}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}})\mathbf{\hat{i}_{N}} + (\frac{\frac{1}{R} \left(R + g_{a} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right) \cos{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} + \frac{2 \pi}{L} g_{a} g_{v} \sin{\left (\frac{1}{R} \left(\frac{L}{2} - \alpha_{1}\right) \right )} \sin{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}{\sqrt{\left(1 + \frac{g_{a}}{R} \cos{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}\right)^{2} + \frac{4 \pi^{2}}{L^{2}} g_{a}^{2} g_{v}^{2} \sin^{2}{\left (\frac{2 \pi}{L} \alpha_{1} g_{v} \right )}}})\mathbf{\hat{k}_{N}}$$

Draw


In [30]:
import plot

%aimport plot

# x1 = (R + alpha3 + ga * cos(gv * a2)) * cos(a1)
# x2 = alpha2
# x3 = (R + alpha3 + ga * cos(gv * a2)) * sin(a1)

x1 = Ralpha.dot(N.i)
x3 = Ralpha.dot(N.k)

alpha1_x = lambdify([R, L, ga, gv, alpha1, alpha3], x1, "numpy")
alpha3_z = lambdify([R, L, ga, gv, alpha1, alpha3], x3, "numpy")

R_num = 1/0.8
L_num = 2
h_num = 0.1
ga_num = 0.1
gv_num = 20

x1_start = 0
x1_end = L_num
x3_start = -h_num/2
x3_end = h_num/2

def alpha_to_x(a1, a2, a3):
    x=alpha1_x(R_num, L_num, ga_num, gv_num, a1, a3)
    z=alpha3_z(R_num, L_num, ga_num, gv_num, a1, a3)
    return x, 0, z
    

plot.plot_init_geometry_2(x1_start, x1_end, x3_start, x3_end, alpha_to_x)


<matplotlib.figure.Figure at 0x1c0635552e8>

In [31]:
%aimport plot

R3_1=R3.dot(N.i)
R3_3=R3.dot(N.k)

R3_1_x = lambdify([R, L, ga, gv, alpha1, alpha3], R3_1, "numpy")
R3_3_z = lambdify([R, L, ga, gv, alpha1, alpha3], R3_3, "numpy")

def R3_to_x(a1, a2, a3):
    x=R3_1_x(R_num, L_num, ga_num, gv_num, a1, a3)
    z=R3_3_z(R_num, L_num, ga_num, gv_num, a1, a3)
    return x, 0, z

plot.plot_vectors(x1_start, x1_end, 0, alpha_to_x, R3_to_x)



In [33]:
%aimport plot

R1_1=r1.dot(N.i)
R1_3=r1.dot(N.k)

R1_1_x = lambdify([R, L, ga, gv, alpha1, alpha3], R1_1, "numpy")
R1_3_z = lambdify([R, L, ga, gv, alpha1, alpha3], R1_3, "numpy")

def R1_to_x(a1, a2, a3):
    x=R1_1_x(R_num, L_num, ga_num, gv_num, a1, a3)
    z=R1_3_z(R_num, L_num, ga_num, gv_num, a1, a3)
    return x, 0, z

plot.plot_vectors(x1_start, x1_end, 0, alpha_to_x, R1_to_x)


Lame params


In [15]:
A=

H1 = sqrt((alpha3*((-(1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*sin((L/2 - alpha1)/R) - ga*gv*sin(gv*(pi/2 + (L/2 - alpha1)/R))*cos((L/2 - alpha1)/R)/R)*(-ga*gv*(1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*sin(gv*(pi/2 + (L/2 - alpha1)/R))/R**2 + ga**2*gv**3*sin(gv*(pi/2 + (L/2 - alpha1)/R))*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R**3)/((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)**2 + ga**2*gv**2*sin(gv*(pi/2 + (L/2 - alpha1)/R))**2/R**2)**(3/2) + ((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*cos((L/2 - alpha1)/R)/R + ga*gv**2*cos((L/2 - alpha1)/R)*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R**2 - 2*ga*gv*sin((L/2 - alpha1)/R)*sin(gv*(pi/2 + (L/2 - alpha1)/R))/R**2)/sqrt((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)**2 + ga**2*gv**2*sin(gv*(pi/2 + (L/2 - alpha1)/R))**2/R**2)) + (1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*cos((L/2 - alpha1)/R) - ga*gv*sin((L/2 - alpha1)/R)*sin(gv*(pi/2 + (L/2 - alpha1)/R))/R)**2 + (alpha3*(((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*cos((L/2 - alpha1)/R) - ga*gv*sin((L/2 - alpha1)/R)*sin(gv*(pi/2 + (L/2 - alpha1)/R))/R)*(-ga*gv*(1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*sin(gv*(pi/2 + (L/2 - alpha1)/R))/R**2 + ga**2*gv**3*sin(gv*(pi/2 + (L/2 - alpha1)/R))*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R**3)/((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)**2 + ga**2*gv**2*sin(gv*(pi/2 + (L/2 - alpha1)/R))**2/R**2)**(3/2) + ((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*sin((L/2 - alpha1)/R)/R + ga*gv**2*sin((L/2 - alpha1)/R)*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R**2 + 2*ga*gv*sin(gv*(pi/2 + (L/2 - alpha1)/R))*cos((L/2 - alpha1)/R)/R**2)/sqrt((1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)**2 + ga**2*gv**2*sin(gv*(pi/2 + (L/2 - alpha1)/R))**2/R**2)) + (1 + ga*cos(gv*(pi/2 + (L/2 - alpha1)/R))/R)*sin((L/2 - alpha1)/R) + ga*gv*sin(gv*(pi/2 + (L/2 - alpha1)/R))*cos((L/2 - alpha1)/R)/R)**2)
H2=S(1)
H3=S(1)

H=[H1, H2, H3]
DIM=3
dH = zeros(DIM,DIM)
for i in range(DIM):
    dH[i,0]=H[i].diff(alpha1)
    dH[i,1]=H[i].diff(alpha2)
    dH[i,2]=H[i].diff(alpha3)
    
    
trigsimp(H1)


---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-15-e3ca01440be4> in <module>()
     12 
     13 
---> 14 trigsimp(H1)
     15 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in trigsimp(expr, **opts)
    511                    }[method]
    512 
--> 513     return trigsimpfunc(expr)
    514 
    515 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in <lambda>(x)
    504     trigsimpfunc = {
    505         'fu': (lambda x: fu(x, **opts)),
--> 506         'matching': (lambda x: futrig(x)),
    507         'groebner': (lambda x: groebnersimp(x, **opts)),
    508         'combined': (lambda x: futrig(groebnersimp(x,

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in futrig(e, **kwargs)
   1081 
   1082     old = e
-> 1083     e = bottom_up(e, lambda x: _futrig(x, **kwargs))
   1084 
   1085     if kwargs.pop('hyper', True) and e.has(HyperbolicFunction):

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in <listcomp>(.0)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in <listcomp>(.0)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in <listcomp>(.0)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in <listcomp>(.0)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in <listcomp>(.0)
    994         if rv.args:
    995             args = tuple([bottom_up(a, F, atoms, nonbasic)
--> 996                 for a in rv.args])
    997             if args != rv.args:
    998                 rv = rv.func(*args)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\simplify.py in bottom_up(rv, F, atoms, nonbasic)
    997             if args != rv.args:
    998                 rv = rv.func(*args)
--> 999             rv = F(rv)
   1000         elif atoms:
   1001             rv = F(rv)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in <lambda>(x)
   1081 
   1082     old = e
-> 1083     e = bottom_up(e, lambda x: _futrig(x, **kwargs))
   1084 
   1085     if kwargs.pop('hyper', True) and e.has(HyperbolicFunction):

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in _futrig(e, **kwargs)
   1149             factor_terms, TR12(x), trigs)],  # expand tan of sum
   1150         )]
-> 1151     e = greedy(tree, objective=Lops)(e)
   1152 
   1153     return coeff*e

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\strategies\core.py in minrule(expr)
    115     objective = kwargs.get('objective', identity)
    116     def minrule(expr):
--> 117         return min([rule(expr) for rule in rules], key=objective)
    118     return minrule

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\strategies\core.py in <listcomp>(.0)
    115     objective = kwargs.get('objective', identity)
    116     def minrule(expr):
--> 117         return min([rule(expr) for rule in rules], key=objective)
    118     return minrule

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\strategies\core.py in chain_rl(expr)
     42     def chain_rl(expr):
     43         for rule in rules:
---> 44             expr = rule(expr)
     45         return expr
     46     return chain_rl

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in <lambda>(x)
   1126         TR10,  # sin-cos of sums -> sin-cos prod
   1127         TR11, TR6, # reduce double angles and rewrite cos pows
-> 1128         lambda x: _eapply(factor, x, trigs),
   1129         TR14,  # factored powers of identities
   1130         [identity, lambda x: _eapply(_mexpand, x, trigs)],

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\simplify\trigsimp.py in _eapply(func, e, cond)
   1168         return e
   1169     if _is_Expr(e) or not e.args:
-> 1170         return func(e)
   1171     return e.func(*[
   1172         _eapply(func, ei) if (cond is None or cond(ei)) else ei

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polytools.py in factor(f, *gens, **args)
   6164 
   6165     try:
-> 6166         return _generic_factor(f, gens, args, method='factor')
   6167     except PolynomialError as msg:
   6168         if not f.is_commutative:

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polytools.py in _generic_factor(expr, gens, args, method)
   5856     options.allowed_flags(args, [])
   5857     opt = options.build_options(gens, args)
-> 5858     return _symbolic_factor(sympify(expr), opt, method)
   5859 
   5860 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polytools.py in _symbolic_factor(expr, opt, method)
   5801         if hasattr(expr,'_eval_factor'):
   5802             return expr._eval_factor()
-> 5803         coeff, factors = _symbolic_factor_list(together(expr), opt, method)
   5804         return _keep_coeff(coeff, _factors_product(factors))
   5805     elif hasattr(expr, 'args'):

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polytools.py in _symbolic_factor_list(expr, opt, method)
   5769             func = getattr(poly, method + '_list')
   5770 
-> 5771             _coeff, _factors = func()
   5772             if _coeff is not S.One:
   5773                 if exp.is_Integer:

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polytools.py in factor_list(f)
   3196         if hasattr(f.rep, 'factor_list'):
   3197             try:
-> 3198                 coeff, factors = f.rep.factor_list()
   3199             except DomainError:
   3200                 return S.One, [(f, 1)]

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\polyclasses.py in factor_list(f)
    772     def factor_list(f):
    773         """Returns a list of irreducible factors of ``f``. """
--> 774         coeff, factors = dmp_factor_list(f.rep, f.lev, f.dom)
    775         return coeff, [ (f.per(g), k) for g, k in factors ]
    776 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\factortools.py in dmp_factor_list(f, u, K0)
   1277         if K.is_ZZ:
   1278             levels, f, v = dmp_exclude(f, u, K)
-> 1279             coeff, factors = dmp_zz_factor(f, v, K)
   1280 
   1281             for i, (f, k) in enumerate(factors):

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\factortools.py in dmp_zz_factor(f, u, K)
   1088 
   1089     if dmp_degree(g, u) > 0:
-> 1090         g = dmp_sqf_part(g, u, K)
   1091         H = dmp_zz_wang(g, u, K)
   1092         factors = dmp_trial_division(f, H, u, K)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\sqfreetools.py in dmp_sqf_part(f, u, K)
    245         f = dmp_neg(f, u, K)
    246 
--> 247     gcd = dmp_gcd(f, dmp_diff(f, 1, u, K), u, K)
    248     sqf = dmp_quo(f, gcd, u, K)
    249 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_gcd(f, g, u, K)
   1630 
   1631     """
-> 1632     return dmp_inner_gcd(f, g, u, K)[0]
   1633 
   1634 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_inner_gcd(f, g, u, K)
   1589 
   1590     J, (f, g) = dmp_multi_deflate((f, g), u, K)
-> 1591     h, cff, cfg = _dmp_inner_gcd(f, g, u, K)
   1592 
   1593     return (dmp_inflate(h, J, u, K),

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in _dmp_inner_gcd(f, g, u, K)
   1558         if K.is_ZZ and query('USE_HEU_GCD'):
   1559             try:
-> 1560                 return dmp_zz_heu_gcd(f, g, u, K)
   1561             except HeuristicGCDFailed:
   1562                 pass

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_zz_heu_gcd(f, g, u, K)
   1316         return dup_zz_heu_gcd(f, g, K)
   1317 
-> 1318     result = _dmp_rr_trivial_gcd(f, g, u, K)
   1319 
   1320     if result is not None:

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in _dmp_rr_trivial_gcd(f, g, u, K)
    916         return dmp_one(u, K), f, g
    917     elif query('USE_SIMPLIFY_GCD'):
--> 918         return _dmp_simplify_gcd(f, g, u, K)
    919     else:
    920         return None

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in _dmp_simplify_gcd(f, g, u, K)
    958             G = dmp_content(g, u, K)
    959         else:
--> 960             F = dmp_content(f, u, K)
    961             G = dmp_LC(g, K)
    962 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_content(f, u, K)
   1798 
   1799     for c in f[1:]:
-> 1800         cont = dmp_gcd(cont, c, v, K)
   1801 
   1802         if dmp_one_p(cont, v, K):

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_gcd(f, g, u, K)
   1630 
   1631     """
-> 1632     return dmp_inner_gcd(f, g, u, K)[0]
   1633 
   1634 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\euclidtools.py in dmp_inner_gcd(f, g, u, K)
   1588         return dup_inner_gcd(f, g, K)
   1589 
-> 1590     J, (f, g) = dmp_multi_deflate((f, g), u, K)
   1591     h, cff, cfg = _dmp_inner_gcd(f, g, u, K)
   1592 

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\polys\densebasic.py in dmp_multi_deflate(polys, u, K)
   1373             for M in f.keys():
   1374                 for i, m in enumerate(M):
-> 1375                     B[i] = igcd(B[i], m)
   1376 
   1377         F.append(f)

D:\ProgramFiles\Anaconda\lib\site-packages\sympy\core\numbers.py in igcd(*args)
    203     while k < len(args):
    204         ok = as_int(args[k])
--> 205         k += 1
    206     return a
    207 

KeyboardInterrupt: