求Jordan曲线包围的封闭区域的面积

背景

发现很多教材讲微积分中的格林定理忽略其引申,显得粗糙。看了不同版本教材比对之后,这种感受更深了。Green′stheorem 联系着二重积分和第二类平面曲线积分,是个漂亮的结果.

对原始定理稍作引申,不仅加深理解,在计算几何的某些算法实现中灵活应用起来也很方便。不但格林定理,散度定理也有类似的应用,让人惊讶。

定理和引申

定理 (Green‘s theorem, also Jordan curve theorem): 向量场 (x,y)?→F?X,Y?, ?X?y和?Y?x在有界单连通区间 D 上连续;D 的边界为Jordan曲线 C:r(s)=?x(s),y(s)?。则环量形式 circulation form:

?D(?Y?x??X?y)dxdy=∮CF?dr=∮C(Xdx+Ydy)

类似地有flux form:

?D(?X?x+?Y?y)dxdy=∮CF?nds=∮C(Xdy?Ydx)

引申 对circulation form, 如果(?Y?x??X?y)=1, 定理的公式左边就是区域 D的面积。满足这样条件的F 有很多, 比如?0,x?, ??y,0?, 12??y,x?等等。从而有:

DArea=?Ddxdy=∮Cxdy=?∮Cydx=12∮C(xdy?ydx)

适当更换F,?x,0?, ?0,y?, 12?x,y?,可以类似得到flux form的等价的引申结果。

Jordan曲线作为适用范围只是定理适用的必要非充分条件。边界为封闭曲线,区域内任何点关于边界曲线的 卷绕数 都为 1 似乎更理想, 尤其是如果面积也允许有符号时; 因为这样得到的面积与曲线方向有关, 否则也有反例存在: Lemniscates of Bernoulli,跟曲线参数方程特定的形式有关(因为这影响曲线的走向),此时极坐标积分反而可能更好。

应用案例

椭圆面积

国外教科书中多讲椭圆面积的计算.

比如C=?acost,bsint?,t∈[0,2π]所包围的区域的面积。令向量场F=12??y,x?, 利用定理的引申:

S=12∮Cacostd(bsint)?bsintd(acost)=ab2∫02π(cos2t+sin2t)dt=πab

四瓣花形曲线的面积

如果用一个形状更特殊, 常规方法繁琐的例子则容易给人更深的印象。

比如:

?????x=y=cos(t)cos2(2t)???????√4sin(t)cos2(2t)???????√4t∈[0,2π]

用格林定理的引申可以得到其面积恰好为 2。 这个例子实际上用极坐标下的积分也很容易验证结果。然而格林定理可以直接应用还是让人意外。

这个例子四个花瓣有公共点(0,0)应该就不算Jordan曲线了,但封闭的开区域内 卷绕数 都为 1 且曲线方向一致(如果方向相反可能有负卷绕数), 所以仍然适用格林定理;此外,四个象限中,曲线都正好等分单位正方形,这让人也感觉很好。

此外, 这个案例 ?sin2t,sint? 也不错。

Lemniscates of Bernoulli

前面提到这类曲线能否适用Green’s theorem实际上跟曲线参数方程特定的形式有关(因为这影响曲线的走向), 这里举两个例子, 同样都是 Lemniscates of Bernoulli , 但参数方程决定的曲线走向差异, 一个适用, 一个太难适用。

先说适用的:

参数方程

?????x=y=cos(t)cos(2t)??????√cos(2t)??????√sin(t)t∈[0,π4]∪[3π4,5π4]∪[7π4,2π]

曲线及其方向是这样的:

容易知道它是前面四瓣花形曲线的一半, 面积是1.

而这条曲线:

?????????x=y=343cost?245cos(2t)+10149?140cost49(5sin(2t)?7sint)140cost?149t∈[0,2π]

曲线的走向随参数t的增加是这样的:

用格林公式计算面积总是正负抵消,结果为0

常拿来说事的不能用此定理的曲线

参数方程为:

