2015年国赛高教杯数学建模A题太阳影子定位解题全过程文档及程序

news2024/11/19 20:42:40

2015年国赛高教杯数学建模

A题 太阳影子定位

  技术就是通过分析视频中物体的太阳影子变化,确定视频拍摄的地点和日期的一种方法。
  1.建立影子长度变化的数学模型,分析影子长度关于各个参数的变化规律,并应用你们建立的模型画出2015年10月22日北京时间9:00-15:00之间天安门广场(北纬39度54分26秒,东经116度23分29秒)3米高的直杆的太阳影子长度的变化曲线。
  2.根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型确定直杆所处的地点。将你们的模型应用于附件1的影子顶点坐标数据,给出若干个可能的地点。
  3. 根据某固定直杆在水平地面上的太阳影子顶点坐标数据,建立数学模型确定直杆所处的地点和日期。将你们的模型分别应用于附件2和附件3的影子顶点坐标数据,给出若干个可能的地点与日期。
  4.附件4为一根直杆在太阳下的影子变化的视频,并且已通过某种方式估计出直杆的高度为2米。请建立确定视频拍摄地点的数学模型,并应用你们的模型给出若干个可能的拍摄地点。
如果拍摄日期未知,你能否根据视频确定出拍摄地点与日期?

整体求解过程概述(摘要)

  本文首先根据几何关系给出了直杆的太阳影子长度变化模型,进而通过“反问题”思维,借助直杆太阳影子变化建立数学优化模型推算出直杆的位置、日期等信息。最后,利用视频截屏技术和优化模型确定了视频的拍摄地点和拍摄日期。
  问题1,首先找到可以衡量影子长度变化的几个参数然后从三方面分析了太阳影子关于各参数长度变化的规律。我们发现影长不仅会随着太阳高度角增加而减小,而且还会受季节的影响。而后用MATLAB软件画出了附件1中直杆影长变化的曲线图。
  问题2,使用最小二乘近似法以及遗传算法建立了一个完整的优化模型,将杆长与直杆地理纬度作为变量参数,进行100次迭代,得出20组可能的解,通过合理性比较得出最可能地点在海南岛东部。
  问题3,在问题2优化模型的基础上,增加日期一个变量,利用与问题2相似的解法求得附件2可能的地点与日期为印度南部、2-3月份,附件3可能的地点与日期为越南东南部、8-9月份。
  问题4,利用截屏技术将视频每隔一分钟截一幅图,将截取的40张图片用MATLAB进行边缘处理得到坐标数据,利用相似变换将像素坐标转换为物理坐标。在日期已知情况下,建立最小二乘近似法模型,并使用模拟退火算法得到视频中可能的地点为呼和浩特市附近。在日期未知的情况下,增加变量日期,再利用此题的优化模型求解,确定了地点与日期。
  本文的亮点是,考虑到遗传算法自身有局部搜索能力差、存在未成熟收敛和随机游走等缺陷,先使用拟合的方法将直杆可能所在位置的地理经度确定,再运用遗传算法或者模拟退火算法求解模型。

模型假设:

  (1)假设太阳光为平行光,没有折射;
  (2)假设海拔高度常常可以忽略;
  (3)假设时区是东八区;

问题分析:

  问题1的分析
  问题1在太阳光是平行光的假设下,可以将此题看作一个简单的数学求解问题。该问题的关键在于找出各个参数与影长的联系。我们考虑到,物体在某一点的影子的形状(长度和位置)由太阳在天体中对地球上这一点的相对位置决定,而这个相对位置由当地的的地理纬度、季节(日、月)和时间(这里的时间准确来说指时刻)三个因素决定,由于问题1中我们只需考虑影子的长度,所以我们可以用地理纬度(𝜑)、太阳赤纬角(𝛿)、太阳高度角(ℎ)及时角(𝑡)等参数建立影子长度变化的数学模型,并分析影长关于它们几个参数的变化规律。 而后,利用上述建立好的模型及MATLAB软件,以北京时间9:00到15:00内的时刻为变量,编写程序就可以画出题目要求的时间段内杆子的影长变化曲线。
  问题2的分析
  问题2与问题3都是给出某固定直杆在水平地面上的太阳影子顶点坐标数据,要求是建立数学模型,给出若干个可能的地点或地点和日期,这是一种典型的“反问题”,即需要我们由果推因。首先利用已有数据进行二次函数拟合,基本确定直杆的地理经度,然后再采用有关“反问题”比较经典的做法——最小二乘近似法建立模型求解其他变量参数。其中,直杆长度也不确定,由于杆长不同所在的位置也可能不同,所以将杆长𝐻设置为变量参数之一。进而,用遗传算法的思想求解模型,可以得出直杆几个可能的位置。
  问题3的分析
  问题3与问题2比较,除了需要确定直杆所处的地点位置之外,同时需要确定拍摄日期,我们将问题二的最小二乘近似法模型稍加改进,增加参数日期(用积日𝑁来衡量),从而建立起一个三参数的优化模型,利用与问题2相似的算法可以得出直杆一些可能的位置与日期。
  问题4 的分析
  附件4视频较大,直接用MATLAB处理比较困难,所以我们需要对视频进行一些处理,然后再利用MATLAB软件导出直杆影子在像素坐标系下的坐标数据,利用坐标变换方法中的相似变换将像素坐标系转换为物理坐标系。在日期给定时,建立最小二乘近似法的优化模型,并首先考虑遗传算法,再用模拟退火算法改进,可以得出可能的地点。如果日期没有给定,建立的优化模型将是一个四参数问题,利用本题建立的优化模型将确定可能的地点与日期。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

