数学建模算法整理
数学建模算法整理
数学建模算法整理
数学建模常用算法
大多数建模赛题中都离不开计算机仿真, 随机性模拟是非常常见的算法之一。
举个例子就是 97 年的 A 题,每个零件都有自己的标定值,也都有自己的容差等级, 而求解最优的组合方案将要面对着的是一个极其复杂的公式和 108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢随机性模拟搜索最优方案就是其中的一
种 方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案, 然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。 另一个例子就是去年的彩票第二问,要求设计一种更好的方案, 首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。
蒙特卡罗算法
蒙特卡罗模拟
就是随机数相关的东西,你只要知道随机数是怎么得到。其它的事就要好办了。
rand(m,n) 产生 m*n 均匀随机数。
ex:
用概率方法求 pi
N=100000;
x=rand(N,1);
y=rand(N,1);
count=0;
for i=1:N
if (x(i)^2+y(i)^2<=1)
count=count+1;
end
end
PI=4*count/N
试给出下面赌博中的蒙特卡洛模拟
在一次旅游途中,小王看到有人用 20 枚签 ( 其中 10 枚标有 5 分分值, 10 枚标有 10 分分值 ) 设赌。让游客从中抽出 10 枚,以 10 枚签的分值总和为奖罚金额,见
表 1
表 1
分值 50
, 10055
,95 60
,65,85,90
70, 75,80
奖罚金额
奖100元
奖10元
不奖不罚
罚 1 元
你看,有奖有罚,在 11 个分值中有 4 个分值可以获奖,且最高奖额为 100 元;只有 3 个分值要受罚,而罚额仅为 1 元,很有吸引力吧怪不得有些游客摩拳擦掌,跃跃欲试。那么这些奖是不是这么好拿呢
试分析此游戏中,谁是真正的赢家
%%假设前 10 个分值为 5,后 10 个分值为 10
income=0; %% 收入
n=10000; %% 模拟次数 , 即有 n 个人参加游戏
for i=1:n
a=randperm(20);
a=a(1:10);
b=find(a>10); %%10 分分值的
sumb=length(b)*10+(10-length(b))*5;
if sumb==50||sumb==100
income=income-100;
elseif sumb==55||sumb==95
income=income-10;
elseif sumb==70||sumb==75||sumb==80
income=income+1;
end
end
Income
数据拟合、参数估计、插值等算法
数据拟合在很多赛题中有应用, 与图形处理有关的问题很多
与拟合有关系, 一个例子就是 98 年美国赛 A 题,生物组织切片的三
维插值处理, 94 年 A 题逢山开路,山体海拔高度的插值计算,还有
吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法, 观察
数学建模算法整理
数学建模算法整理
数学建模算法整理
数据的走向进行处理。此类问题在 MATLAB中有很多现成的函数可以
调用,熟悉 MATLAB,这些方法都能游刃有余的用好。
三次样条插值在 Matlab 中的实现
在 Matlab 中数据点称之为断点。 如果三次样条插值没有边界条件, 最常用的方法,就是采用非扭结( not-a-knot )条件。这个条件强迫第 1 个和第 2 个三多项式的三阶导数相等。对最后一个和倒数第 2 个三次多项式也做同样地处理。
Matlab 中三次样条插值也有现成的函数:
y=interp1(x0,y0,x,'spline') ; y=spline(x0,y0,x) ; pp=csape(x0,y0,conds) ,y=ppval(pp,x) 。
其中 x0,y0 是已知数据点 ,x 是插值点 ,y 是插值点的函数值。
对于三次样条插值,我们提倡使用函数
数学建模算法整理 来自淘豆网m.daumloan.com转载请标明出处.