導航:首頁 > 源碼編譯 > 封閉曲線演算法

封閉曲線演算法

發布時間: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
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:843
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:430
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:495
為什麼鴻蒙那麼像安卓 瀏覽:735
安卓手機怎麼拍自媒體視頻 瀏覽:185
單片機各個中斷的初始化 瀏覽:724
python怎麼集合元素 瀏覽:481
python逐條解讀 瀏覽:833
基於單片機的濕度控制 瀏覽:499
ios如何使用安卓的帳號 瀏覽:882
程序員公園采訪 瀏覽:812
程序員實戰教程要多長時間 瀏覽:979
企業數據加密技巧 瀏覽:135
租雲伺服器開發 瀏覽:814
程序員告白媽媽不同意 瀏覽:335
攻城掠地怎麼查看伺服器 瀏覽:601