Matlab 积分区域为任意四边形 积分问题 求高手解答 在线等!!!

我求一个函数的二重积分,积分函数很简单。但是积分区域为平面上给定的四个节点。例如1、(x1,y1)......4、(x4,y4),感觉处理上很麻烦,希望能有高手帮忙解答下!
积分函数为:z=2(x-y^2)^3
我想求出这个积分的解,积分区域为任意的四边形
解决问题 我再追加20分!
谢谢!!!

第1个回答  2013-10-20
计算速度较慢,请耐心等待

clear;clc

pos=[0 -2;2 0;0 2;-2 0];%凸多边形顶点,自己改
f=@(x,y)2*(x-y.^2).^3;%积分函数
X=pos(:,1);Y=pos(:,2);
k=convhull(X,Y);
X=X(k);Y=Y(k);
fill(X,Y,'g');title('积分区域');
xmin=min(X);xmax=max(X);
ymin=min(Y);ymax=max(Y);
g=@(x,y)f(x,y).*inpolygon(x,repmat(y,size(x)),X,Y);
val=quadl(@(y)arrayfun(@(y)quadl(@(x)g(x,y),xmin,xmax),y),ymin,ymax)%这就是你要的结果追问

朋友,你好!
谢谢你的回答,可不可以问下程序设计的基本思路?后面几行不是很明白! 谢谢啦!

追答

基本思路很简单,quadl命令求解一维数值积分,于是多次利用quadl可以求解矩形区域的多维数值积分,那么怎么求解非矩形区域的积分呢?只要让指定区域外的函数值等于0就可以了,倒数第二行就是干这个事情,最后一行就是利用两次quald命令求解二维积分。

本回答被提问者采纳
第2个回答  2013-10-20
拆成两个三角形求,(1 2 3) 和 (4 2 3)
三个点组成两个向量a=(x2-x1,y2-y1), b=(x3-x1,y3-y1);
x*i+y*j=k(a*(1-t)+b*t) 可以扫描到三角形内所有的点,其中
k=0~1
t=0~1
将原二重积分化为两个定常数区间上的积分,可以分离变量,简化计算。
x=k((x2-x1)*(1-t)+(x3-x1)*t)+x1
y=k((x2-x1)*(1-t)+(x3-x1)*t)+y1

matlab离散数据积分怎么做?高手请进!!!
楼主请您明白一点,sin(t)的不定积分是-cos(t)+C,C是任意常数,而用数值方法作出来的是定积分,是sin(t)从0积到t的积分,因此在t=0时,就是0。根据牛顿-莱布尼茨定理,其实积出来的是-cos(t)+cos(0)即1-cos(t),这才是定积分的函数曲线。从你的贴图上看,matlabguy的结果和我的结果也...

相似回答