2012年认证杯SPSSPRO杯数学建模A题(第一阶段)蜘蛛网全过程文档及程序

2012年认证杯SPSSPRO杯数学建模

A题 蜘蛛网

原题再现:

  第一阶段问题
  世界上生存着许多种类的蜘蛛,而其中的大部分种类都会通过结网来进行捕食。请你建立合理的数学模型,说明蜘蛛网织成怎样的结构才是最合适的。

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

  众所周知,蜘蛛是一个比较庞大的物种,而蜘蛛网也在世界各地都存在着。通过人们长时间来的观察与研究,渐渐发现了蜘蛛网其结构内部的本质。作为一个长时间来捕捉猎物的利器,无论从材料的柔韧性,阻尼运动对蛛网强度的保护性,还是对紫外线光的反射性,都从各个方面反映出了蜘蛛网对于蜘蛛捕食关键性的作用。那么,面对蜘蛛网诸多性质,我们从另一方面,即蜘蛛网的结构密集度计算、建模并优化来分析蜘蛛网在捕食方面的另一重要作用。
  在建模过程中,我们总体上通过构造蛛网模型模拟蛛网捕虫的过程,并通过计算捕虫随机过程的概率来优化蛛网模型。首先对于蛛网的建立,我们通过模拟蛛网的构架,即确定初始半径的大小和方向来确定蛛网以后的螺旋编织的方向和大小。其次,再在已有的蛛网架构基础上进行螺旋形展开,通过对蛛网网格的密集度限制条件对其展开进行限制,从而获得初步蛛网模型。在完成了初步的蛛网模型后,我们将把蛛网模型应用到一个空间的捕虫模拟中,在该模拟过程中,通过计算该蛛网捕虫成功的概率来验证所建蛛网的合理性。如不满足优化因子,我们将通过改变蛛网架构的初值来优化蛛网的结构。
  最后,我们将综合蛛网所受张力以及在捕虫过程中的阻尼运动等物理问题,将所建立的蛛网模型应用到实际问题中,并进一步通过 GA 算法对其进行进一步优化,更加仿真地模拟蛛网的构造,方便以后的研究。

问题分析:

  我们知道,在生物界的成长与优胜劣汰中,蜘蛛以其强大的生命力和竞争能力在生物界顽强生长了一亿多年,不论周遭环境如何,都可以顽强的生存下来,由此可知,蜘蛛网对于蜘蛛得以在生物界顺利存活如此之长的时间起到了至关重要的作用。自然而然的,对于至关重要的蛛网的结构、物理特性等方面的研究也就吸引了很多眼球。
  第一,在结构方面,蛛网的特性之所以可以捕捉到许多昆虫,并且可以长时间编织在角落里,是与蛛网的结构密集性与稳定性是不可分割的。首先,对于蛛网密集性的分析,我们可以发现,如果不是蛛网密集度性能好,昆虫是无法大概率的被捕捉的。所以我们从蛛网的密集度着手,首先根据蛛网的密集性对蛛网的初始值进行编译,通过对许多外界因素的参考与分析进行初步参数设定,同时对建立好的初步模型螺旋展开,同时并运用 GA 算法(遗传算法)对展开后的螺旋性图进行优化处理,并得出最终密集度相对较好的蛛网。其次,通过分析蛛网的稳定性,我们再对建立出的蛛网设立密集系数,对建立出的蛛网每个模块的面积及其相互之间的受力关系进行稳定测定,如果不满足我们设定的密集系数范围,则通过改变相应的初始参数来尽量满足最终的蛛网稳定性。
  第二,在物理方面,蛛网无论在力学方面还是在光学方面都有着奇特的性质。所以,我们首先将分析蛛网间的受力以及蛛网总体的重力影响来研究蛛网之所以稳定不易掉落损坏的愿意。其次,通过分析动物在撞击蛛网后,蛛网之所以可以承受住动物巨大的冲击,是与其特别的阻尼运动分不开的,所以,在力学方面,蛛网有着其特殊的性质,所以,根据这些特点,我们可以针对蛛网的结构展开进行讨论与研究。另外,正是由于光反射的原因,蛛网才得以顺利的诱惑昆虫撞向蛛网,所以,我们还可综合斜率或角度原因来对蛛网的展开角度进行构造。
  同时,在建立好的模型的基础上,我们可以根据已有的 GA 算法(遗传算法)对已有模型进行进一步分析和优化,并通过进一步的严谨将蛛网模型应用至更多的蜘蛛类别中,从而达到真正仿真实验的目的。

