函数在任意三角区域二重积分的计算

三角区域变换

设有三角形△ABC\triangle ABC△ABC其中A:(x1,y1),B:(x2,y2),C(x3,y3)A:(x_1,y_1),B:(x_2,y_2),C(x_3,y_3)A:(x1​,y1​),B:(x2​,y2​),C(x3​,y3​),现在我们将三角形以点AAA为定点,旋转三角形△ABC\triangle ABC△ABC一定角度θ\thetaθ,记旋转后的三角形为△A′B′C′\triangle A'B'C'△A′B′C′,使得边A′B′A'B'A′B′与 yyy 轴平行(即x1′=x2′x_1'=x_2'x1′​=x2′​)且y1′<y2′y_1'<y_2'y1′​<y2′​,其中△ABC≅△A′B′C′,x1=x1′,y1=y1′\triangle ABC\cong\triangle A'B'C',x_1=x_1',y_1=y_1'△ABC≅△A′B′C′,x1​=x1′​,y1​=y1′​。

  • 目的:使得变换后的三角形从纵向上看,边A∗C∗A^*C^*A∗C∗为下边界,B∗C∗B^*C^*B∗C∗为上边界。

旋转变换:

设点P:(x,y)P:(x,y)P:(x,y)围绕点A(x1,y2)A(x_1,y_2)A(x1​,y2​)旋转角度θ\thetaθ后得到P′:(x′,y′)P':(x',y')P′:(x′,y′),则有

[x′y′]=[cos⁡θ−sin⁡θsin⁡θcos⁡θ][x−x1y−y1]+[x1y1]\begin{bmatrix}x' \\y' \end{bmatrix}=\begin{bmatrix}\cos\theta&-\sin\theta \\\sin\theta &\cos\theta\end{bmatrix}\begin{bmatrix}x-x_1 \\y-y_1 \end{bmatrix}+\begin{bmatrix}x_1 \\y_1 \end{bmatrix}[x′y′​]=[cosθsinθ​−sinθcosθ​][x−x1​y−y1​​]+[x1​y1​​]

对应的逆变换为(这个后面求JacobiJacobiJacobi行列式时会使用到,其实这个变换的JacobiJacobiJacobi行列式为111):

[xy]=[cos⁡θsin⁡θ−sin⁡θcos⁡θ][x′−x1y′−y1]+[x1y1]\begin{bmatrix}x \\y \end{bmatrix}=\begin{bmatrix}\cos\theta&\sin\theta \\-\sin\theta &\cos\theta\end{bmatrix}\begin{bmatrix}x'-x_1 \\y'-y_1 \end{bmatrix}+\begin{bmatrix}x_1 \\y_1 \end{bmatrix}[xy​]=[cosθ−sinθ​sinθcosθ​][x′−x1​y′−y1​​]+[x1​y1​​]

进而旋转三角形是简单的,只需以AAA点为定点,角度θ\thetaθ由向量AB⃗=(x2−x1,y2−y1)\vec{AB}=(x_2-x_1,y_2-y_1)AB=(x2​−x1​,y2​−y1​)与yyy的正半轴的夹角确定,CCC围绕AAA旋转θ\thetaθ角度即可。

  1. 当x2−x1>0x_2-x_1>0x2​−x1​>0时,α=arctan⁡y2−y1x2−x1\alpha = \arctan\frac{y_2-y_1}{x_2-x_1}α=arctanx2​−x1​y2​−y1​​是向量AB⃗\vec{AB}AB与xxx正半轴的夹角,此时AB⃗\vec{AB}AB需要旋转θ=π/2−α\theta=\pi/2-\alphaθ=π/2−α方能满足条件(条件:x1′=x2′x_1'=x_2'x1′​=x2′​且y1′<y2′y_1'<y_2'y1′​<y2′​);
  2. 当x2−x1<0x_2-x_1<0x2​−x1​<0时,α=arctan⁡y2−y1x2−x1\alpha = \arctan\frac{y_2-y_1}{x_2-x_1}α=arctanx2​−x1​y2​−y1​​是向量AB⃗\vec{AB}AB与xxx负半轴的夹角,此时AB⃗\vec{AB}AB需要旋转θ=−π/2−α\theta=-\pi/2-\alphaθ=−π/2−α方能满足条件(条件:x1′=x2′x_1'=x_2'x1′​=x2′​且y1′<y2′y_1'<y_2'y1′​<y2′​);
  3. 当x2−x1=0x_2-x_1=0x2​−x1​=0时,(1)若y1<y2y_1<y_2y1​<y2​,令θ=0\theta=0θ=0 ,即此时满足条件,无需选择;(2)若y1>y2y_1>y_2y1​>y2​,令θ=pi\theta=piθ=pi ,即将三角形以AAA为定点旋转角度π\piπ即可满足条件(条件:x1′=x2′x_1'=x_2'x1′​=x2′​且y1′<y2′y_1'<y_2'y1′​<y2′​)。