function ObjV=fun(unit) 
load matlab data  
h=unit(:,1); 
b1=unit(:,2); 
time.year=2015; 
time.month=4; 
time.day=18; 
location.altitude = 0; 
time.UTC =8; 
  
time.hour = 14; 
time.min = 42; 
time.sec = 0; 
for j=1:length(unit) 
    location.longitude = 110.25;  
    location.latitude  = b1(j);  
     
for i=1:21 

if time.min>60 
time.min=0; 
time.hour=time.hour+1; 
end 
a=sun_position(time,location); 
l2(i)=h(j)/tan((a.zenith)/180*pi); 
time.min=time.min+3;  
end 
a1=data(:,1); 
a2=data(:,2); 
l1=sqrt(a1.^2+a2.^2); 
l=0; 
for k=1:21 
l=l+(l1(k)-l2(k))^2; 
end 
ObjV(j)=l; 
end 
ObjV=ObjV'; 
run_genetic.m: 
clc;clear,close all; 
NVAR=2; 
NIND=40;  
MAXGEN=100; 
LIND=10;  
GGAP=0.9;  
trace=zeros(2,MAXGEN); 
FieldD=[  LIND LIND;     
0  
0;        
10  90;   
1  
1;         
0  
0;                               
1 1;         
1 1];          
Chrom=crtbp(NIND,LIND*NVAR);  
unit=bs2rv(Chrom,FieldD);  
ObjV=fun(unit);                           
for gen=1:MAXGEN 
FitnV=ranking(-ObjV); 
SelCh=select('sus',Chrom,FitnV,GGAP);  
SelCh=recombin('xovsp',SelCh,0.7); 
SelCh=mut(SelCh);  
unit=bs2rv(SelCh,FieldD);  
ObjVSel=fun(unit); 
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);  
[Y(gen),I(gen)]=min(ObjV);  
trace(1,gen)=min(ObjV);  
trace(2,gen)=sum(ObjV)/length(ObjV); 
end 
unit=bs2rv(Chrom,FieldD); 
figure 
plot(trace(1,1:gen),'b-o'); 
hold on 
plot(trace(2,1:gen),'r-o'); 
XY=unit(I(gen),:) 
Z=min(Y) 
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++入门day3-面向对象编程(下)

前言:C入门day3-面向对象编程(中)-CSDN博客 初识:继承特性 继承的基础语法 class A{ public:int a; }; class B:public A { public:int b; }; B类通过继承A类后,内部会继承一个int变量 a:从下图我们可以…

Nginx基础详解2(首页解析过程、进程模型、处理Web请求机制、nginx.conf语法结构)

续:Nginx基础详解1(单体部署与集群部署、负载均衡、正反代理、nginx安装)-CSDN博客 目录 4.Nginx默认首页的过程解析 5.Nginx进程模型的详解 5.1启动nginx后的关于nginx的进程查看 5.2master进程与process进程 5.3Nginx进程图解 5.4wo…

【已解决】【Hadoop】【./bin的使用】bash: ./bin/hdfs: 没有那个文件或目录

在 Hadoop 环境中,决定何时在命令前添加 ./bin 和如何处理路径 /home/hadoop 与 /usr/local/hadoop 的问题,主要取决于你的当前工作目录和环境变量的设置。以下是一些指导原则: 何时使用 ./bin: 当前目录是 Hadoop 安装目录&…

【分类|回归】深度学习中的分类和回归?离散数据or连续数值?

【分类|回归】深度学习中的分类和回归?离散数据or连续数值? 【分类|回归】深度学习中的分类和回归?离散数据or连续数值? 文章目录 【分类|回归】深度学习中的分类和回归?离散数据or连续数值?前言1.分类问题…

帆软通过JavaScript注入sql,实现数据动态查询

将sql语句设置为参数 新建数据库查询 设置数据库查询的sql语句 添加控件 JavaScript实现sql注入 添加事件 编写JavaScript代码 //获取评价人id var pjrid this.options.form.getWidgetByName("id").getValue();//显示评价人id alert("评价人:&…

单片机串口AT指令操作SIM800、900拨打电话

