找回密码
 注册
Simdroid-非首页
查看: 172|回复: 7

如何求面积矩

[复制链接]
发表于 2011-5-11 10:35:58 | 显示全部楼层 |阅读模式 来自 大连理工大学
已知离散点 求其围成封闭图形的面积矩 怎么求 前几天讨教过极坐标法  现在面积矩应该如何求解  
据说比较简单的是 格林公式法 面积分 转换为 线积分 不知具体怎么求
发表于 2011-5-11 13:11:43 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
试试trapz
回复 不支持

使用道具 举报

发表于 2011-5-11 16:31:20 | 显示全部楼层 来自 陕西西安
1# dongsheng01
百度了一下,面积矩的定义是:截面各微元面积与其到截面某一指定轴线距离的乘积之积分。
所以你要先给大家讲明白你的选择的轴线是哪一条。
这里我假设你选择x轴为轴线。
然后,我认为你提的格林公式来解决的思路是对的,可以这么做。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-11 17:51:26 | 显示全部楼层 来自 大连理工大学
3# mhkmars 这个P、Q是任意选取的吧 我用这个xy算的误差有点大 程序如下
这些点围成的是一个长方形
clear
x=[1 -1 -1 1 0 0 -1 1]';
y=[1 1 -1 -1  1  -1 0 0]';
ss=0;  mx=0;
[m1,n1]=size(y);
points=[x;y];
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); %计算各个点的角度
[theta,i1]=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));
回复 不支持

使用道具 举报

发表于 2011-5-12 09:33:54 | 显示全部楼层 来自 陕西西安
4# dongsheng01
肯定不是随意取的嘛
因为我假设的是对于x轴的面积矩,所以必须是面积微元乘以到x轴的距离,也就是y了,所以才去Q=xy,P=0。这样运算简便
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-13 08:31:53 | 显示全部楼层 来自 大连理工大学
5# mhkmars 我的意思是 P、Q 选取只要是偏导相减等于x就行  比如我还可以取x^2/2  但是是不是有的选择会比较精确点 比方xy和x^2/2肯定是有精度差别的
回复 不支持

使用道具 举报

发表于 2011-5-13 13:36:55 | 显示全部楼层 来自 陕西西安
6# dongsheng01

  1. function y=mianjiju(x,y)
  2. plot(x,y)
  3. n=size(x,2);
  4. for i=1:n-1
  5.     k(i)=(x(i+1)-x(i))/(y(i+1)-y(i));
  6.     beijihanshu{i}=@(yy)(k(i)*(yy-y(i))+x(i)).*yy;
  7.     f(i)=quad(beijihanshu{i},y(i),y(i+1));
  8. end
  9. k(n)=(x(n)-x(1))/(y(n)-y(1));
  10. beijihanshu{n}=@(yy)(k(n)*(yy-y(1))+x(1)).*yy;
  11. f(n)=quad(beijihanshu{n},y(n),y(1));
  12. y=sum(f);
复制代码

以上是我按照Q=xy,P=0来算的,我取的x=[1 5 10 2];y=[1 2 5 3];
结果为:

  1. ans =
  2.    30.3333
复制代码

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

使用道具 举报

 楼主| 发表于 2011-5-14 09:26:27 | 显示全部楼层 来自 大连理工大学
7# mhkmars 我的程序前半部分就是 利用极坐标 将 所有点排序 开始给的点不是按逆时针或顺时针顺序来的
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-6 10:50 , Processed in 0.044251 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表