导航:首页 > 源码编译 > 封闭曲线算法

封闭曲线算法

发布时间:2022-09-05 19:12:16

㈠ matlab求封闭曲线的面积

用matlab如何求封闭曲线的面积?

一、将曲线离散化后求其封闭曲线的面积。例如,∫exp(-x^2)dx,求其x=-1,x=1围成的面积。

第一步,将x变量的范围【-1,1】,分成若干份,如

x=-1:0.01:1

第二步,计算y值,即

y=exp(-x.^2)

第三步,使用trapz函数,求其面积

S=trapz(x,y)

运行后得到,S=1.4936

二、利用定积分的方法求其封闭曲线的面积。例如,计算极坐标方程r=2acosθ(a>0)的曲线所围成的图形的面积。

第一步,根据平面图形面积公式,写出表达式,即

0.5*∫(2acosθ)^2dθ(积分下限为-π/2,积分上限为π/2)

第二步,使用int函数,求出其面积

syms x a

S=0.5*int((2*a*cos(x))^2,-pi/2,pi/2)

运行结果为 pi*a^2

㈡ L为平面上任意不经过原点的逆时针圆周,试计算封闭曲线积分∫L(xdy-ydx)/(x^2+4y^2

1、当原点不在曲线内时,P=-y/(x²+4y²),Q=x/(x²+4y²),P、Q在L内具有一阶连续偏导数
计算得:∂P/∂y=∂Q/∂x,由格林公式易得封闭曲线上积分为0,本题结果=0
2、当原点在曲线内时,此时P、Q在(0,0)无定义,所以上面的方法不能用。
作曲线L1:x²+4y²=ε²,逆时针,ε充分小,使得L1与L不相交;
用 L1- 表示L1的反向曲线(注意负号是上标)
则P、Q在(L+L1-)所围区域内具有一阶连续偏导数,可以使用格林公式
∫(L+L1-)(xdy-ydx)/(x^2+4y^2)
=∫∫ (∂Q/∂x-∂P/∂y)dxdy
=0
因此得:∫L(xdy-ydx)/(x^2+4y^2)=∫L1(xdy-ydx)/(x^2+4y^2)
下面计算L1上积分即可
∫L1(xdy-ydx)/(x^2+4y^2)
注意在L1上x²+4y²=ε²
=(1/ε²)∫L1 (xdy-ydx)
格林公式
=(1/ε²)∫∫ 2 dxdy
=(2/ε²)∫∫ 1 dxdy
被积函数为1,积分结果为区域面积,椭圆面积为:πab=πε²/2,其中a=ε,b=ε/2
=(2/ε²)*(πε²/2)

㈢ 谁知道Autocad 中如何计算多线条组成的封闭曲线的长度、面积

1、输入命令PE使多条线连成一体,然后命令LI,或AA即可查到该封闭曲线长度和面积,但注意曲线必须为封闭状态。2、若曲线中包含样条曲线,无法使用PE命令,可使用REG创建面域,再执行LI,或AA命令。

㈣ Autocad 中如何计算多线条组成的封闭曲线的长度,面积

1、先将封闭曲线转变成多义线(PL线)。命令“PE”。
2、选择这个闭合的多义线,按“ctrl+1”(特性),查看长度和面积。看下面的图:
这个方法比较快,即使不是直线段的闭合曲线,也可以查看面积和长度。
还有比较笨的方法就是,用“di”命令一个一个量长度,用“area”命令算面积。

㈤ 高等数学,计算第二型空间曲线时,如果曲线是封闭曲线,用参数法计算时,曲线有没有正负怎样才算是正向

按照格林公式定义,应该是被包围区域在曲线方向以左,曲线为正。
在曲线方向右侧,曲线为负。

㈥ 怎样用cad计算多个封闭曲线的总面积!

多个一起貌似不可以的,你可以单个选择一个按Ctrl+1来查看对象特性,有周长面积等等。如果都是矩形的话你可以把他们逐个排列在一起,把相交的线剪掉再把剩余的线用PE命令融合成一个形状再查看面积

㈦ 计算封闭曲线∫∫(z2+ z)dxdy,其中∑是z=√(x2+ y2)及z=h(h>0)所围成的

Σ为锥面z
=
√(x²
+
y²),z
=h
的外侧,即Σ是封闭的,可直接运用高斯公式
∫∫_(Σ)
(z²
+
z)
dxdy,外侧取
+
=
∫∫∫_(Ω)
(2z
+
1)
dxdydz
在计算三重积分这里,由于被积函数只是关于z的函数,所以优先考虑“先二后一”法
取横截面Dz为x²
+


z²,面积为∫∫_(Dz)
dxdy
=
πz²,0

z

h
所以∫∫∫_(Ω)
(2z
+
1)
dxdydz
=
∫(0,h)
(2z
+
1)
*
[
∫∫_(Dz)
dxdy
]
dz
=
∫(0,h)
(2z
+
1)
*
πz²
dz
=
π∫(0,h)
(2z³
+
z²)
dz
=
(1/6)h³(3h
+
2)
π
如果采用“先一后二”法,略麻烦,但思想比较简单
取Dxy:x²
+



∫∫∫_(Ω)
(2z
+
1)
dxdydz
=
∫∫_(Dxy)
dxdy
∫(√(x²+y²),h)
(2z
+
1)
dz
=
∫(0,2π)

∫(0,h)
r
dr
∫(r,h)
(2z
+
1)
dz
=
(1/6)h³(3h
+
2)
π

㈧ 贝塞尔曲线算法的详细内容

//从1开始,是因为第一个是控制点,如果曲线不封闭,那么第一个控制点是没有用的。
//每一段贝赛尔曲线由相邻的两个顶点和之间的两个控制点决定,所以频率为3(后一个顶点在下一组中还要使用)
for(i=1;i<count-2;i+=3){
BezierToPoly(&bezierPts,apt,precision); //拆分每一段
polyPt.Append(apt);//拆分完成,加入数组
}
//如果是封闭曲线,那么需要将最后一个顶点和第一个顶点以及最后一个控制点以及第一个控制点组成一组进行拆分
if(bClose){
CPoint ptBuffer[4];
ptBuffer[0] = bezierPts[count-2];
ptBuffer[1] = bezierPts[count-1];
ptBuffer[2] = bezierPts[0];
ptBuffer[3] = bezierPts[1];
BezierToPoly(&ptBuffer[0], apt,precision);
polyPt.Append(apt);
}
count = polyPt.GetSize();
i=0;
//过滤相邻的值相等的点(由于精度和误差,可能会有一些坐标值相同的相邻拆分点)
while(i<count-1){
if(polyPt ==polyPt[i+1]){
polyPt.RemoveAt(i+1);
count--;
continue;
}
i++;
}
return true;
}
//拆分贝赛尔曲线
bool InciseBezier(CPoint *pSrcPt, CPoint *pDstPt)
{
CPoint buffer[3][3];
int i;
for(i=0;i<3;i++){
buffer[0] = pSrcPt + pSrcPt[i+1];
buffer[0].x /=2;
buffer[0].y /=2;
}
for(i=0;i<2;i++){
buffer[1] = buffer[0] + buffer[0][i+1];
buffer[1].x /=2;
buffer[1].y /=2;
}
buffer[2][0] = buffer[1][0] + buffer[1][1];
buffer[2][0].x /=2;
buffer[2][0].y /=2;
pDstPt[0]=pSrcPt[0];
pDstPt[1]=buffer[0][0];
pDstPt[2]=buffer[1][0];
pDstPt[3]=buffer[2][0];
pDstPt[4]=buffer[1][1];
pDstPt[5]=buffer[0][2];
pDstPt[6]=pSrcPt[3];
return true;
}
//拆分一组贝赛尔曲线段
bool BezierToPoly(CPoint *pSrcPts,CPtArray &polyPt,int precision)
{
polyPt.RemoveAll();
polyPt.SetSize(4);
polyPt[0] = pSrcPts[0];
polyPt[1] = pSrcPts[1];
polyPt[2] = pSrcPts[2];
polyPt[3] = pSrcPts[3];
CPoint ptBuffer[7];
int i,j,count =4;
bool bExit;
while(true){
bExit = true;
for(i=0;i<count-1;i+=3){
// if(GetBezierGap(&polyPt)>precision){
if(!EndBezierCut(&polyPt, precision)){
bExit = false;
InciseBezier(&polyPt, ptBuffer);
polyPt.RemoveAt(i+1,2);
polyPt.InsertAt(i+1,ptBuffer[1],5);
for(j=0;j<4;j++)
polyPt[i+2+j] = ptBuffer[2+j];
i += 3;
count += 3;
}
}
if(bExit)
break;
}
count = polyPt.GetSize();
i=0;
while(i<count-1){
if(polyPt ==polyPt[i+1]){
polyPt.RemoveAt(i+1);
count--;
continue;
}
i++;
}
return true;
}
/计算贝赛尔曲线两个顶点的纵向和横向的最大距离
int GetBezierGap(CPoint *p)
{
int gap = 0;
for(int i=1;i<4;i++){
if(abs(p.x-p[i-1].x)>gap)
gap=abs(p.x-p[i-1].x);
if(abs(p.y-p[i-1].y)>gap)
gap=abs(p.y-p[i-1].y);
}
return gap;
}
//判断是否可以终止更精细得拆分
bool EndBezierCut(CPoint *ptBezier, int nExtent)
{
double C,dx,dy,delt,delt1,delt2;
if (nExtent<2)
nExtent = 2;
dx = (double)(ptBezier[3].x - ptBezier[0].x);
dy = (double)(ptBezier[3].y - ptBezier[0].y);
C = dx * ptBezier[0].y - dy * ptBezier[0].x;
delt = (double)nExtent*nExtent*(dy*dy+dx*dx);
delt1 = dy * ptBezier[1].x - dx * ptBezier[1].y + C;
delt2 = dy * ptBezier[2].x - dx * ptBezier[2].y + C;
delt1 = delt1 * delt1;
delt2 = delt2 * delt2;
if (delt1 > delt || delt2 > delt)
return FALSE;
else
return TRUE;
}

㈨ 有没有能计算任意封闭曲线的公式 不好意思,关于任意封闭曲线的周长和面积.

周长就是用在那个曲线方程求第一类曲线积分,求任意曲面的面积就是对面方程求第一类曲面积分.楼上那个乱说的,第二类曲线和曲面积分一般才用格林公式和高斯公式解.

阅读全文

与封闭曲线算法相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:769
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:844
安卓怎么下载60秒生存 浏览:803
外向式文件夹 浏览:240
dospdf 浏览:431
怎么修改腾讯云服务器ip 浏览:392
pdftoeps 浏览:496
为什么鸿蒙那么像安卓 浏览:736
安卓手机怎么拍自媒体视频 浏览:186
单片机各个中断的初始化 浏览:724
python怎么集合元素 浏览:481
python逐条解读 浏览:833
基于单片机的湿度控制 浏览:499
ios如何使用安卓的帐号 浏览:883
程序员公园采访 浏览:812
程序员实战教程要多长时间 浏览:979
企业数据加密技巧 浏览:135
租云服务器开发 浏览:814
程序员告白妈妈不同意 浏览:337
攻城掠地怎么查看服务器 浏览:601