实验例子1

绘制AB⃗=(x2−x1,y2−y1)\vec{AB}=(x_2-x_1,y_2-y_1)AB=(x2​−x1​,y2​−y1​)的四种情况的三角形以及旋转后的三角形

x2−x1>0,y2−y1>0x_2-x_1>0,y_2-y_1>0x2​−x1​>0,y2​−y1​>0 x2−x1<0,y2−y1>0x_2-x_1<0,y_2-y_1>0x2​−x1​<0,y2​−y1​>0
x2−x1<0,y2−y1<0x_2-x_1<0,y_2-y_1<0x2​−x1​<0,y2​−y1​<0 x2−x1>0,y2−y1<0x_2-x_1>0,y_2-y_1<0x2​−x1​>0,y2​−y1​<0
实验例子2

绘制AB⃗=(x2−x1,y2−y1)\vec{AB}=(x_2-x_1,y_2-y_1)AB=(x2​−x1​,y2​−y1​)的两种一般情况的三角形以及旋转后的三角形

x2−x1=0,y2−y1>0x_2-x_1=0,y_2-y_1>0x2​−x1​=0,y2​−y1​>0 x2−x1=0,y2−y1<0x_2-x_1=0,y_2-y_1<0x2​−x1​=0,y2​−y1​<0
  • 从图中易得对于变换后的三角形能够契合上述目的,即边A′C′A'C'A′C′为下边界,B′C′B'C'B′C′为上边界。
实例代码
clc,clear
% x = [1 3 4 1];
% y = [1 2 -1 1];
% x = [1 -3 -4 1];
% y = [1 2 -1 1];
% x = [1 -2 -4 1];
% y = [1 -4 3 1];
% x = [1 3 -4 1];
% y = [1 -2 1 1];
% x = [1 1 3 1];
% y = [1 2 2 1];
x = [1,1,3,1];
y = [1,-2,2,1];
X = x(2:end)-x(1);
Y = y(2:end)-y(1);
if X(1)>0sita = pi/2-atan(Y(1)/X(1));
elseif X(1)<0sita = -pi/2-atan(Y(1)/X(1));
elseif Y(1)>0sita = 0;elsesita = pi;end
end
A = [cos(sita) -sin(sita)sin(sita) cos(sita)];
P =A*([x;y]-[x(1);y(1)])+[x(1);y(1)];
plot(x,y)
hold on
plot(P(1,:),P(2,:))
tag1 = {'A','B','C'};
tag2 = ["A'","B'","C'"];
for i = 1:3text(x(i),y(i),tag1{i},...'HorizontalAlignment','right',...'Color','black')text(P(1,i),P(2,i),tag2{i},...'HorizontalAlignment','left',...'Color','red')
end
axis equal

三角区域的二重积分

使用到的内置函数:integral2

函数基本用法及所需参数:I=integral2(fun,xmin,xmax,ymin,ymax)I = integral2(fun,xmin,xmax,ymin,ymax)I=integral2(fun,xmin,xmax,ymin,ymax) 在平面区域 xmin≤x≤xmaxx_{min} ≤ x ≤ x_{max}xmin​≤x≤xmax​ 和 $y_{min(x)} ≤ y ≤ y_{max(x)} $上逼近函数 z=fun(x,y)z = fun(x,y)z=fun(x,y)的积分。

