dongsheng01 发表于 2011-5-11 10:35:58

如何求面积矩

已知离散点 求其围成封闭图形的面积矩 怎么求 前几天讨教过极坐标法现在面积矩应该如何求解
据说比较简单的是 格林公式法 面积分 转换为 线积分 不知具体怎么求

messenger 发表于 2011-5-11 13:11:43

试试trapz

mhkmars 发表于 2011-5-11 16:31:20

1# dongsheng01
百度了一下,面积矩的定义是:截面各微元面积与其到截面某一指定轴线距离的乘积之积分。
所以你要先给大家讲明白你的选择的轴线是哪一条。
这里我假设你选择x轴为轴线。
然后,我认为你提的格林公式来解决的思路是对的,可以这么做。

1.令Q=xy,P=0;
2。得到线积分后,你将其分为几段,就是你的散点的折线,在这个上面做完积分相加就是答案了

dongsheng01 发表于 2011-5-11 17:51:26

3# mhkmars 这个P、Q是任意选取的吧 我用这个xy算的误差有点大 程序如下
这些点围成的是一个长方形
clear
x=';
y=';
ss=0;mx=0;
=size(y);
points=;
x0=mean(x);y0=mean(y); % the center point
r=sqrt((x-x0).^2+(y-y0).^2); % the radius
theta=acos((x-x0)./r); %the angle
index=(y-y0)<0;
theta(index)=2*pi-theta(index); %计算各个点的角度
=sort(theta);
r1=r(i1);
xi=x0+r1.*cos(theta);
yi=y0+r1.*sin(theta);
for i=1:m1-1
ss=ss+0.5*(-yi(i)*(xi(i+1)-xi(i))+xi(i)*(yi(i+1)-yi(i)));
mx=mx+xi(i)*yi(i)*(yi(i+1)-y(i));
end
ss=ss+0.5*(-yi(m1)*(xi(1)-xi(m1))+xi(m1)*(yi(1)-yi(m1)));
mx=mx+xi(m1)*yi(m1)*(yi(1)-y(m1));

mhkmars 发表于 2011-5-12 09:33:54

4# dongsheng01
肯定不是随意取的嘛
因为我假设的是对于x轴的面积矩,所以必须是面积微元乘以到x轴的距离,也就是y了,所以才去Q=xy,P=0。这样运算简便

dongsheng01 发表于 2011-5-13 08:31:53

5# mhkmars 我的意思是 P、Q 选取只要是偏导相减等于x就行比如我还可以取x^2/2但是是不是有的选择会比较精确点 比方xy和x^2/2肯定是有精度差别的

mhkmars 发表于 2011-5-13 13:36:55

6# dongsheng01

function y=mianjiju(x,y)
plot(x,y)
n=size(x,2);
for i=1:n-1
    k(i)=(x(i+1)-x(i))/(y(i+1)-y(i));
    beijihanshu{i}=@(yy)(k(i)*(yy-y(i))+x(i)).*yy;
    f(i)=quad(beijihanshu{i},y(i),y(i+1));
end
k(n)=(x(n)-x(1))/(y(n)-y(1));
beijihanshu{n}=@(yy)(k(n)*(yy-y(1))+x(1)).*yy;
f(n)=quad(beijihanshu{n},y(n),y(1));
y=sum(f);

以上是我按照Q=xy,P=0来算的,我取的x=;y=;
结果为:

ans =
   30.3333

需要注意的是,x,y对应为一个坐标,并且是与你的点的连线顺序有关的。我看你贴的程序里面x,y的顺序不太对,而且程序你也没给全。你可以按照你的P,Q的取法编个程序比较一下

dongsheng01 发表于 2011-5-14 09:26:27

7# mhkmars 我的程序前半部分就是 利用极坐标 将 所有点排序 开始给的点不是按逆时针或顺时针顺序来的
页: [1]
查看完整版本: 如何求面积矩