Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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_Algorithm_2d_Curve_Integral - Fatal编程技术网

Python 有计算李萨如图形面积的算法吗?

Python 有计算李萨如图形面积的算法吗?,python,algorithm,2d,curve,integral,Python,Algorithm,2d,Curve,Integral,假设我有两个信号的测量值 V = V(t) and U = U(t) 在时间上是周期性的,它们之间有相位差。当在一个图形中相对绘制时,它们形成一个李萨如图形,我想计算其中的面积 这种计算有算法吗 我想用Python解决这个问题。但是,任何语言或算法的响应都将非常受欢迎 可以使用以下表达式生成V和U信号的示例: V(t) = V0*sin(2*pi*t) ; U(t) = U0*sin(2*pi*t + delta) 图1显示了V0=10,U0=5,t=np.arange(0.0,2.0,0

假设我有两个信号的测量值

V = V(t) and U = U(t) 
在时间上是周期性的,它们之间有相位差。当在一个图形中相对绘制时,它们形成一个李萨如图形,我想计算其中的面积

这种计算有算法吗

我想用Python解决这个问题。但是,任何语言或算法的响应都将非常受欢迎

可以使用以下表达式生成V和U信号的示例:

V(t) = V0*sin(2*pi*t) ; U(t) = U0*sin(2*pi*t + delta)
图1显示了
V0=10,U0=5,t=np.arange(0.0,2.0,0.01)
delta=pi/5
V,U
vs
t
曲线图

图2显示了相应的李萨如图
V
vs
U

这是一个更一般问题的具体问题:如何计算通过离散
(x\u i,y\u i)
数据集获得的闭合路径积分?

要在笛卡尔坐标系中找到(闭合)参数曲线的面积,可以使用格林定理()


但请记住,解释——什么是自相交曲线下的真实面积——是不明确的,正如@algrid在评论中注意到的那样

对于通常李萨如形状的最外层曲线区域,我会尝试以下方法:

  • 查找信号周期

    所以找到
    T
    这样的:

    U(t) = U(t+T)
    V(t) = V(t+T)
    
  • 关于
    t=

    我将使用极坐标系,其中心等于间隔
    t=
    上的平均
    U,V
    坐标,并称之为
    U0,V0
    。将数据转换并存储在极坐标中,以便:

    a(t)=atan2( V(t)-V0 , U(t)-U0 )
    r(t)=sqrt( (U(t)-U0)^2 + (V(t)-V0)^2 )
    
    并且只记住每个角度位置具有最大半径的点。这可以通过阵列(限制角度精度)或几何计算多段线与重叠线段的交点来实现。以及拆卸内部零件

  • 根据采样数据计算面积

    因此,通过对覆盖整个圆的每个角位置的饼状三角形求和来计算面积


  • 这可能不适用于异国情调的形状。

    以上两种解决方案-由@MBo和@Spektre(以及评论中的@meowgoesthedog)提供-都可以很好地工作。谢谢你们

    但是我找到了另一种计算
    A
    椭圆李萨如曲线面积的方法:使用
    A=Pi*A*b
    公式(
    A
    b
    分别是椭圆的长半轴和短半轴)

    步骤:

    1-找到
    V
    (或
    U
    )信号的周期
    T


    2-在时间间隔
    0中,在
    t
    与极角相关的情况下,可以使用极面积积分。在一般情况下,您需要按极角对点进行排序,并将由每对相邻点和原点形成的三角形的面积相加。如果您要求任何李萨如图形的面积,那么您必须定义像这样的曲线的面积确切指的是什么是Yes@algrid,很难定义这种李萨如曲线的面积(我的猜测是外轮廓定义了面积)。但是对于使用相同频率的V和U信号生成的曲线(我已经问过了),我们没有这个问题。
    a(t)=atan2( V(t)-V0 , U(t)-U0 )
    r(t)=sqrt( (U(t)-U0)^2 + (V(t)-V0)^2 )
    
    r(t)=sqrt( (U(t)-U0)^2 + (V(t)-V0)^2 )
    
    a = max(r(t)); b = min(r(t))
    
    |D| = max(r(t)) = r(t1); |d| = min(r(t)) = r(t2)
    
    D=(V1,U1)-(V0,U0); d=(V2,U2)-(V0,U0)