记旋转后的三角形为△A′B′C′\triangle A'B'C'△A′B′C′其中A:(x1′,y1′),B:(x2′,y2′),C(x3′,y3′)A:(x_1',y_1'),B:(x_2',y_2'),C(x_3',y_3')A:(x1′​,y1′​),B:(x2′​,y2′​),C(x3′​,y3′​),设边A′C′A'C'A′C′所在直线方程为y1(x′)=a1x′+b1y_1(x')=a_1x'+b_1y1​(x′)=a1​x′+b1​,B′C′B'C'B′C′所在直线方程为y2(x′)=a2x′+b2y_2(x')=a_2x'+b_2y2​(x′)=a2​x′+b2​,根据上述三角形的变换,可以将变换后的三角区域书写为Ω1={(x′,y′)∣min(x1′,x2′,x3′)≤x′≤max(x1′,x2′,x3′),y1(x′)≤y′≤y2(x′)}\Omega_1=\{(x',y')|min(x_1',x_2',x_3')≤x' ≤ max(x_1',x_2',x_3'),y_1(x') ≤ y' ≤ y_2(x')\}Ω1​={(x′,y′)∣min(x1′​,x2′​,x3′​)≤x′≤max(x1′​,x2′​,x3′​),y1​(x′)≤y′≤y2​(x′)}

根据积分的变量替换规则有

∬Ωf(x,y)dxdy=∬Ω1f(x(x′,y′),y(x′,y′))∣∂x/∂x′∂x/∂y′∂y/∂x′∂y/∂y′∣dx′dy′\iint_{\Omega}f(x,y)dxdy=\iint_{\Omega_1}f(x(x',y'),y(x',y'))\begin{vmatrix} \partial x/\partial x'& \partial x/\partial y'\\ \partial y/\partial x'& \partial y/\partial y' \end{vmatrix}dx'dy'∬Ω​f(x,y)dxdy=∬Ω1​​f(x(x′,y′),y(x′,y′))∣∣∣∣​∂x/∂x′∂y/∂x′​∂x/∂y′∂y/∂y′​∣∣∣∣​dx′dy′

其中

[xy]=[cos⁡θsin⁡θ−sin⁡θcos⁡θ][x′−x1y′−y1]+[x1y1]\begin{bmatrix}x \\y \end{bmatrix}=\begin{bmatrix}\cos\theta&\sin\theta \\-\sin\theta &\cos\theta\end{bmatrix}\begin{bmatrix}x'-x_1 \\y'-y_1 \end{bmatrix}+\begin{bmatrix}x_1 \\y_1 \end{bmatrix}[xy​]=[cosθ−sinθ​sinθcosθ​][x′−x1​y′−y1​​]+[x1​y1​​],

因此

∣∂x/∂x′∂x/∂y′∂y/∂x′∂y/∂y′∣=1\begin{vmatrix} \partial x/\partial x'& \partial x/\partial y'\\ \partial y/\partial x'& \partial y/\partial y' \end{vmatrix}=1∣∣∣∣​∂x/∂x′∂y/∂x′​∂x/∂y′∂y/∂y′​∣∣∣∣​=1

所以三角区域上f(x,y)f(x,y)f(x,y)二重积分为I=integral2(fun,xmin,xmax,ymin,ymax)I = integral2(fun,xmin,xmax,ymin,ymax)I=integral2(fun,xmin,xmax,ymin,ymax) ,其中:

{xmin=min(x1′,x2′,x3′)xmax=max(x1′,x2′,x3′)ymin=y1(x′)ymax=y2(x′)fun(x,y)=fun(x(x′,y′),y(x′,y′))\left\{\begin{matrix} xmin= min(x_1',x_2',x_3')\\ xmax = max(x_1',x_2',x_3')\\ ymin = y_1(x')\\ymax = y_2(x')\\fun(x,y)=fun(x(x',y'),y(x',y'))\end{matrix}\right.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​xmin=min(x1′​,x2′​,x3′​)xmax=max(x1′​,x2′​,x3′​)ymin=y1​(x′)ymax=y2​(x′)fun(x,y)=fun(x(x′,y′),y(x′,y′))​

实验例子:

这里我们就随意举个例子,算三角形的面积,即fun(x,y)=1fun(x,y)=1fun(x,y)=1,三角形的三个顶点为A:(1,1),B:(3,4),C(5,2)A:(1,1),B:(3,4),C(5,2)A:(1,1),B:(3,4),C(5,2),该三角形的面积为555,下面是代码跑出来的结果:

实例代码
clc,clear
% 该函数用于求三角区域上函数的积分
point = [1,3,5;1,4,2];
x = point(1,:);
y = point(2,:);
X = x(2:3) - x(1);
Y = y(2:3) - y(1);
if X(1)>0sita = pi/2-atan(Y(1)/X(1));
elseif X(1)<0sita = -pi/2-atan(Y(1)/X(1));
elseif Y(1)>0sita = 0;elsesita = pi;end
end
A = [cos(sita) -sin(sita)sin(sita) cos(sita)];
P =A*([x;y]-[x(1);y(1)])+[x(1);y(1)];
xp = P(1,:);
yp = P(2,:);
f = @(t,s) t-t+s-s+1;
% 本来上面的f应该写为 f = @(t,s) 1的,但是为了保证输入和输出具有相同的维度,我们做了如上的处理
% 不然在调用integral2函数时会报输入与输出大小不匹配的错误,导致程序崩溃。
fun = @(t,s) f(cos(sita)*(t-x(1))+sin(sita)*(s-y(1))+x(1),-sin(sita)*(t-x(1))+cos(sita)*(s-y(1))+y(1));
y_down = @(t) (yp(3)-yp(1))/(xp(3)-xp(1)).*(t-xp(1)) + yp(1);
y_up = @(t) (yp(3)-yp(2))/(xp(3)-xp(2)).*(t-xp(2)) + yp(2);
I = integral2(fun,min(xp),max(xp),y_down,y_up);
disp('积分值')
disp(I)

最后,附上代码中关于注释所说的错误,我们仅仅将fff写为f=@(t,s)1f=@(t,s) 1f=@(t,s)1;

有兴趣的小伙伴可以自己修改了观察。当然,如果你给出的f(x,y)f(x,y)f(x,y)不是常数,也不是单变量函数(即f(x,y)=f(x)f(x,y) = f(x)f(x,y)=f(x)或者f(x,y)=f(y)f(x,y)=f(y)f(x,y)=f(y)的情形),那么是不存在上述的错误类型的。

函数在任意三角区域二重积分的计算相关推荐

  1. 如何将图片中的一个任意四边形区域的图像转化为矩形【附源码】

    将一幅图像中的任意四边形区域映射为矩形区域.比如,我们有时拍照片,因为角度的问题,本来是矩形的广告牌,在照片中可能表现为一个任意的四边形.事实上,在现实中本来是矩形的物体,在照片中往往呈现为任意四边形 ...

  2. 第十章 第二节二重积分的计算(同济版)

    第二节 二重积分的计算 一.平面区域的表示--其实就是线性规划 平面区域的表示{X型区域Y型区域平面区域的表示 \left\{ \begin{matrix} X型区域\\ Y型区域 \end{matr ...

  3. 在Excel中通过VBA实现不定区域的标准差计算

    需求:在excel中计算固定区域的均值有很多实现方式,但是对于跟随一定条件变化的区域,要求解标准差却很难实现. 解决方案:通过VBA的程序,根据条件改变选定的单元格区域,实现不定区域的标准差计算. 程 ...

  4. python区域找图命令_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  5. python显示图片列表_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  6. 高数 07.08 二重积分的计算

    §第七章第八节二重积分的计算 \color{blue}{\S 第七章 第八节 二重积分的计算} 一.利用直角坐标计算二重积分 二.利用极坐标计算二重积分 一.利用直角坐标计算二重积分 \color{b ...

  7. 定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下: (1)TRI的成员如下:  私有数据成员 

    题目要求: 定义一个三角形类(TRI)及其派生类三角柱体类(COL).其中三角形类可以计算三角形的面积和周长:三角柱体类可以计算柱体的体积和表面积.其具体要求如下: (1)TRI的成员如下: 私有数据 ...

  8. 13. 区域间距离计算

    区域间距离计算 1.点和点之间的距离计算 distance_pp (Row1,Column1 ,Row2 ,Column2 , Distance) 2.点到直线的距离 distance_pl() 3. ...

  9. 设计一个用于填充n阶方阵的上三角区域的程序。填充规则是:使用1,2,3...的自然数列,从左上角开始, 按照顺时针方向螺旋填充

    题目7:方阵的主对角线之上称为"上三角". 请你设计一个用于填充n阶方阵的上三角区域的程序.填充规则是:使用1,2,3-的自然数列,从左上角开始, 按照顺时针方向螺旋填充. 例如: ...

最新文章

  1. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例
  2. 傅里叶,请再帮我们一次吧....
  3. python空字典对象相当于false吗_python怎么判断某一对象是否为字典
  4. jQuery插件之Cookie
  5. 二十、Threaded I/O模型
  6. 解决ajax劫持,Ajax实现检测网站劫持的方法
  7. Executors创建的4种线程池的使用
  8. hdu-2955(01背包)Robberies
  9. cocos2d-x游戏开发(六)自动释放池
  10. python 清空文件夹_Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”...
  11. python获取当前目录_又有几个Python小技巧分享
  12. html怎样在一张图片里写字,用HTML代码在图片上写字
  13. 图书馆管理系统项目思路
  14. Ubuntu中让SSH自动重连
  15. 显卡(N卡)内存被占用如何处理?
  16. c语言topic函数,ROS学习笔记(一) 话题topic的定义与使用(publisher 和 subscriber)
  17. mysql 异常码1903_Mysql 异常。 寻求帮助
  18. 诸侯安置 简单的递推
  19. JPA 关联表添加关联条件@Where、@WhereJoinTable()
  20. Teradata到GBase 8a迁移总结

热门文章

  1. (附源码)springboot建材市场销售管理系统 毕业设计 191544
  2. vue项目搭建及打包运行
  3. java Python+Django的工厂设备管理系统 Pycharm
  4. 热门光学软件之初体验网络课程系列大纲2
  5. 一个创业公司的融资流程?
  6. Linux切换用户su root 与 su - root 的区别
  7. c语言中-128补码,-128 的 原码,反码,补码
  8. php微信分享带缩略图,静态页面实现微信分享带缩略图、标题和描述
  9. python url中文转码_python实现中文转换url编码的方法
  10. CC js----android 平台 java与js互调 , ios平台 Objective-c与js互调的例子