文章目录 一、前言1.1 功能简介1.2 拨打电话功能的应用场景1.3 SIM900A与SIM800C模块介绍1.4 原理图 三、模块调试3.1 工具软件下载3.2 准备好模块3.3 串口调试助手的设置3.4 初始化配置3.5 拨打电话的测试流程 四、代码实现4.1 底层的命令发送接口4.2 底层数据接收接口4.3 检测…

Cisco Packet Tracer的安装加汉化

这个工具学计算机网络的同学会用到 1.下载安装 网盘链接:https://pan.baidu.com/s/1CmnxAD9MkCtE7pc8Tjw0IA 提取码:frkb 点击第一个进行安装,按步骤来即可。 2.汉化 (1)复制chinese.ptl文件 (2&…

四元组问题

目录 问题描述 输入格式 输出格式 样例输入 样例输出 说明 评测数据规模 运行限制 原题链接 代码思路 问题描述 从小学开始,小明就是一个非常喜欢数学的孩子。他喜欢用数学的方式解决各种问题。在他的高中时期,他遇到了一个非常有趣的问题&…

【Unity服务】如何使用Unity Version Control

Unity上的线上服务有很多,我们接触到的第一个一般就是Version Control,用于对项目资源的版本管理。 本文介绍如何为项目添加Version Control,并如何使用,以及如何将项目与Version Control断开链接。 其实如果仅仅是对项目资源进…

华盈伯乐 | Bio-Plex多重细胞因子检测技术培训及研讨会现场回顾

精彩华盈现场回顾 迎着朝霞,与会的伙伴们一早踏上了旅程,参与华盈生物与伯乐生命科学联合举办的Bio-Plex多重细胞因子检测技术培训及研讨会活动。随着活动的序幕缓缓拉开,我们迎来了一段充实而富有成效的学习之旅。 精彩开幕 华盈生物的副总…

SpringMVC4-SpringMVC获取请求参数

test_param.html&#xff1a; <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head><meta charset"UTF-8"><title>测试请求参数</title> </head> <body> <h1>测…

解决Pymysql has no attribute ‘escape_string‘ 并且无法引入该模块

打印出的pymysql版本是1.4.6 需要import这个module&#xff0c;并且根据pymysql的版本import的方式还不同 import pymysqlif pymysql.__version__ >1.0.0:from pymysql.converters import escape_string else:escape_string lambda x: pymysql.escape_string(x)然而&am…

如何借助Java批量操作Excel文件?

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 前言 | 问题背景 在操作Excel的场景中&#xff0c;通常会有一些针对Excel的批量操作&#xff0c;批量的意思一般有两种&#xff1a; 对批量的Excel文件进行操作。如导入多个Excel文件…

鸿蒙OpenHarmony【小型系统基础内核(虚实映射)】子系统开发

虚实映射 基本概念 虚实映射是指系统通过内存管理单元&#xff08;MMU&#xff0c;Memory Management Unit&#xff09;将进程空间的虚拟地址与实际的物理地址做映射&#xff0c;并指定相应的访问权限、缓存属性等。程序执行时&#xff0c;CPU访问的是虚拟内存&#xff0c;通…

实现微信小程序中点击单词显示在input的交互功能指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

卷积神经网络-学习率

文章目录 一、学习率的定义二、学习率的作用三、学习率的调整方法1.有序调整(1).有序调整StepLR(等间隔调整学习率&#xff09;(2).有序调整MultiStepLR(多间隔调整学习率)(3).有序调整ExponentialLR (指数衰减调整学习率)(4).有序调整CosineAnnealing (余弦退火函数调整学习率…

TypeScript 设计模式之【单例模式】

文章目录 **单例模式**: 独一无二的特工我们为什么需要这样的特工?单例模式的秘密&#xff1a;如何培养这样的特工?特工的利与害代码实现单例模式的主要优点单例模式的主要缺点单例模式的适用场景总结 单例模式: 独一无二的特工 单例模式就像是一个秘密组织里的特殊特工。这…

Java介绍及JDK 21详细安装教程

文章目录 1. 文章简介2. Java和JDK的介绍与关系2.1 Java2.2 JDK 3. Java版本的发展历程4. Java 21安装步骤 1. 文章简介 本文介绍如何Java、JDK、Java的发展及如何快速安装JDK 21。内容详细充实&#xff0c;旨在帮助您快速了解并使用Java。 2. Java和JDK的介绍与关系 2.1 Jav…

828华为云征文|华为云Flexus云服务器X实例——部署EduSoho网校系统、二次开发对接华为云视频点播实现CDN加速播放

EduSoho 是一款功能强大的网校系统&#xff0c;能够帮助教育机构快速搭建在线学习平台。本文将详细介绍如何在华为云服务器上安装和部署 EduSoho 网校系统&#xff0c;以及二次开发对接华为云视频点播VOD来实现CDN加速播放。 edusoho本地存储的视频播放存在诸多弊端。一方面&a…

「C++系列」命名空间

【人工智能教程】&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站&#xff1a;【人工智能教程】 文章目录 一、命名空间1. 定义命名空间2. 使用命名空间中的成员3. 命名空间的…