论文缩略图:

在这里插入图片描述
在这里插入图片描述

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

部分程序代码:(代码和文档not free)

clear;
clc;
hold on;
global sumlen;
sumlen=0;
nl=0;
plot([0,0],[-20,20],'--k');
plot([-20,20],[0,0],'--k');
%% init
infil=fopen('mat.in','r');
[n,num]=fscanf(infil,'%d',1);
[nesw,num]=fscanf(infil,'%f',4);
[abell,num]=fscanf(infil,'%f',8);
[tau,num]=fscanf(infil,'%f',1);
[rho,num]=fscanf(infil,'%f',n-1);
rho(n)=0;
[r0,num]=fscanf(infil,'%f',1);
[d,num]=fscanf(infil,'%f',1);
[k,num]=fscanf(infil,'%f',1);
[es,num]=fscanf(infil,'%f',1);
[id,num]=fscanf(infil,'%f',1);
alpha=2*pi/n;
%% ellipse
syms x y;
z=[((x-nesw(2))/abell(1))^2+(y/abell(2))^2-1+x;((y-nesw(1))/abell(2))^2+(x/
abell(1))^2-1+y];
[xy01,num]=mulStablePoint(z,[1;1]);
z=[((x-nesw(3))/abell(3))^2+(y/abell(4))^2-1+x;((y-nesw(2))/abell(4))^2+(x/
abell(3))^2-1+y];
[xy02,num]=mulStablePoint(z,[1;1]);
z=[((x-nesw(4))/abell(5))^2+(y/abell(6))^2-1+x;((y-nesw(3))/abell(6))^2+(x/
abell(5))^2-1+y];
[xy03,num]=mulStablePoint(z,[1;1]);
z=[((x-nesw(1))/abell(7))^2+(y/abell(8))^2-1+x;((y-nesw(4))/abell(8))^2+(x/
abell(7))^2-1+y];
[xy04,num]=mulStablePoint(z,[1;1]);
xxl=abell(1)*cos(0)+xy01(1);
yyl=abell(2)*sin(0)+xy01(2);
for beta=0.001:0.001:2*pi;xxn=abell(1)*cos(beta)+xy01(1);yyn=abell(2)*sin(beta)+xy01(2);if xxl>0 & xxn>0 & yyl>0 & yyn>0plot([xxl,xxn],[yyl,yyn],'w');endxxl=xxn;yyl=yyn;
end
xxl=abell(3)*cos(0)+xy02(1);
yyl=abell(4)*sin(0)+xy02(2);
for beta=0.001:0.001:2*pi;xxn=abell(3)*cos(beta)+xy02(1);yyn=abell(4)*sin(beta)+xy02(2);if xxl>0 & xxn>0 & yyl>0 & yyn>0plot([yyl,yyn],[-xxl,-xxn],'w');endxxl=xxn;yyl=yyn;
end
xxl=abell(5)*cos(0)+xy03(1);
yyl=abell(6)*sin(0)+xy03(2);
for beta=0.001:0.001:2*pi;xxn=abell(5)*cos(beta)+xy03(1);yyn=abell(6)*sin(beta)+xy03(2);if xxl>0 & xxn>0 & yyl>0 & yyn>0plot([-xxl,-xxn],[-yyl,-yyn],'w');endxxl=xxn;
yyl=yyn;
end
xxl=abell(7)*cos(0)+xy04(1);
yyl=abell(8)*sin(0)+xy04(2);
for beta=0.001:0.001:2*pi;xxn=abell(7)*cos(beta)+xy04(1);yyn=abell(8)*sin(beta)+xy04(2);if xxl>0 & xxn>0 & yyl>0 & yyn>0plot([-yyl,-yyn],[xxl,xxn],'w');endxxl=xxn;yyl=yyn;
end
%% main line
theta=pi/2-tau*2*pi/360;
for i=1:1:nif theta>0[p(i,1),p(i,2)]=drawmainline(tan(theta),abell(1),abell(2),xy01(1),xy01(2),1
);elseif theta>-pi/2[p(i,1),p(i,2)]=drawmainline(tan(theta+pi/2),abell(3),abell(4),xy02(1),xy02
(2),2);elseif theta>-pi[p(i,1),p(i,2)]=drawmainline(tan(theta+pi),abell(5),abell(6),xy03(1),xy03(2
),3); else if theta>-3/2*pi [p(i,1),p(i,2)]=drawmainline(tan(theta+pi*3/2),abell(7),abell(8),xy04(1),xy
04(2),4);else[p(i,1),p(i,2)]=drawmainline(tan(theta+2*pi),abell(1),abell(2),xy01(1),xy01
(2),1);endendendendtheta=theta-alpha-rho(i)*2*pi/360;
end
for i=1:1:n-1plot([p(i,1),p(i+1,1)],[p(i,2),p(i+1,2)],'--k');
end
plot([p(n,1),p(1,1)],[p(n,2),p(1,2)],'--k');
%% line
l=len(p(1,1),p(1,2));
lastx=r0*p(1,1)/l;
lasty=r0*p(1,2)/l;
r=r0;
rr(1)=r0;
for i=1:1:n-1
r=r+d;rr(i+1)=r;l=len(p(i+1,1),p(i+1,2));nowx=r*p(i+1,1)/l;nowy=r*p(i+1,2)/l;plot([lastx,nowx],[lasty,nowy]);nl=nl+1;line(nl,1)=(lasty-nowy)/(lastx-nowx);line(nl,2)=lasty-line(nl,1)*lastx;line(nl,3)=lastx;line(nl,4)=nowx;lastx=nowx;lasty=nowy;
end
r=r+d;
rr(1)=r;
l=len(p(1,1),p(1,2));
nowx=r*p(1,1)/l;
nowy=r*p(1,2)/l;
plot([lastx,nowx],[lasty,nowy]);
nl=nl+1;
line(nl,1)=(lasty-nowy)/(lastx-nowx);
line(nl,2)=lasty-line(nl,1)*lastx;
line(nl,3)=lastx;
line(nl,4)=nowx;
lastx=nowx;
lasty=nowy;
flag=0;
i=2;
ii=1;
d=d*(n-1)*k;
while 1if i>ni=i-n;endif i<1i=i+n;endr=rr(i)+d;l=len(p(i,1),p(i,2));if l<rif flag==1break;endii=-ii;i=i+2*ii;flag=1;continue;endnowx=r*p(i,1)/l;nowy=r*p(i,2)/l;plot([lastx,nowx],[lasty,nowy]);rr(i)=r;sumlen=sumlen+len(lastx-nowx,lasty-nowy);nl=nl+1;line(nl,1)=(lasty-nowy)/(lastx-nowx);line(nl,2)=lasty-line(nl,1)*lastx;
line(nl,3)=lastx;line(nl,4)=nowx;lastx=nowx;lasty=nowy;i=i+ii;flag=0;d=d*k;
end
%% simulation
sumv=0;
v=0;
for i=1:1:10000ix=25*rand(1,1);iy=25*rand(1,1);is=normrnd(es,id);while is<0is=normrnd(es,id);endv=v+is^3;for j=1:1:nldis=abs(line(j,1)*ix+line(j,2)-iy)/sqrt(line(j,1)^2+1);if dis>iscontinue;endtdeta=sqrt(-2*ix*(line(j,2)-iy)+is*is*(1+line(j,1)^2)-line(j,1)^2*(ix*ix+(l
ine(j,2)-iy)^2));tx=(ix-(line(j,2)-iy)-tdeta)/(1+line(j,1)^2);if (line(j,3)-tx)*(line(j,4)-tx)<0sumv=sumv+is^3;break;endtx=(ix-(line(j,2)-iy)+tdeta)/(1+line(j,1)^2);tx=(ix-(line(j,2)-iy)-tdeta)/(1+line(j,1)^2);if (line(j,3)-tx)*(line(j,4)-tx)<0sumv=sumv+is^3;break;end end
end
%% outit
sumlen
sumv
rate=sumv/v
%% program end
axis('equal');
fclose(infil);
hold off;
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试八股总结】传输控制协议TCP(三)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、TCP拥塞控制⭐ 1. 慢启动 – Slow Start 慢启动是指TCP连接刚建立&#xff0c;一点一点地提速&#xff0c;试探一下网络的承受能力&#xff0c;以免直接扰乱了网络通道的秩序。 慢启动算法&#xff1a; 初始拥塞窗口…

