用SymPy验证圆锥曲线性质
圆锥曲线性质
预备知识
矩阵变换包括旋转和平移。
列向量 v ⃗ = [ x , y , 1 ] T , \vec{v}=[x,y,1]^T, v =[x,y,1]T, 旋转矩阵 R ′ = [ cos ( α ) − sin ( α ) , 0 sin ( α ) cos ( α ) , 0 0 0 1 ] R'=\begin{bmatrix} \cos(\alpha) & -\sin(\alpha), &0\\ \sin(\alpha) & \cos(\alpha), &0\\ 0 & 0 & 1 \end{bmatrix} R′=⎣⎡cos(α)sin(α)0−sin(α),cos(α),0001⎦⎤, 平移向量 t ⃗ = [ h , k , 0 ] T \vec t=[h,k,0]^T t =[h,k,0]T
旋转和平移合在一起就是 R = R ′ + t ⃗ = [ cos ( α ) − sin ( α ) , h sin ( α ) cos ( α ) , k 0 0 1 ] R=R'+\vec t=\begin{bmatrix} \cos(\alpha) & -\sin(\alpha), &h\\ \sin(\alpha) & \cos(\alpha), &k\\ 0 & 0 & 1 \end{bmatrix} R=R′+t =⎣⎡cos(α)sin(α)0−sin(α),cos(α),0hk1⎦⎤
新坐标系下,坐标转换为 v ⃗ ′ = [ x ′ , y ′ , 1 ] T = R ∗ v ⃗ \vec v' = [x',y',1]^T=R*\vec v v ′=[x′,y′,1]T=R∗v
通过计算得到:
v ⃗ ′ T = [ x ′ , y ′ , 1 ] = R ⋅ v ⃗ = [ x cos ( α ) − y sin ( α ) + h , x sin ( α ) + y cos ( α ) + k , 1 ] \vec v'^T = [x',y', 1] = R\cdot\vec v=\begin{bmatrix} x\cos(\alpha)-y\sin(\alpha)+h,x\sin(\alpha)+y\cos(\alpha)+k, 1 \end{bmatrix} v ′T=[x′,y′,1]=R⋅v =[xcos(α)−ysin(α)+h,xsin(α)+ycos(α)+k,1]
具体定义和运算如下:
>>> from sympy import *
>>> x,y,z = symbols('x y z')
>>> alpha = Symbols('alpha')
>>> h,k = symbols('h k', real=true)
>>> A,B,C,D,E,F = symbols('A:F')>>> v = Matrix([x,y,1]) #列向量 v, 采用齐次坐标系
>>> R = Matrix([[cos(alpha), -sin(alpha),h],
[sin(alpha), cos(alpha),k],
[0,0,1]]) #旋转矩阵+平移向量
>>> v1 = R*v #坐标变换,Rotate+Translate
>>> v1
Matrix([
[h + x*cos(alpha) - y*sin(alpha)],
[k + x*sin(alpha) + y*cos(alpha)],
[ 1]])
圆锥曲线一般式表现形式
平面上的圆锥曲线是二元二次多项式表示,基本式为:
f ( x , y ) = A x 2 + 2 B x y + C y 2 + 2 D x + 2 E y + F = 0 f(x,y)=Ax^2+2Bxy+Cy^2+2Dx+2Ey+F=0 f(x,y)=Ax2+2Bxy+Cy2+2Dx+2Ey+F=0
写成矩阵形式如下:
f ( x , y ) = [ x , y , 1 ] [ A B D B C E D E F ] [ x y 1 ] f(x,y) = [x,y,1]\begin{bmatrix} A & B & D\\ B & C & E\\ D & E & F \end{bmatrix}\begin{bmatrix} x\\y\\1 \end{bmatrix} f(x,y)=[x,y,1]⎣⎡ABDBCEDEF⎦⎤⎣⎡xy1⎦⎤
>>> M = Matrix([[A,B,D],[B,C,E],[D,E,F]]) #定义系数矩阵
>>> M
Matrix([
[A, B, D],
[B, C, E],
[D, E, F]])>>> f = Function('f') #定义函数>>> G_1 = v.T * M * v #矩阵乘积得到原圆锥曲线一般形式
>>> G_1
Matrix([[D*x + E*y + F + x*(A*x + B*y + D) + y*(B*x + C*y + E)]])
>>> f = G_1[0]
>>> f
D*x + E*y + F + x*(A*x + B*y + D) + y*(B*x + C*y + E)
>>> cancel(f) #合并同类项
A*x**2 + 2*B*x*y + C*y**2 + 2*D*x + 2*E*y + F
>>> f = cancel(f)
变换后的圆锥曲线的表现形式
将变换后的坐标代入上面的圆锥曲线一般式中,经计算得到:
>>> G_2 = v1.T * M * v1
>>> G_2
Matrix([[D*(h + x*cos(alpha) - y*sin(alpha)) + E*(k + x*sin(alpha) + y*cos(alpha)) + F + (h + x*cos(alpha) - y*sin(alpha))*(A*(h + x*cos(alpha) - y*sin(alpha)) + B*(k + x*sin(alpha) + y*cos(alpha)) + D) + (k + x*sin(alpha) + y*cos(alpha))*(B*(h + x*cos(alpha) - y*sin(alpha)) + C*(k + x*sin(alpha) + y*cos(alpha)) + E)]])>>> g = Function('g') #定义新的函数>>> g = cancel(G_2[0]) #结果为多项式,未经过化简合并同类项
>>> g
A*h**2 + 2*A*h*x*cos(alpha) - 2*A*h*y*sin(alpha) + A*x**2*cos(alpha)**2 - 2*A*x*y*sin(alpha)*cos(alpha) + A*y**2*sin(alpha)**2 + 2*B*h*k + 2*B*h*x*sin(alpha) + 2*B*h*y*cos(alpha) + 2*B*k*x*cos(alpha) - 2*B*k*y*sin(alpha) + 2*B*x**2*sin(alpha)*cos(alpha) - 2*B*x*y*sin(alpha)**2 + 2*B*x*y*cos(alpha)**2 - 2*B*y**2*sin(alpha)*cos(alpha) + C*k**2 + 2*C*k*x*sin(alpha) + 2*C*k*y*cos(alpha) + C*x**2*sin(alpha)**2 + 2*C*x*y*sin(alpha)*cos(alpha) + C*y**2*cos(alpha)**2 + 2*D*h + 2*D*x*cos(alpha) - 2*D*y*sin(alpha) + 2*E*k + 2*E*x*sin(alpha) + 2*E*y*cos(alpha) + F>>> g.atoms(Symbol) #得到g中所有符号的列表
{alpha, x, C, A, k, B, y, F, h, D, E}>>> Pg = Poly(g,x,y) #转化成含 x,y 的多项式
>>> Pg
Poly((A*cos(alpha)**2 + 2*B*sin(alpha)*cos(alpha) + C*sin(alpha)**2)*x**2 + (-2*A*sin(alpha)*cos(alpha) - 2*B*sin(alpha)**2 + 2*B*cos(alpha)**2 + 2*C*sin(alpha)*cos(alpha))*x*y + (2*A*h*cos(alpha) + 2*B*h*sin(alpha) + 2*B*k*cos(alpha) + 2*C*k*sin(alpha) + 2*D*cos(alpha) + 2*E*sin(alpha))*x + (A*sin(alpha)**2 - 2*B*sin(alpha)*cos(alpha) + C*cos(alpha)**2)*y**2 + (-2*A*h*sin(alpha) + 2*B*h*cos(alpha) - 2*B*k*sin(alpha) + 2*C*k*cos(alpha) - 2*D*sin(alpha) + 2*E*cos(alpha))*y + A*h**2 + 2*B*h*k + C*k**2 + 2*D*h + 2*E*k + F, x, y, domain='EX')>>> Coeff = Pg.coeffs() #获取多项式的子项系数 分别对应 x**2, x*y, x, y**2, y, 1, 按照 字母x降序排列
[A*cos(alpha)**2 + 2*B*sin(alpha)*cos(alpha) + C*sin(alpha)**2, -2*A*sin(alpha)*cos(alpha) - 2*B*sin(alpha)**2 + 2*B*cos(alpha)**2 + 2*C*sin(alpha)*cos(alpha), 2*A*h*cos(alpha) + 2*B*h*sin(alpha) + 2*B*k*cos(alpha) + 2*C*k*sin(alpha) + 2*D*cos(alpha) + 2*E*sin(alpha), A*sin(alpha)**2 - 2*B*sin(alpha)*cos(alpha) + C*cos(alpha)**2, -2*A*h*sin(alpha) + 2*B*h*cos(alpha) - 2*B*k*sin(alpha) + 2*C*k*cos(alpha) - 2*D*sin(alpha) + 2*E*cos(alpha), A*h**2 + 2*B*h*k + C*k**2 + 2*D*h + 2*E*k + F]
>>> Pg.monoms() #获得多项式的子项次数 (x,y)
[(2, 0), (1, 1), (1, 0), (0, 2), (0, 1), (0, 0)]
>>> Pg.degree() #获得多项式的最高次数
2>>> print(latex(Pg))
\operatorname{Poly}{\left( \left(A \cos^{2}{\left(\alpha \right)} + 2 B \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} + C \sin^{2}{\left(\alpha \right)}\right) x^{2} + \left(- 2 A \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} - 2 B \sin^{2}{\left(\alpha \right)} + 2 B \cos^{2}{\left(\alpha \right)} + 2 C \sin{\left(\alpha \right)} \cos{\left(\alpha \right)}\right) xy + \left(2 A h \cos{\left(\alpha \right)} + 2 B h \sin{\left(\alpha \right)} + 2 B k \cos{\left(\alpha \right)} + 2 C k \sin{\left(\alpha \right)} + 2 D \cos{\left(\alpha \right)} + 2 E \sin{\left(\alpha \right)}\right) x + \left(A \sin^{2}{\left(\alpha \right)} - 2 B \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} + C \cos^{2}{\left(\alpha \right)}\right) y^{2} + \left(- 2 A h \sin{\left(\alpha \right)} + 2 B h \cos{\left(\alpha \right)} - 2 B k \sin{\left(\alpha \right)} + 2 C k \cos{\left(\alpha \right)} - 2 D \sin{\left(\alpha \right)} + 2 E \cos{\left(\alpha \right)}\right) y + A h^{2} + 2 B h k + C k^{2} + 2 D h + 2 E k + F, x, y, domain=\mathtt{\text{EX}} \right)}
通过计算得到新的表达式为:
g ( x , y ) = ( A cos 2 ( α ) + 2 B sin ( α ) cos ( α ) + C sin 2 ( α ) ) x 2 + ( − 2 A sin ( α ) cos ( α ) − 2 B sin 2 ( α ) + 2 B cos 2 ( α ) + 2 C sin ( α ) cos ( α ) ) x y + ( 2 A h cos ( α ) + 2 B h sin ( α ) + 2 B k cos ( α ) + 2 C k sin ( α ) + 2 D cos ( α ) + 2 E sin ( α ) ) x + ( A sin 2 ( α ) − 2 B sin ( α ) cos ( α ) + C cos 2 ( α ) ) y 2 + ( − 2 A h sin ( α ) + 2 B h cos ( α ) − 2 B k sin ( α ) + 2 C k cos ( α ) − 2 D sin ( α ) + 2 E cos ( α ) ) y + A h 2 + 2 B h k + C k 2 + 2 D h + 2 E k + F g(x,y) = \left(A \cos^{2}{\left(\alpha \right)} + 2 B \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} + C \sin^{2}{\left(\alpha \right)}\right) x^{2} +\\\qquad \left(- 2 A \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} - 2 B \sin^{2}{\left(\alpha \right)} + 2 B \cos^{2}{\left(\alpha \right)} + 2 C \sin{\left(\alpha \right)} \cos{\left(\alpha \right)}\right) xy +\\\qquad \left(2 A h \cos{\left(\alpha \right)} + 2 B h \sin{\left(\alpha \right)} + 2 B k \cos{\left(\alpha \right)} + 2 C k \sin{\left(\alpha \right)} + 2 D \cos{\left(\alpha \right)} + 2 E \sin{\left(\alpha \right)}\right) x +\\\qquad \left(A \sin^{2}{\left(\alpha \right)} - 2 B \sin{\left(\alpha \right)} \cos{\left(\alpha \right)} + C \cos^{2}{\left(\alpha \right)}\right) y^{2} +\\\qquad \left(- 2 A h \sin{\left(\alpha \right)} + 2 B h \cos{\left(\alpha \right)} - 2 B k \sin{\left(\alpha \right)} + 2 C k \cos{\left(\alpha \right)} - 2 D \sin{\left(\alpha \right)} + 2 E \cos{\left(\alpha \right)}\right) y +\\\qquad A h^{2} + 2 B h k + C k^{2} + 2 D h + 2 E k + F g(x,y)=(Acos2(α)+2Bsin(α)cos(α)+Csin2(α))x2+(−2Asin(α)cos(α)−2Bsin2(α)+2Bcos2(α)+2Csin(α)cos(α))xy+(2Ahcos(α)+2Bhsin(α)+2Bkcos(α)+2Cksin(α)+2Dcos(α)+2Esin(α))x+(Asin2(α)−2Bsin(α)cos(α)+Ccos2(α))y2+(−2Ahsin(α)+2Bhcos(α)−2Bksin(α)+2Ckcos(α)−2Dsin(α)+2Ecos(α))y+Ah2+2Bhk+Ck2+2Dh+2Ek+F
设 g ( x , y ) = A 1 x 2 + 2 B 1 x y + C 1 y 2 + 2 D 1 x + 2 E 1 y + F 1 g(x,y) = A_1 x^2+2B_1 xy+C_1 y^2+2D_1 x+2E_1 y+F_1 g(x,y)=A1x2+2B1xy+C1y2+2D1x+2E1y+F1
通过比较系数,发现:
- 化为字典形式比较方便提取 x 2 , y 2 , y , 1 x^2, y^2, y, 1 x2,y2,y,1的系数。
- 通过原始代数式,采用
expr.coeff(x*y)
得到 x y xy xy 的系数 - 不能通过原始代数式
expr.coeff(x)
来得到 x x x 的系数,结果中还有 y y y - 要获取特定单项式的系数,请使用
p.coeff_monomial(x ** 2 * y)
- 获取特定多项式的系数,请使用
p.coeffs()
- 获取特定多项式的次数,请使用
p.monoms()
- 转化成多项式用
Poly(expr[,x,y])
通过软件计算得到:
A_1 = Coeff[0] #coeff(x**2)
B_1 = Coeff[1]/2 #coeff(x*y)
D_1 = Coeff[2]/2 #coeff(x)
C_1 = Coeff[3] #coeff(y**2)
E_1 = Coeff[4]/2 #y的系数
F_1 = Coeff[5] #常数项1
LA_1 = latex(simplify(A_1)) #输出成LaTeX格式,输出前化简或合并一下
LB_1 = latex(simplify(B_1))
LC_1 = latex(simplify(C_1))
LD_1 = latex(simplify(D_1))
LE_1 = latex(simplify(E_1))
LF_1 = latex(simplify(F_1))
最终得到两个坐标系之间的转换公式:
A 1 = A cos 2 ( α ) + B sin ( 2 α ) + C sin 2 ( α ) 2 B 1 = − A sin ( 2 α ) + 2 B cos ( 2 α ) + C sin ( 2 α ) C 1 = A sin 2 ( α ) − B sin ( 2 α ) + C cos 2 ( α ) 2 D 1 = 2 A h cos ( α ) + 2 B h sin ( α ) + 2 B k cos ( α ) + 2 C k sin ( α ) + 2 D cos ( α ) + 2 E sin ( α ) 2 E 1 = − 2 A h sin ( α ) + 2 B h cos ( α ) − 2 B k sin ( α ) + 2 C k cos ( α ) − 2 D sin ( α ) + 2 E cos ( α ) F 1 = A h 2 + 2 B h k + C k 2 + 2 D h + 2 E k + F \begin{array}{|lcl|} \hline A_1 &=& A \cos^{2}{\left(\alpha \right)} + B \sin{\left(2 \alpha \right)} + C \sin^{2}{\left(\alpha \right)}\\ 2B_1 &=& - A \sin{\left(2 \alpha \right)} + 2 B \cos{\left(2 \alpha \right)} + C \sin{\left(2 \alpha \right)}\\ C_1 &=& A \sin^{2}{\left(\alpha \right)} - B \sin{\left(2 \alpha \right)} + C \cos^{2}{\left(\alpha \right)}\\ 2D_1 &=& 2 A h \cos{\left(\alpha \right)} + 2 B h \sin{\left(\alpha \right)} + 2 B k \cos{\left(\alpha \right)} + 2 C k \sin{\left(\alpha \right)} + 2 D \cos{\left(\alpha \right)} + 2 E \sin{\left(\alpha \right)}\\ 2E_1 &=& - 2 A h \sin{\left(\alpha \right)} + 2 B h \cos{\left(\alpha \right)} - 2 B k \sin{\left(\alpha \right)} + 2 C k \cos{\left(\alpha \right)} - 2 D \sin{\left(\alpha \right)} + 2 E \cos{\left(\alpha \right)}\\ F_1 &=& A h^{2} + 2 B h k + C k^{2} + 2 D h + 2 E k + F\\ \hline \end{array} A12B1C12D12E1F1======Acos2(α)+Bsin(2α)+Csin2(α)−Asin(2α)+2Bcos(2α)+Csin(2α)Asin2(α)−Bsin(2α)+Ccos2(α)2Ahcos(α)+2Bhsin(α)+2Bkcos(α)+2Cksin(α)+2Dcos(α)+2Esin(α)−2Ahsin(α)+2Bhcos(α)−2Bksin(α)+2Ckcos(α)−2Dsin(α)+2Ecos(α)Ah2+2Bhk+Ck2+2Dh+2Ek+F
更为直观的矩阵运算
向量 v ⃗ = [ x , y , 1 ] T \vec v=[x,y,1]^T v =[x,y,1]T 经 矩阵 R R R 变换后,得到 R × v ⃗ R\times \vec{v} R×v
f ( x , y ) = v ⃗ T ⋅ M ⋅ v ⃗ ⟼ g ( x , y ) = ( R ⋅ v ⃗ ) T ⋅ M ⋅ ( R ⋅ v ⃗ ) = v ⃗ T ⋅ R T M R ⋅ v ⃗ = v ⃗ T ⋅ M 1 ⋅ v ⃗ f(x,y)=\vec{v}^T\cdot M\cdot\vec{v} \longmapsto g(x,y)= (R\cdot\vec{v})^T\cdot M\cdot (R\cdot\vec{v})=\vec{v}^T \cdot R^T M R\cdot \vec{v} = \vec{v}^T \cdot M_1 \cdot \vec{v} f(x,y)=v T⋅M⋅v ⟼g(x,y)=(R⋅v )T⋅M⋅(R⋅v )=v T⋅RTMR⋅v =v T⋅M1⋅v
显然,通过上面的分析可得, 新的二次方程中对应的系数矩阵 M 1 = R T M R M_1 = R^T M R M1=RTMR
>>> M_1 = R.T*M*R
>>> simplify(A_1-M_1[0]) #验证A_1 = M_1[0],求差法
0
>>> simplify(B_1-M_1[1]) #验证B_1 = M_1[1]
0
>>> simplify(D_1-M_1[2]) #验证D_1 = M_1[2]
0
>>> simplify(E_1-M_1[5]) #验证E_1 = M_1[5]
0
>>> simplify(F_1-M_1[8]) #验证F_1 = M_1[8]
0
>>> simplify(C_1-M_1[4]) #验证C_1 = M_1[4]
0
>>> A_2 = M_1[0]
>>> B_2 = M_1[1]
>>> C_2 = M_1[4]
>>> D_2 = M_1[2]
>>> E_2 = M_1[5]
>>> F_2 = M_1[8]
由此可以立马得到真正的:
A 2 = M 1 [ 0 ] B 2 = M 1 [ 1 ] C 2 = M 1 [ 4 ] D 2 = M 1 [ 2 ] E 2 = M 1 [ 5 ] F 2 = M 1 [ 8 ] A_2 = M_1[0]\qquad B_2=M_1[1]\qquad C_2=M_1[4]\\ D_2=M_1[2]\qquad E_2=M_1[5]\qquad F_2=M_1[8] A2=M1[0]B2=M1[1]C2=M1[4]D2=M1[2]E2=M1[5]F2=M1[8]
不同坐标系,相同的圆锥曲线
由于圆锥曲线的形状不会随着坐标系的变换而改变,在旋转和平移下,圆锥曲线形状不变。我们试着找出两个坐标系下的不同的代数式之间有什么不变量吗?
1. f ( x , y ) = A x 2 + 2 B x y + C y 2 + 2 D x + 2 E y + F = 0 2. g ( x , y ) = A 2 x 2 + 2 B 2 x y + C 2 y 2 + 2 D 2 x + 2 E 2 y + F 2 = 0 1.\; f(x,y)=Ax^2+2Bxy+Cy^2+2Dx+2Ey+F=0\\ 2.\; g(x,y)=A_2 x^2+2B_2 xy+C_2 y^2+2D_2 x+2E_2 y+F_2 = 0 1.f(x,y)=Ax2+2Bxy+Cy2+2Dx+2Ey+F=02.g(x,y)=A2x2+2B2xy+C2y2+2D2x+2E2y+F2=0
也可以用矩阵乘积来表示
1. f ( x , y ) = [ x , y , 1 ] [ A B D B C E D E F ] 1.\; f(x,y)=[x,y,1]\begin{bmatrix} A & B & D\\ B & C& E\\ D & E & F \end{bmatrix} 1.f(x,y)=[x,y,1]⎣⎡ABDBCEDEF⎦⎤ [ x y 1 ] \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}\\[1em] ⎣⎡xy1⎦⎤
2. g ( x , y ) = [ x , y , 1 ] [ A 2 B 2 D 2 B 2 C 2 E 2 D 2 E 2 F 2 ] 2.\; g(x,y)=[x,y,1]\begin{bmatrix} A_2 & B_2 & D_2\\ B_2 & C_2 & E_2\\ D_2 & E_2 & F_2 \end{bmatrix} 2.g(x,y)=[x,y,1]⎣⎡A2B2D2B2C2E2D2E2F2⎦⎤ [ x y 1 ] \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ⎣⎡xy1⎦⎤
系数之间的关系式写成矩阵形式为:
A 2 = [ cos ( α ) , sin ( α ) ] [ A B B C ] A_2 = [\cos(\alpha),\sin(\alpha)]\begin{bmatrix} A & B\\ B & C \end{bmatrix} A2=[cos(α),sin(α)][ABBC] [ cos ( α ) sin ( α ) ] \begin{bmatrix} \cos(\alpha)\\ \sin(\alpha) \end{bmatrix} [cos(α)sin(α)]
C 2 = [ cos ( α ) , sin ( α ) ] [ C − B − B A ] C_2 = [\cos(\alpha),\sin(\alpha)]\begin{bmatrix} C & -B\\ -B & A \end{bmatrix} C2=[cos(α),sin(α)][C−B−BA] [ cos ( α ) sin ( α ) ] \begin{bmatrix} \cos(\alpha)\\ \sin(\alpha) \end{bmatrix} [cos(α)sin(α)]
验证以下三个不变量:
- H = A + C = A 2 + C 2 H = A + C = A_2 + C_2 H=A+C=A2+C2
- Δ = B 2 − A C = B 2 2 − A 2 C 2 \Delta = B^2 - AC = B_2^2 - A_2 C_2 Δ=B2−AC=B22−A2C2
- D e t = ∣ A B D B C E D E F ∣ Det = \begin{vmatrix} A & B & D\\ B & C & E\\ D & E & F \end{vmatrix} Det=∣∣∣∣∣∣ABDBCEDEF∣∣∣∣∣∣ = ∣ A 2 B 2 D 2 B 2 C 2 E 2 D 2 E 2 F 2 ∣ =\begin{vmatrix} A_2 & B_2 & D_2\\ B_2 & C_2 & E_2\\ D_2 & E_2 & F_2 \end{vmatrix} =∣∣∣∣∣∣A2B2D2B2C2E2D2E2F2∣∣∣∣∣∣
验证如下:
>>> trigsimp(A_2+C_2)
A + C
>>> trigsimp(B_2**2 - A_2*C_2)
-A*C + B**2
>>> M_2 = Matrix([
... [A_2, B_2, D_2],
... [B_2, C_2, E_2],
... [D_2, E_2, F_2]])>>> Determinant(M).doit()
A*C*F - A*E**2 - B**2*F + 2*B*D*E - C*D**2
>>> simplify(Determinant(M_2).doit())
A*C*F - A*E**2 - B**2*F + 2*B*D*E - C*D**2
参考资料
《古典几何学》(项武义,王申怀,潘养廉)P63-64
用SymPy验证圆锥曲线性质相关推荐
- 为什么计算机系统安全具有整体性质,操作系统全局性质的形式化描述和验证
摘要: 如今计算机系统正在各行业各领域得到越来越广泛的应用,操作系统作为底层软件平台,是计算机系统稳定运行的关键.国内外由于操作系统软件缺陷而导致的灾难和事故屡见不鲜.保障操作系统的安全可靠具有重要意 ...
- 【 MATLAB 】DFT性质讨论(一)线性、循环反转、共轭与实序列的对称性的MATLAB实现
上篇博文通过在理论上讨论了DFT的三个性质:[ MATLAB ]DFT性质讨论(一)线性.循环反转与共轭 分别讨论: 一.线性 给出一个例子,给出x1和x2,x3 = 0.3*x1+0.8*x2; 之 ...
- ASP.NET MVC使用Oauth2.0实现身份验证
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的 ...
- 1.2 行列式的性质和计算
学习目标: 当学习行列式性质和计算时,以下是一些具体的学习目标: 理解行列式的定义和计算方法,能够准确计算给定的行列式.(最基本的) 熟练掌握行列式的基本性质,包括交换行列式的两行或两列.用一个数乘行 ...
- 拉普拉斯矩阵特征向量的几个关键性质证明
目录 前言 拉普拉斯矩阵 公式 性质 证明 性质1: L L L 的特征向量正交 性质2: L L L 的特征向量组成的矩阵 P P P是正交矩阵,有 P − 1 = P T P^{-1}=P^{T} ...
- 登录工程二:现代 Web 应用的典型身份验证需求
朋友就职于某大型互联网公司.前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录. 而他的具体工作则是为各个业务子网站提供友好的登录部件(Widget),从而统一整个网站群的 ...
- 登录工程:现代 Web 应用的典型身份验证需求
朋友就职于某大型互联网公司.前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录. 而他的具体工作则是为各个业务子网站提供友好的登录部件(Widget),从而统一整个网站群的 ...
- 信号与系统仿真实验——实验二 傅立叶变换MATLAB的实现及傅里叶变换性质的分析
[ 实验目的] 1.利用MATLAB分析非周期信号的频谱 2.观察信号频谱变化验证傅里叶变换性质 [ 实验内容] [ 实验报告要求] (1)记录实验一和实验三中的波形: (2)总结实验二中频谱特性曲线 ...
- 线性时态逻辑ctl_计算机系统形式化验证中的模型检测方法综述论文
计算机系统形式化验证中的模型检测方法综述论文 1 形式化方法概述 形式化方法是用数学和逻辑的方法来描述和验证系统设计是否满足需求.它将系统属性和系统行为定义在抽象层次上,以形式化的规范语言去描述系统. ...
最新文章
- Python 多进程、协程异步抓取英雄联盟皮肤并保存在本地
- 支持取消操作和暂停操作的Backgroundworker
- 考研英语一2011年翻译真题详解
- Google:狡兔三窟
- json 序列化 java_Java JSON序列化杂谈
- o型圈沟槽设计_深圳综合O型密封圈ID544.4MM*8.6MM报价-星湖蓝海科技
- python接口测试demo_python http接口自动化测试简单demo
- 环境搭建:Windows系统下Nacos集群搭建
- 【系统篇】从int 3探索Windows应用程序调试原理
- 标准C程序设计七---121
- 别让这个时代越来越冷漠
- centos7 mysql安装_CentOS7安装MySQL(详解)
- 富士康计划将苹果生产线转移到越南,是什么原因呢?
- Java程序员必会之数据结构与算法全梳理
- ESP32-WiFi功能的理解
- css使用clac()垂直居中
- 今有物不知其数三三数之JAVA_课后练习:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?...
- html添加右键菜单,JS添加右键菜单
- 黄金分割法求函数最小值
- android头像设置
热门文章
- 抛弃ExQuilla, 拥抱Evolution-ews
- Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server 錯誤的解決辦法
- 可视化平台指挥中心设计
- recv() failed (104: Connection reset by peer) while reading response header from upstream
- 计算不规则四边形的面积+代码实现
- 阿里云接口----OSS文件上传
- java通过URL获取网络文件并上传到阿里云OSS文件服务器
- POI操作EXCEL实战
- 苹果x要不要升ios14.4系统?
- [XJTUSE]数据结构学习——第一章 线性表 1.3 单链表的实现(JAVA)