您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 大圆航程计算实验报告
本科实验报告学号姓名专业实验名称大圆航程计算实验一、摘要大圆航程计算实验,本实验主要描述了两地之间的飞行路线最短问题,可以找到最短的飞行路线,解决飞机航行问题。本实验给出了大圆航程计算实验的matlab实现,只要给出两地的经度及纬度,则可以计算出航点之间的距离,从而得出它们之间的最短飞行路线。二、实验目的及要求根据地球的模型,利用数学原理,找出一条两地的最短航线路程,给出matlab程序的实现,用于计算求出任意两地之间最短的大圆航程问题。三、实验仪器设备计算机四、实验方案设计(一)原理描述1、大远航程线在半径为R的球面上给定两点P1、P2,由P1到P2长度最短的球面曲线称为大圆航程线。大圆航程线在球心O以及P1、P2所定平面上;大圆航程线位于过球心的平面与球面相交的大圆弧上。大圆航程线长度计算公式L=R×其中,是OP1与OP2之间夹角(单位:弧度)球心到P1(x1,y1,z1)和球心到P2(x2,y2,z2),两向量所张成夹角的计算方法cos||||2121OPOPOPOP21212121zzyyxxOPOP2212121cosRzzyyxx)arccos(2212121RzzyyxxROPOP||||212、经纬度转换为直角坐标公式θ是P点处球面法线和赤道面的夹角(–90o~+90o).向北取正为北纬,向南取负为南纬.φ是P点与地球自转轴所在平面与起始子午面的夹角(–180o~+180o).由起始子午线起算,向东取正为东经,向西取负为西经。x=Rcosθcosφy=Rcosθsinφz=Rsinθ}2121,|),({D(二)实验过程设计1.首先查找到自己所在城市的经纬度,然后北京、上海、东京、旧金山、纽约任意选定一个城市2.根据经纬度计算出相应的数据,然后进行处理3.Matlab程序编写。4.利用给出的两地的经度和纬度,可以近似计算两地的飞行的航线的最短路程。(三)实验假设条件本实验的假设条件:两地之间的球面距离最短。(即通过两地(点)及球心的的大圆中两地的弧长距离最短)五、实验内容及步骤(一)实验调试步骤1、地球图形绘制:(必要的原理介绍和程序)地球图形绘制程序如下:clc;R=6400;%圆半径theta=(-9:0.5:9)*pi/18;%theta角度范围fai=(-18:0.5:18)*pi/18;%fai角度范围X=R*cos(theta)'*cos(fai);Y=R*cos(theta)'*sin(fai);Z=R*sin(theta)'*ones(size(fai));colormap([001])%颜色调整,RGB配色,参数小于1即可调出各种颜色mesh(X,Y,Z)title('大圆航迹线计算');holdon;%保持图像2、大圆航程计算问题的matlab实现(必要的原理介绍和程序)【问题】从自己家乡飞往以下任一城市(北京—上海—东京—旧金山—纽约)的大圆航线。航点纬度经度北京北纬40o东经116o上海北纬31o东经122o东京北纬36o东经140o旧金山北纬37o西经123o纽约北纬41o西经76o3、球面上大圆航程图形绘制(必要的原理介绍和程序)我家乡山东烟台的经纬度为:北纬37o,东经121o实验过程中用到的m文件如下:airline.m%用来画圆跟大圆航程,显示航程distance.m%用来计算两个点之间的大圆航程line0.m%在圆上画出大圆航程transform.m%将经纬度转化成直角坐标drawsphere.m%用来画球面1.airline.mclc;drawsphere();holdon;p1=[37121]%山东烟台东经:121北纬:37p2=[41-76]%NewYorkd=distance(p1,p2)op1=transform(p1);op2=transform(p2);formatshortgline0(op1,op2)2.distance.mfunctiond=distance(p1,p2)R=6400+10;theta=p1(1)*pi/180;fai=p1(2)*pi/180;x1=R*cos(theta)*cos(fai);y1=R*cos(theta)*sin(fai);z1=R*sin(theta);pp1=[x1,y1,z1];theta=p2(1)*pi/180;fai=p2(2)*pi/180;x2=R*cos(theta)*cos(fai);y2=R*cos(theta)*sin(fai);z2=R*sin(theta);pp2=[x2,y2,z2];d=R*acos(pp1*pp2'/R^2);3.line0.mfunctiond=line0(p1,p2)p=[p1;p2];n=2;r=norm(p1);fork=1:7q1=p(1:n-1,:);q2=p(2:n,:);e=0.5*(q1+q2);forj=1:n-1e(j,:)=r*e(j,:)/norm(e(j,:));endn=2*n-1;p(1:2:n,:)=p;p(2:2:n-1,:)=e;endx1=p1(1);x=p(:,1);x2=p2(1);y1=p1(2);y=p(:,2);y2=p2(2);z1=p1(3);z=p(:,3);z2=p2(3);plot3(x1,y1,z1,'r',x2,y2,z2,'r',x,y,z,'b','LineWidth',2)d=r*acos(p1*p2'/r^2);4.transform.mfunctionop1=transform(p1)R=6400+10;theta=p1(1)*pi/180;fai=p1(2)*pi/180;x1=R*cos(theta)*cos(fai);y1=R*cos(theta)*sin(fai);z1=R*sin(theta);op1=[x1,y1,z1];5.drawsphere.mfunctiondrawsphere()R=6400;theta=(-9:1.5:9)*pi/18;fai=(-18:1.5:18)*pi/18;X=R*cos(theta)'*cos(fai);Y=R*cos(theta)'*sin(fai);Z=R*sin(theta)'*ones(size(fai));colormap([00.80])mesh(X,Y,Z)title('大圆航线图')(二)实验调试过程中存在的问题及解决方法1、在实验中存在以下问题a)Function函数的使用;b)将地点坐标的经纬度形式改为三维向量形式、c)对线条的处理2、解决问题的思路及方法解决方法Function函数的使用方法:新建m文件把function函数复制进去;保存的文件名与函数名相同,保存到当前工作目录,然后在命令窗口调用function函数。将经纬度转换成向量函数:在之前已经写好的距离函数中截取一部分得到向量函数,即transform.m颜色线宽的表示方法:plot(x1,y1,选项1,x2,y2,选项2,……)上面的plot格式中,选项是指为了区分多条画出曲线的颜色,线型及标记点而设定的曲线的属性.MATLAB在多组变量绘图时,可将曲线以不同的颜色,不同的线型及标记点表示出来颜色属性'r'红色'm'粉红'g'绿色'c'青色'b'兰色'w'白色'y'黄色'k'黑色线型属性'-'实线'--'虚线':'点线'-.'点划线标记点属性'.'用点号绘制各数据点'^'用上三角绘制各数据点'+'用'+'号绘制各数据点'v'用下三角绘制各数据点'*'用'*'号绘制各数据点''用右三角绘制各数据点'.'用'.'号绘制各数据点''用左三角绘制各数据点's'或squar用正方形绘制各数据点'p'用五角星绘制各数据点'd'或diamond用菱形绘制各数据点'h'用六角星绘制各数据点这些选项可以连在一起用,如:'-.g'表示绘制绿色的点划线,'g+'表示用绿色的'+'号绘制曲线.六、结果与讨论1、烟台到北京:距离:d=551km2、烟台到上海:距离:d=678km3、烟台到东京:距离:d=1709.5km4、烟台到旧金山:距离d=9538.9km1、烟台到纽约:距离:d=11173km
本文标题:大圆航程计算实验报告
链接地址:https://www.777doc.com/doc-4239513 .html