【EasyExcel】—— 实现excel动态表头设置、多个sheet

引入jar <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency>代码 public static void main(String[] args) {//选择存储地址String fileName "/User…

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Servi…

OSError: Can‘t load tokenizer for ‘bert-base-chinese‘

文章目录 OSError: Cant load tokenizer for bert-base-chinese1.问题描述2.解决办法 OSError: Can’t load tokenizer for ‘bert-base-chinese’ 1.问题描述 使用from_pretrained()函数从预训练的权重中加载模型时报错&#xff1a; OSError: Can’t load tokenizer for ‘…

axios 封装 http 请求详解

前言 Axios 是一个基于 Promise 的 HTTP 库&#xff0c;它的概念及使用方法本文不过多赘述&#xff0c;请参考&#xff1a;axios传送门 本文重点讲述下在项目中是如何利用 axios 封装 http 请求。 一、预设全局变量 在 /const/preset.js 中配置预先设置一些全局变量 window.…

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

Java项目:85 springboot智能物流管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员和用户两个角色。 用户功能有项目预定管理&#xff0c;产品购买管理&#xff0c;会员充值管理&#xff0c;余额查询管理。…

vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件&#xff0c;需先安装 向下滑动前 向下滑动后&#xff08;改变了logo 字体 背景颜色&#xff09; <script lang"ts" setup> import router from /router; import { ArrowDown } from element-plus/icons-vue import { ref, …

VScode debug python(服务器)

方法一&#xff1a; 创建launch.json文件&#xff1a; launch.json文件地址&#xff1a; launch.json文件内容&#xff1a; {"version": "0.2.0", //指定了配置文件的版本"configurations": [{"name": "Python: Current File&…

基于kmeans的聚类微博舆情分析系统

第一章绪论 1.1研究背景 如今在我们的生活与生产的每个角落都可以见到数据与信息的身影。自从上十世纪八十年代的中后期开始&#xff0c;我们使用的互联网技术已经开始快速发展&#xff0c;近些年来云计算、大数据和物联网等与互联网有相领域的发展让互联网技术达到了史无前例…

159 Linux C++ 通讯架构实战14,epoll 函数代码实战

ngx_epoll_init函数的调用 //&#xff08;3.2&#xff09;ngx_epoll_init函数的调用&#xff08;要在子进程中执行&#xff09; //四章&#xff0c;四节 project1.cpp&#xff1a;nginx中创建worker子进程&#xff1b; //nginx中创建worker子进程 //官方nginx ,一个…

免费图片转excel方案大全

随着信息技术的发展&#xff0c;我们经常会遇到需要将图片中的数据转换成Excel表格的情况。这种需求在数据分析、报表制作、信息整理等领域尤为常见。然而&#xff0c;许多人在面对这一任务时感到困惑&#xff0c;不知道如何进行。本文将为大家介绍几种免费的图片转Excel方案&a…