{xy=?9sin(2t)?5sin(3t)=9cos(2t)?5cos(3t)t∈[0,2π]

刚刚计算过它的隐函数曲线形式, 形状如:

如果直接用 格林定理 则得到 87π, 跟半径87??√的圆一比较, 发现实际面积并没有圆大,显然是错误的。中心卷绕数为2、近似于正五边形的部分实际被重复计算了。

更新中

版权声明:本文为博主原创,转载请注明出处。

时间: 2024-10-25 10:17:58

求Jordan曲线包围的封闭区域的面积的相关文章

求转子曲线所包围的封闭区域的面积

问题 碰到这样的问题,感觉很神奇. 定子方程,短幅内摆线方程: {x1y1=(R?r)sinτ+esin(z2τ)?resinθ=(R?r)cosτ?ecos(z2τ)+recosθ 与定子曲线方程共轭的转子曲线方程: {x2=x1cos(φ?ψ)?y1sin(φ?ψ)?esin(ψ)y2=x1sin(φ?ψ)+y1cos(φ?ψ)?ecos(ψ) 其中: 1. R=48.78 为导圆半径, 2. r=8.13 为滚圆半径, 3. z2=z1?1 为转子头数. 4. e=7.05 为偏心距, 5

python_matlab_样条插值求未知曲线的函数解析式

一.问题引入 对于给出如下的离散的数据点,现在想根据如下的数据点来推测x=5时的值,我们应该采用什么方法呢? 用于拟合样条函数的数据:x          f ( x)3.0 2.54.5 1.07.0 2.59.0 0.5   我们知道在平面上两个点确定一条直线,三个点确定一条抛物线(假设曲线的类型是抛物线),那么现在有四个点,我们很自然的会想到,既然两个点确定一条直线,那么最简单的方法就是,两个点之间连一条线,两个点之间连一条线,最后得到的一种折线图如下:这样我们只要确定x=5时的直线,把自

求出被矩形覆盖过至少两次的区域的面积(扫描线 + 线段树)

题目链接:https://vjudge.net/contest/332656#problem/J 思路: 这道题的大体的思路其实还是扫描线的思路. 就是我们要清晰之前我们所说的len 代表的是被覆盖了一次及以上次数的线段长度 为叙述方便,我们假设len[2]为当前线段被覆盖了两次的长度,len[1]为当前线段被覆盖了一次的长度,而len[0]就是这条线段的长度,并且满足len[2]+len[1]=len[0]. 首先,如果当前这条线段已经被覆盖了两次了,那么这条线段的len[2]就应该等于len

最大黑区域

题目:二值图像是由黑白两种像素组成的矩形点阵,图像识别的一个操作是求出图像中最大黑区域的面积.请设计一个程序完成这个操作.黑区域由黑像素组成,一个黑区域中的每个像素至少与该区域中的另一个像素相邻,规定一个像素仅与其上下左右的像素相邻.两个的不同的黑区域没有相邻的黑像素.一个黑区域的面积是其所含的像素数. 数据输入: 第一行有两个整数,n和m,1<=n,m<=100,分别表示二值图像的行和列. 后面的n行,每行有m个整数,都是0或1,第i行j列的数字表示二值图像的第i行j列的像素颜色,0表示白色

【Windows编程】系列第五篇:GDI图形绘制

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解.GDI可以绘制点.直线曲线.填充封闭区域.位图以及文本,其中文本部分已经在上一篇中将了,请参考[Windows编程]系列第三篇:文本字符输出. 跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我

UVa1643 - Angle and Squares(几何)

有n个正方形和一个角(均在第一象限中),使这些正方形与这个角构成封闭的阴影区域,求阴影区域面积的最大值. 分析: 直观上来看,当这n个正方形的对角线在一条直线上时,封闭区域的面积最大.(虽然我不太会证明,=_=||) 设所有正方形边长之和为L,OA.OB两直线方程分别为:y = k1x  y = k2x,设A(x1, k1x1), B(x2, k2x2),可列出方程: ,解得,相应的就得到AB两点坐标,用叉积算出△OAB的面积再减去这些正方形面积的一半就是答案. #include<cstdio>

UVa 1643 Angle and Squares

题意: 如图,有n个正方形和一个角(均在第一象限中),使这些正方形与这个角构成封闭的阴影区域,求阴影区域面积的最大值. 分析: 直观上来看,当这n个正方形的对角线在一条直线上时,封闭区域的面积最大.(虽然我不太会证明,=_=||) 设所有正方形边长之和为L,OA.OB两直线方程分别为:y = k1x  y = k2x,设A(x1, k1x1), B(x2, k2x2),可列出方程: ,解得,相应的就得到AB两点坐标,用叉积算出△OAB的面积再减去这些正方形面积的一半就是答案. 1 #includ

二、搜索

1.红与黑(codevs2806) 题目网址:http://codevs.cn/problem/2806/ 代码: var s:array[0..21,0..21] of char; i,j,sum,w,c,x,y:longint; procedure m(a,b:longint); begin inc(sum); s[a,b]:='#'; if(s[a+1,b]='.') then begin m(a+1,b); end; if(s[a-1,b]='.') then begin m(a-1,b

sgu209:Areas(计算几何)

题意: 给出一些直线.这些直线将平面分成好多块.求这些块中各个封闭图形的面积. 分析: ①我们需要求出两两直线的交点: ②再对每条直线上的交点排序,藉此来离散出所有的线段(正反两条边): ③对于连向一个点的几条线段,对它们进行极角排序,相邻的两条线段我们给它们之间连一条边,我们脑补一下应该可以知道怎样可以保证逆时针连边: ④找循环,利用叉积求面积. ps. vector的调试真心不爽- #include <cstdio> #include <cstring> #include &l