用几种数值积分的方法计算西藏聂荣县面积

摘要:利用测量地图所得数据,根据所学插值和数值积分的方法,在MATLAB上画出地图,并计算地图边界曲线积分,将所求积分值代入地图面积推导公式,算出地图所表示的实际面积。

关键词:面积,插值,积分,MATLAB

1.原始数据的测量

图1是中国西藏聂荣县的地图,为了算出它的土地面积,首先对地图作如下测量:以由西向东方向为x轴,由南向北方向为y轴,选择方便的原点,并将从最西边界点到最东边界点在x轴上的区间适当地划分为若干段,在每个分点的y方向测出南边界点和北边界点的y轴坐标y1,y2,这样就得到了表1的数据。

表1 地图边界点数据

X0 0.9 1.3 1.7 2.1 2.6 3.0 3.2 3.3 3.5 4.0 4.6 5.5 5.5

Y1 6.5 6.0 5.6 5.6 5.0 4.5 4.2 4.1 4.1 3.9 3.6 3.0 3.4

Y2 6.5 7.3 7.2 7.3 7.7 7.3

7.6 9.9 10.1 10.5 10.2 9.8 9.7

X0 6.0 6.3 6.6 7.0 7.3 7.8 8.1 8.4 8.8 9.3 9.6 10.0 10.2

Y1 3.5 3.5 3.5 3.4 3.1 3.2 3.4 3.3 3.3 3.8 3.2 2.8 2.5

Y2 8.8 8.6 8.2 7.7 7.5 7.7 8.2 8.9 8.2 9.7 9.7 9.7 10.0

X0 10.6 10.8 11.1 11.5 11.7 12.0 12.5 12.9 13.6 14.0 14.5

Y1 2.2 2.4 2.6 2.0 2.6 2.9 2.9 3.4 1.5 1.1 1.0

Y2 10.0 10.4 10.3 10.3 10.5 10.5 10.4 10.2 9.6 9.7 8.9

X0 15.1 15.6 16.1 16.7 17.0 17.5 17.6 17.8

Y1 0.7 1.9 1.8 2.2 2.6 2.6 2.7 3.0

Y2 7.9 7.6 5.9 5.8 3.4 3.3 3.2 3.0

2.面积计算公式的推导

可把地图看作两条交于最西边界点a和最东边界点b的曲线所围成的图形,记靠南的一条曲线为L1,记靠北的一条曲线为L2。

首先根据插值法在MATLAB上画出L1、L2的图形,具体做法是:利用表1的数据,把(x0,y1)看作L1上的已知节点,用分段线性插值或者三次样条插值求出a、b之间步长为h=0.1的未知插值点x的插值y01,再用plot函数画出点(x,y01)所连成的曲线即L1;利用表1的数据,把(x0,y2)看作L2上的已知节点,用分段线性插值或者三次样条插值求出a、b之间步长为0.1的未知插值点x的插值y02,再用plot函数画出点(x,y02)所连成的曲线即L2。然后计算曲线L1、L2的积分,并求其差值即为所求地图面积,具体做法是:利用h、y01,根据梯形公式或者辛普森公式求出L1的曲线积分z1,利用h、y02,根据梯形公式或者辛普森公式求出L2的曲线积分z2,两曲线积分之差z2-z1即为所求地图面积。最后根据地图比例尺1:1000000换算出地图所表示的土地实际面积S:

S=(L2的曲线积分-L1的曲线积分)×100

=(z2-z1)×100 (平方公里)

3.MATLAB编程

3.1用三次样条插值和复化辛普森公式计算:

>>clear %清除当前工作区的所有变量

>> x0=[0.9 1.3 1.7 2.1 2.6 3 3.2

3.3 3.5 4.0 4.6 5.0 5.5 6.0 6.3 6.6 7.0 7.3 7.8 8.1 8.4 8.8 9.3 9.6

10.0 10.2 10.6 10.8 11.1 11.5 11.7 12.0 12.5 12.9 13.6 14.0 14.5

15.1 15.6 16.1 16.7 17.0 17.5 17.6 17.8];

>> y1=[6.5 6.0 5.6 5.6 5.0 4.5 4.2

4.1 4.1 3.9 3.6 3.0 3.4 3.5 3.5 3.5 3.4 3.1 3.2 3.4 3.3 3.3 3.8 3.2

2.8 2.5 2.2 2.4 2.6 2.0 2.6 2.9 2.9 3.4 1.5 1.1 1.0 0.7 1.9 1.8 2.2

2.6 2.6 2.7 3.0]; %已知节点(x0,y1)

>> y2=[6.5 7.3 7.2 7.3 7.7 7.3 7.6

9.9 10.1 10.5 10.2 9.8 9.7 8.8 8.6 8.2 7.7 7.5 7.7 8.2 8.9 8.2 9.7

9.7 9.7 10.0 10.1 10.4 10.3 10.3 10.5 10.5 10.4 10.2 9.6 9.7 8.9

7.9 7.6 5.9 5.8 3.4 3.3 3.2 3.0]; %已知节点(x0,y2)

>> h=0.1; %产生插值点的步长

>>

x=0.9:h:17.8; %产生插值点x

>>

y01=spline(x0,y1,x); %计算L1的三次样条插值

>> y02=spline(x0,y2,x);

%计算L2的三次样条插值

>>

plot(x,y01,'k',x,y02,'r') %三次样条插值作图

>> k=length(x);

>> y011=[y01(2:2:k-1)];

>> s011=sum(y011);

>> y012=[y01(3:2:k-1)];

>> s012=sum(y012);

>>

z1=(y01(1)+y01(k)+4*s011+2*s012)*h/3 %用辛普森公式计算L1的积分

z1 =

52.3696

>> y021=[y02(2:2:k-1)];

>> s021=sum(y021);

>> y022=[y02(3:2:k-1)];

>> s022=sum(y022);

>>

z2=(y02(1)+y02(k)+4*s021+2*s022)*h/3 %用辛普森公式计算L2的积分

z2 =

143.5365

>>

S=(z2-z1)*100 %代入面积推导公式

S =

9116.6

※图略※

根据三次样条插值方法作图即3.1中图

3.2用分段线性插值和梯形公式计算:

>>clear %清除当前工作区的所有变量

>> x0=[0.9 1.3 1.7 2.1 2.6 3 3.2

3.3 3.5 4.0 4.6 5.0 5.5 6.0 6.3 6.6 7.0 7.3 7.8 8.1 8.4 8.8 9.3 9.6

10.0 10.2 10.6 10.8 11.1 11.5 11.7 12.0 12.5 12.9 13.6 14.0 14.5

15.1 15.6 16.1 16.7 17.0 17.5 17.6 17.8];

>> y1=[6.5 6.0 5.6 5.6 5.0 4.5 4.2

4.1 4.1 3.9 3.6 3.0 3.4 3.5 3.5 3.5 3.4 3.1 3.2 3.4 3.3 3.3 3.8 3.2

2.8 2.5 2.2 2.4 2.6 2.0 2.6 2.9 2.9 3.4 1.5 1.1 1.0 0.7 1.9 1.8 2.2

2.6 2.6 2.7 3.0]; %已知节点(x0,y1)

>> y2=[6.5 7.3 7.2 7.3 7.7 7.3 7.6

9.9 10.1 10.5 10.2 9.8 9.7 8.8 8.6 8.2 7.7 7.5 7.7 8.2 8.9 8.2 9.7

9.7 9.7 10.0 10.1 10.4 10.3 10.3 10.5 10.5 10.4 10.2 9.6 9.7 8.9

7.9 7.6 5.9 5.8 3.4 3.3 3.2 3.0]; %已知节点(x0,y2)

>>

h=0.1; %产生插值点的步长

>>

x=0.9:h:17.8; %产生插值点x

>>

y01=interp1(x0,y1,x); %计算L1的分段线性插值

>>

y02=interp1(x0,y2,x); %计算L2的分段线性插值

>>

plot(x,y01,'k',x,y02,'r') %分段线性插值作图

>>

z1=trapz(y01)*h %用梯形公式计算L1 的积分

z1 =

52.4750

>>

z2=trapz(y02)*h %用梯形公式计算L2的积分

z2 =

143.6400

>>

S=(z2-z1)*100 %代入面积推导公式

S=

9116.50

※图略※

根据分段线性插值方法作图即3.2中图

4.结果分析

西藏聂荣县的实际面积是14540平方公里,两种计算方法的结果近似,其中3.1中计算所得面积占实际面积的62.7%,误差还是相当大的,可以从增加已知节点的数目、更准确绘取地图、选取更恰当比例尺方面进行改进。

matlab 数值积分求面积,用几种数值积分的方法计算地图面积相关推荐

  1. python计算三角形面积_【Scratch算法编程】计算三角形面积

    [问题]已知一个三角形三条边的边长分别为a,b,c,利用海伦-秦九韶公式设计一个计算三角形面积的算法.(已知三角形三边边长分别为a b c,则三角形的面积为S= ),其中p= .这个公式被称为海伦-秦 ...

  2. Matlab中求程序运行时间三种方法

    方法一(使用次数最多): 计算程序运的行时间,可以在这段程序的第一句前添加语句"tic",在该端程序后添加语句"t=toc"即可,那么返回值t即为该段程序所耗时 ...

  3. python输入坐标求面积_利用python中的坐标计算多边形面积

    您没有正确实现Shoelace formula.我修改了一点你的代码来修复它:sum1=0.0 sum2=0.0 b=input("Number of corners: ") ma ...

  4. c#编写三角形面积公式_C#做的用海伦公式计算三角形面积

    软件截图设计: 软件代码: using System; using System.Collections.Generic; using http://www.doczj.com/doc/30806d2 ...

  5. 蒙特卡洛算法举例,计算阴影部分面积MATLAB和C语言实现

    计算阴影部分面积.  一个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面 ...

  6. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法

    ·实验技术与方法· 用 Matlab 求冲激响应的几种方法 贺富堂,应柏青,张 锋,孙 敏 ( 西安交通大学 电工电子教学实验中心,陕西 西安 710049) 摘 要: 用 Matlab 软件求冲激响 ...

  7. MATLAB中求矩阵非零元的坐标

    MATLAB中求矩阵非零元的坐标: 方法1: index=find(a); [i,j]=ind2sub(size(a),index); disp([i,j]) 方法2: [i,j]=find(a> ...

  8. Google Earth Engine(GEE)——用两种方法计算NDWI水域面积提取(Landsat 8)

    使用 Landsat 8 使用指标 NDWI 使用两种方法计算水域面积 ,这次我们随便选择了陕西附近的一个部分作为我们的研究区, 我们所需用到的函数: ee.Image(args) An object ...

  9. 用蒙特卡洛法计算阴影部分面积

    首先看看上面这个问题.这个问题是我在一个MATLAB交流群里碰到的提问,计算阴影部分面积. 什么是蒙特卡罗在这里我就不多做介绍了,感兴趣的朋友可以看之前的几篇文章,更多具体的数学建模模型可以关注数模乐 ...

  10. 基于无人机影像结合Arcgis、Agisoft Metashape软件计算林地面积探讨

    摘要:林地面积求算是森林资源调查.造林与采伐作业设计.生态系统环境损害(林业)司法鉴定等工作的重要工序,林地面积求算主要有仪器测量与图上量测两种方法,仪器测量方法主要有全站仪测算法.罗盘仪导线测量及G ...

最新文章

  1. R语言负二项分布函数Negative Binomial Distribution(dnbinom, pnbinom, qnbinom rnbinom )实战
  2. java小程序查看器_JAVA的一个查看图片的小程序
  3. 使用NetFlow分析网络异常流量
  4. java enum 返回list_java – 组合枚举并使用getter返回指定的枚举
  5. Linux基础 —— Linux终端命令格式
  6. 详解微信小程序开发(项目从零开始)
  7. (WPF)XAML 过程式代码
  8. 【图像去噪】基于matlab GUI中值+小波+维纳+滤波器图像去噪【含Matlab源码 616期】
  9. 海康摄像头激活时报 错误2105
  10. qq群管机器人php,常用几款QQ群管机器人软件功能和体验对比
  11. ORACLE数据恢复到指定时间
  12. BAT智能硬件布局 争搭平台卡位各异
  13. 插补c语言程序,直线插补C语言程序.doc
  14. java 同比环比_数据相关概念同比,环比
  15. 店宝宝:10年前的小游戏集体复活
  16. mysql ndb安装_MySQL NDB源码安装
  17. python罗盘时钟代码_jQuery css3创意的罗盘时钟代码
  18. 出售,2012年世界末日诺亚舟船票,绝密
  19. spring cloud 实现服务不间断
  20. java中的hwid验证,JAVA设置HttpOnly Cookies

热门文章

  1. 合取范式可满足性问题:CDCL(Conflict-Driven Clause Learning)算法详解
  2. 校学 离散数学主析取合取范式 做题心得
  3. 7-2 古风排版 C语言
  4. RabbitMQ — RabbitMQ使用以及原理解析
  5. 计算机视觉领域专家主页代码
  6. python生成png图片_python通过pil模块将raw图片转换成png图片的方法
  7. 简历空白怎么办?计算机专业应届生和在校生怎么写简历?
  8. iOS组件化方案对比
  9. 超实用的几款Macos/Macbook/iMac 影片剪辑软件
  10. c# 定义四边形_C# 绘制多边形