Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求解椭圆方程_Python_Ellipse - Fatal编程技术网

Python 求解椭圆方程

Python 求解椭圆方程,python,ellipse,Python,Ellipse,我是Python新手。我有下面的椭圆方程 b[0] + b[1]*X + b[2]*Y + b[3]*X*Y + b[4]*Y**2 - X**2 = 0 b系数向量是已知的。我试图找到解这个方程的X和Y的值,然后绘制它 我试过了 Z = np.array([solve([b[0] + b[1]*Y + b[2]*Y + b[3]*Y*X + b[4]*Y**2 - X**2], Y) 对于np.linspace(-1,2,10)]中的X,但是它给了我类型object的3d数组,我无法处理

我是Python新手。我有下面的椭圆方程

b[0] + b[1]*X + b[2]*Y + b[3]*X*Y + b[4]*Y**2 - X**2 = 0
b系数向量是已知的。我试图找到解这个方程的
X
Y
的值,然后绘制它

我试过了

Z = np.array([solve([b[0] + b[1]*Y + b[2]*Y + b[3]*Y*X + b[4]*Y**2 - X**2], Y) 
对于
np.linspace(-1,2,10)]中的
X
但是它给了我类型object的3d数组,我无法处理

关于获得Y向量和相应的
X
向量的人有什么建议吗

plt.plot(X, Y) 

然后得到一个椭圆?

你需要这个函数来拟合椭圆:

import numpy as np
from numpy.linalg import eig, inv

def fitEllipse(x,y):
    x = x[:,np.newaxis]
    y = y[:,np.newaxis]
    D =  np.hstack((x*x, x*y, y*y, x, y, np.ones_like(x)))
    S = np.dot(D.T,D)
    C = np.zeros([6,6])
    C[0,2] = C[2,0] = 2; C[1,1] = -1
    E, V =  eig(np.dot(inv(S), C))
    n = np.argmax(np.abs(E))
    a = V[:,n]
    return a 
并使用它:

arc = 0.8
R = np.arange(0,arc*np.pi, 0.01)
x = 1.5*np.cos(R) + 2 + 0.1*np.random.rand(len(R))
y = np.sin(R) + 1. + 0.1*np.random.rand(len(R))

This becomes

a = fitEllipse(x,y)
有关更多信息和教程,请参见此链接:但作为提示,我只介绍了一些函数:

numpy.linalg.eig(a):计算方形阵列的特征值和右特征向量。 numpy.linalg.inv(a):计算矩阵的(乘法)逆


请参见维基

你能提供一个例子
b
vector?数组([-0.43289427,0.55144696,3.22294034,0.14364618,-2.63562548])非常感谢你的详细回答。我已经用最小二乘法进行了拟合,得到了椭圆方程的系数。我只需要画出来?我正在尝试提取满足方程式的x和y(网格)的值,然后绘制(x,y)不客气,因此对于绘图,您可以使用
matplotlib.collections.EllipseCollection
或matplotlib中的其他工具。我自己不熟悉这一点。。。这是链接: