导航:首页 > 源码编译 > 建模常用算法代码

建模常用算法代码

发布时间:2022-12-15 15:12:21

1. 数学建模常用到的matlab函数有哪些

sort (排序)
xlsread ( exl文件导入)
load (txt 文件,mat文件等导入)
实际上,常用的函数也是很有针对性的,我还真不知道 你要问什么

2. 数学建模需要掌握哪些编程语言和技术

数学建模需要掌握MATLAB、Python、SAS、Lingo等编程语言。

3. 数学建模各种算法MATLAB的编程代码,越详细越好

给你推荐个网站:数学中国http://www.madio.net
不过要简单注册一下,发发评论,就有积分了,这样就可以下载东西,与他人交流,挺权威的数学建模网站,希望能帮到你。
算法里面有,给你个网址http://www.madio.net/forum.php?mod=viewthread&tid=198727
这个算法我下载了,可以传给你

4. 求数学建模各种算法MATLAB的编程代码[email protected]

已发至邮箱,请注意查收

5. 数学建模算法有哪些

1. 蒙特卡罗算法。 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。
2. 数据拟合、参数估计、插值等数据处理算法。 比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。
3. 线性规划、整数规划、多元规划、二次规划等规划类算法。 建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。
4. 图论算法。 这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。
5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。 这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。
6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。 这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。
7. 网格算法和穷举法。 两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。
8. 一些连续数据离散化方法。 很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。
9. 数值分析算法。 如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。
10. 图象处理算法。 赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。
以下将结合历年的竞赛题,对这十类算法进行详细地说明。
以下将结合历年的竞赛题,对这十类算法进行详细地说明。
2 十类算法的详细说明
2.1 蒙特卡罗算法
大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。
举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。
2.2 数据拟合、参数估计、插值等算法
数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理。此类问题在MATLAB中有很多现成的函数可以调用,熟悉MATLAB,这些方法都能游刃有余的用好。
2.3 规划类问题算法
竞赛中很多问题都和数学规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件、几个函数表达式作为目标函数的问题,遇到这类问题,求解就是关键了,比如98年B 题,用很多不等式完全可以把问题刻画清楚,因此列举出规划后用Lindo、Lingo 等软件来进行解决比较方便,所以还需要熟悉这两个软件。
2.4 图论问题
98 年B 题、00 年B 题、95 年锁具装箱等问题体现了图论问题的重要性,这类问题算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等问题。每一个算法都应该实现一遍,否则到比赛时再写就晚了。
2.5 计算机算法设计中的问题
计算机算法设计包括很多内容:动态规划、回溯搜索、分治算法、分支定界。比如92 年B 题用分枝定界法,97 年B 题是典型的动态规划问题,此外98 年B 题体现了分治算法。这方面问题和ACM 程序设计竞赛中的问题类似,推荐看一下《计算机算法设计与分析》(电子工业出版社)等与计算机算法有关的书。
2.6 最优化理论的三大非经典算法
这十几年来最优化理论有了飞速发展,模拟退火法、神经网络、遗传算法这三类算法发展很快。近几年的赛题越来越复杂,很多问题没有什么很好的模型可以借鉴,于是这三类算法很多时候可以派上用场,比如:97 年A 题的模拟退火算法,00 年B 题的神经网络分类算法,象01 年B 题这种难题也可以使用神经网络,还有美国竞赛89 年A 题也和BP 算法有关系,当时是86 年刚提出BP 算法,89 年就考了,说明赛题可能是当今前沿科技的抽象体现。03 年B 题伽马刀问题也是目前研究的课题,目前算法最佳的是遗传算法。
2.7 网格算法和穷举算法
网格算法和穷举法一样,只是网格法是连续问题的穷举。比如要求在N 个变量情况下的最优化问题,那么对这些变量可取的空间进行采点,比如在[a; b] 区间内取M +1 个点,就是a; a+(b-a)/M; a+2 (b-a)/M; …… ; b 那么这样循环就需要进行(M + 1)N 次运算,所以计算量很大。比如97 年A 题、99 年B 题都可以用网格法搜索,这种方法最好在运算速度较快
的计算机中进行,还有要用高级语言来做,最好不要用MATLAB 做网格,否则会算很久的。穷举法大家都熟悉,就不说了。
2.8 一些连续数据离散化的方法
大部分物理问题的编程解决,都和这种方法有一定的联系。物理问题是反映我们生活在一个连续的世界中,计算机只能处理离散的量,所以需要对连续量进行离散处理。这种方法应用很广,而且和上面的很多算法有关。事实上,网格算法、蒙特卡罗算法、模拟退火都用了这个思想。
2.9 数值分析算法
这类算法是针对高级语言而专门设的,如果你用的是MATLAB、Mathematica,大可不必准备,因为象数值分析中有很多函数一般的数学软件是具备的。
2.10 图象处理算法
01 年A 题中需要你会读BMP 图象、美国赛98 年A 题需要你知道三维插值计算,03 年B 题要求更高,不但需要编程计算还要进行处理,而数模论文中也有很多图片需要展示,因此图象处理就是关键。做好这类问题,重要的是把MATLAB 学好,特别是图象处理的部分。

6. 数学建模中,给出非常多的节点,求这些节点的最短路径(类似一条线的路径),应该用什么算法好

下面是我自己编写的一段代码,用来求过包含两千多个点的最短路,速度很快,比遗传、蚁群快而且最短路更短。你可以试试看,有问题再问我。
function [S,len]=short(P)
% 此程序用来求相同类型点间的最短路
% P表示某一类型的点的坐标矩阵
% p是最短路径
% d是路径权值和
%建立权值矩阵
n=length(P);%求该类型点的数量
W=zeros(n,n);
for i=1:n %计算权值并填充权值矩阵,由于各点联通,此权值矩阵就是该图的最短路矩阵
for j=(i+1):n
W(i,j)=sqrt((P(i,1)-P(j,1))^2+(P(i,2)-P(j,2))^2);
end
end
for i=2:n
for j=1:(i-1)
W(i,j)=W(j,i);
end
end
%求通过所有点的最短路
%先求从i点至j点,必须通过指定其他n-2个点的最短路,选出其中的的最短路
S=zeros(1,n);
S(1)=1; %先插入1,2点,以此为基准,每次插进一个新点
S(2)=2;
d1=2*W(1,2);
for i=3:n %新加入的点的标号
d1i=zeros(1,i); %插入第i个点,有i中可能的距离,其中最小值将为该轮的d1
for j=1:i %新加入点的位置,插入第i个点是有i个空位可供选择
if j==1 %在第一个空位插入
d1i(j)=d1+W(i,S(1))+W(i,S(i-1))-W(S(1),S(i-1)); %插入点在首端时,距离为原距离与第i点与上一次插入后的第1位置的点之间距离之和
end
if j>1 & j<i %在中间的空位插入
d1i(j)=d1+W(S(j-1),i)+W(i,S(j))-W(S(j-1),S(j));
end
if j==i
d1i(j)=d1+W(S(i-1),i)+W(S(1),i)-W(S(1),S(i-1));
end
end
[d1,I]=min(d1i);
S((I+1):i)=S(I:(i-1)); %将第I位后面的点后移一位
S(I)=i;%将第i点插入在I位置
end
len=d1;

下面这段代码是我用来把上面的结果保存到txt文件中的代码,如果你需要,可以用用。代码是我上次用过的没有改,你自己按照需要自己改吧。
clear
close all
clc
loaddata
X=[C;E;I;J];
[S,len]=short(X);
DrawPath(S,X);
print(1,'-dpng','cmeiju3.png');
% 将结果保存至txt文件
fid=fopen('cmeijulujin.txt','wt'); %创建alunjin.txt文件
fprintf(fid,'c号刀具\n');
fprintf(fid,'%d %d\n',X(S));
save('cmeijus','S');
save('cmeijulen','len');

7. 需要有关数学建模的各种matlab代码,急求~~~~

这个可不是一般的多……
附录一 MATLAB常用函数
1、特殊变量与常数
ans 计算结果的变量名 computer 确定运行的计算机
eps 浮点相对精度 Inf 无穷大
I 虚数单位 inputname 输入参数名
NaN 非数 nargin 输入参数个数
nargout 输出参数的数目 pi 圆周率
nargoutchk 有效的输出参数数目 realmax 最大正浮点数
realmin 最小正浮点数 varargin 实际输入 的参量
varargout 实际返回的参量
操作符与特殊字符
+ 加 - 减
* 矩阵乘法 .* 数组乘(对应元素相乘)
^ 矩阵幂 .^ 数组幂(各个元素求幂)
\ 左除或反斜杠 / 右除或斜面杠
./ 数组除(对应元素除) kron Kronecker张量积
: 冒号 () 圆括
[] 方括 . 小数点
.. 父目录 ... 继续
, 逗号(分割多条命令) ; 分号(禁止结果显示)
% 注释 ! 感叹号
' 转置或引用 = 赋值
== 相等 <> 不等于
& 逻辑与 | 逻辑或
~ 逻辑非 xor 逻辑异或
2、基本数学函数
abs 绝对值和复数模长 acos,acodh 反余弦,反双曲余弦
acot,acoth 反余切,反双曲余切 acsc,acsch 反余割,反双曲余割
angle 相角 asec,asech 反正割,反双曲正割
secant 正切 asin,asinh 反正弦,反双曲正弦
atan,atanh 反正切,双曲正切 tangent 正切
atan2 四象限反正切 ceil 向着无穷大舍入
complex 建立一个复数 conj 复数配对
cos,cosh 余弦,双曲余弦 csc,csch 余切,双曲余切
cot,coth 余切,双曲余切 exp 指数
fix 朝0方向取整 floor 朝负无穷取整
gcd 最大公因数 imag 复数值的虚部
lcm 最小公倍数 log 自然对数
log2 以2为底的对数 log10 常用对数
mod 有符号的求余 nchoosek 二项式系数和全部组合数
real 复数的实部 rem 相除后求余
round 取整为最近的整数 sec,sech 正割,双曲正割
sign 符号数 sin,sinh 正弦,双曲正弦
sqrt 平方根 tan,tanh 正切,双曲正切
3、基本矩阵和矩阵操作
blkding 从输入参量建立块对角矩阵 eye 单位矩阵
linespace 产生线性间隔的向量 logspace 产生对数间隔的向量
numel 元素个数 ones 产生全为1的数组
rand 均匀颁随机数和数组 randn 正态分布随机数和数组
zeros 建立一个全0矩阵 :(colon) 等间隔向量
cat 连接数组 diag 对角矩阵和矩阵对角线
fliplr 从左自右翻转矩阵 flipud 从上到下翻转矩阵
repmat 复制一个数组 reshape 改造矩阵
roy90 矩阵翻转90度 tril 矩阵的下三角
triu 矩阵的上三角 dot 向量点集
cross 向量叉集 ismember 检测一个集合的元素
intersect 向量的交集 setxor 向量异或集
setdiff 向是的差集 union 向量的并集
数值分析和傅立叶变换
cumprod 累积 cumsum 累加
cumtrapz 累计梯形法计算数值微分 factor 质因子
inpolygon 删除多边形区域内的点 max 最大值
mean 数组的均值 mediam 中值
min 最小值 perms 所有可能的转换
polyarea 多边形区域 primes 生成质数列表
prod 数组元素的乘积 rectint 矩形交集区域
sort 按升序排列矩阵元素 sortrows 按升序排列行
std 标准偏差 sum 求和
trapz 梯形数值积分 var 方差
del2 离散拉普拉斯 diff 差值和微分估计
gradient 数值梯度 cov 协方差矩阵
corrcoef 相关系数 conv2 二维卷积
conv 卷积和多项式乘法 filter IIR或FIR滤波器
deconv 反卷积和多项式除法 filter2 二维数字滤波器
cplxpair 将复数值分类为共轭对 fft 一维的快速傅立叶变换
fft2 二维快速傅立叶变换 fftshift 将FFT的DC分量移到频谱中心
ifft 一维快速反傅立叶变换 ifft2 二维傅立叶反变换
ifftn 多维快速傅立叶变换 ifftshift 反FFT偏移
nextpow2 最靠近的2的幂次 unwrap 校正相位角
多项式与插值
conv 卷积和多项式乘法 roots 多项式的根
poly 具有设定根的多项式 polyder 多项式微分
polyeig 多项式的特征根 polyfit 多项式拟合
polyint 解析多项式积分 polyval 多项式求值
polyvalm 矩阵变量多项式求值 resie 部分分式展开
interp1 一维插值 interp2 二维插值
interp3 三维插值 interpft 使用FFT的一维插值
interpn 多维插值 meshgrid 为3维点生成x和y的网格
ndgrid 生成多维函数和插值的数组 pchip 分段3次Hermite插值多项式
ppval 分段多项式的值 spline 3次样条数据插值
绘图函数
bar 竖直条图 barh 水平条图
hist 直方图 histc 直方图计数
hold 保持当前图形 loglog x,y对数坐标图
pie 饼状图 plot 绘二维图
polar 极坐标图 semilogy y轴对数坐标图
semilogx x轴对数坐标 subplot 绘制子图
bar3 数值3D竖条图 bar3h 水平3D条形图
comet3 3D慧星图 cylinder 圆柱体
fill3 填充的3D多边形 plot3 3维空间绘图
quiver3 3D震动(速度)图 slice 体积薄片图
sphere 球 stem3 绘制离散表面数据
waterfall 绘制瀑布 trisurf 三角表面
clabel 增加轮廓标签到等高线图中 datetick 数据格式标记
grid 加网格线 gtext 用鼠标将文本放在2D图中
legend 图注 plotyy 左右边都绘Y轴
title 标题 xlabel X轴标签
ylabel Y轴标签 zlabel Z轴标签
contour 等高线图 contourc 等高线计算
contourf 填充的等高线图 hidden 网格线消影
meshc 连接网格/等高线 mesh 具有参考轴的3D网格
peaks 具有两个变量的采样函数 surf 3D阴影表面图
surface 建立表面低层对象 surfc 海浪和等高线的结合
surfl 具有光照的3D阴影表面 trimesh 三角网格图

8. 关于数学建模中用到的数学理论和编程算法

关于程序,我建议你用matlab或者mathmaticas,用这类专用数学软件比较好,因为我知道绝大多数人对C及C++的掌握还不至于到能够熟练写出你上述的各种算法(当然一些的简单的可以参考ACM的相关书籍),况且在实际工作中很多科学工作者或是工程师都是用Matlab之类的数学软件,所以我也建议你用。
至于你是工科的(我也是),所以我也能够理解你想学习上述各种算法等的想法,但是我觉得这个真的不太现实,我自己也很爱好数学,在平时我也经常学习各种非自己专业的数学知识,但是实际上你学习了之后也要理解,更何况你要运用它到非常熟练的程度(绝非一般考试可比),所以我认为你就必须要非常有选择的看,而且强烈建议你先做好规划(一定要符合自己实际情况,不要贪心),然后抓紧学。
我看你上面列的,其中组合数学非常难,但是你一定要非常踏实地学好(这个会应用在许多连你自己都想不到的地方),另外图论也是必须的,但这里我建议你先学习《离散数学》中的“图论”,当你以后在运用中如果遇到更高深的理论再去参考专门的图论书籍也不迟。另外微分方程我建议你先学习一些基础的知识即可,因为在建模中大多数情况下我觉得你只要会建立就行了,这块内容不用涉入太深,不然太费时间。至于你后面列的一些算法,这个没办法回避的,但也不是说你要一个个看过来,当然你可以考虑先走马观花地扫一遍,然后在仔细深入地学习集中重要的,相对出现几率大的算法。建议你多多拿题目来练习,在练题的过程中顺带学习相应知识,这样效率比较高。

其他的我也帮不了什么,关键你自己要抓紧,效率要大大提高。最后祝你好运!

阅读全文

与建模常用算法代码相关的资料

热点内容
退出云服务器代码 浏览:900
军状如命令 浏览:263
如何安卓系统更新 浏览:74
linux命令在哪里输入 浏览:497
编程语言集合类怎么选 浏览:93
如何将pdf转化为word 浏览:11
迈克菲隔离区解压密码 浏览:785
怎么用伟福编译 浏览:867
计算机算法专家 浏览:501
什么app清理垃圾 浏览:643
android流媒体服务器 浏览:183
各种算法的时间复杂度是指 浏览:116
帮助高考生缓解压力 浏览:850
自媒体聚合APP需要什么资质 浏览:487
求标准体重的算法 浏览:740
服务器后面插光纤的卡是什么卡 浏览:526
低级格式化命令dos 浏览:85
编译软件的图标 浏览:887
预算法定原则包括 浏览:981
Python爬取商品详情图 浏览:132