作业帮 > 数学 > 作业

Matlab 积分区域为任意四边形

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:数学作业 时间:2024/04/27 11:13:51
Matlab 积分区域为任意四边形
我求一个函数的二重积分,积分函数很简单.但是积分区域为平面上给定的四个节点.例如1、(x1,y1).4、(x4,y4),感觉处理上很麻烦,
积分函数为:z=2(x-y^2)^3
我想求出这个积分的解,积分区域为任意的四边形
Matlab 积分区域为任意四边形
计算速度较慢,请耐心等待
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命令求解二维积分。