求五个二次曲线方程的一般公式是:
A x2+B xy+C y2+D x+E y+F=0。在
一开始我试着用六个点。下面是我的python代码:import numpy as np
def conic_section(p1, p2, p3, p4, p5, p6):
def row(point):
return [point[0]*point[0], point[0]*point[1], point[1]*point[1],
point[0], point[1], 1]
matrix=np.matrix([row(p1),row(p2),row(p3),row(p4),row(p5), row(p6)])
b=[0,0,0,0,0,0]
return np.linalg.solve(matrix,b)
print conic_section(np.array([6,5]), np.array([2,9]), np.array([0,0]),
np.array([11, 5.5]), np.array([6, 7]), np.array([-1,-1]))
问题是,这将返回解[0,0,0,0,0],因为方程的右边是零向量。在
然后我试图通过减去F并除以F来改变圆锥曲线:
A x2+B xy+C y2+D x+E y+F=0
A x2+B xy+C y2+D x+E y=-F
A'x2+Bxy+C'y2+D'x+E'y=-1。在
但这不起作用的原因是,如果我的一个点是(0,0),那么我将得到一个矩阵,它有一行零,而方程的右边将有一个-1代表向量中的条目。换句话说,如果我的一个点是(0,0),那么“F”应该是0,所以我不能把它除以。在
任何帮助都将不胜感激。
谢谢您。在