Matlab 积分区域为任意四边形 积分问题 求高手解答 在线等!!!
我求一个函数的二重积分,积分函数很简单。但是积分区域为平面上给定的四个节点。例如1、(x1,y1)......4、(x4,y4),感觉处理上很麻烦,希望能有高手帮忙解答下...
我求一个函数的二重积分,积分函数很简单。但是积分区域为平面上给定的四个节点。例如1、(x1,y1)......4、(x4,y4),感觉处理上很麻烦,希望能有高手帮忙解答下!
积分函数为:z=2(x-y^2)^3
我想求出这个积分的解,积分区域为任意的四边形
解决问题 我再追加20分!
谢谢!!! 展开
积分函数为:z=2(x-y^2)^3
我想求出这个积分的解,积分区域为任意的四边形
解决问题 我再追加20分!
谢谢!!! 展开
2个回答
展开全部
计算速度较慢,请耐心等待
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)%这就是你要的结果
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命令求解二维积分。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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
三个点组成两个向量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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询