数学建模基础
分为四个阶段,阶段一掌握matlab基本用法,阶段二掌握常用的数学建模算法,阶段三学会分析解题阶段四写论文matlab这块主要是掌握matlab矩阵运算,matlab绘图核心算法1目标规划类算法包括线性规划,整数规划,0-1规划,非线性性规划,动态规划,多元规划2.分析方法包括方差分析,回归分析,判别分析,层次分析3.优化类算法包括遗传算法,模拟退火,神经网络,蚁群算法4.方程建模包括微分方程,偏
目录
前言:
分为四个阶段,阶段一掌握matlab基本用法,阶段二掌握常用的数学建模算法,阶段三学会分析解题阶段四写论文
matlab这块主要是掌握matlab矩阵运算,matlab绘图,
githup的使用,看到这两个地方就可以看到介绍,怎样在github上找开元项目链接https://mp.weixin.qq.com/s/wly0npBpYg8aCAuHTCVZ6Q
in:name SpringBoot in:description 初学者,描述后面可以写商城,
![]()
![]()
核心算法
1目标规划类算法包括线性规划,整数规划,0-1规划,非线性性规划,动态规划,多元规划
2.分析方法包括方差分析,回归分析,判别分析,层次分析
3.优化类算法包括遗传算法,模拟退火,神经网络,蚁群算法
4.方程建模包括微分方程,偏微分方程,常微分方程,差分方程
5.图像处理算法包括边缘检测,滤波,图像插值6.时间序列模型
matlab数据类型圆周率pi,查看最值intmin('int2'),intmax('int64'),eps是分辨率,就是数与数之间的间隔比如1到2隔了1,分辨是1,MATLAB常用的内置函数开方sqrt(x),开n次方nthroot(x,n),向零取整fix(),向上取整ceil(),向下取整floor(),取余rem(),
矩阵:矩阵的离散取值A[1;3,[1 3]]取出第一列,第三列,1到3行的值,把一个空的东西赋值给矩阵,就是矩阵的删除,A(:,2:4)=[],矩阵的拼接c=[A B],拼接是行数应该相同,它是在列方向进行拼接,行向量A=[1,2,3],行向量之间用逗号来分隔,列向量之间用;来分隔,取出A中1到3的元素值,A(1:3),有间隔类取法A(1:2:5),从第一个元素开始,每隔2个元素取一个,A([1,2,3]),取出1,2,3的元素,创建线性分布的向量:1:2:100,还可以使用linespace(1:100:20),20是取得个数,取出1到100的元素,取20个,间隔是(0-1)/20,跨行运算符是省略号...,标量与向量的运算,使用常规运算符即可,向量与向量的运算,运算符前带点比如.+,.*,
看向量部分
选取所有行是用一个:号,A(:,1:3)选取所有行第一道第三列,看矩阵的大小有size()即可,
看矩阵部分
看常用的矩阵内置函数,1,创建对角阵V=[2 4 7],v是对角元素,然后diag(V),rand是均匀分布的随机数,改变形状reshape(A,5,2),求最值min(A)得到的是A行或者是列的最小值,如果要得到矩阵的最小值min(min(A)),最大值max(A),求和sum(A),排序sort(),中值median(A),均值mean(A),标准差std(A),这些都是对列做了一个求解,求矩阵的话可以再嵌套一层,点积dot(A,B),产生一个随机数直接使用rand,产生矩阵rand(行,列),这些数是在0-1之间,标准正态分布的随机数randn(),这是一个标准正态分布,就是均值是零方差是1,randperm(10),产生10以内的10个整数,特征值和特征向量[V,d]=eig(A),[ 返回广义特征值的对角矩阵 V,D] = eig(A,B)D 和满矩阵V,其列是对应的右特征向量,矩阵的点乘就是对应元素相乘使用“.*”,矩阵乘法*,矩阵求逆inv(A)
脚本文件就是直接的.m文件,函数文件是直接使用function来定义,函数定义function...end;匿名函数name=@(args)原来的函数名
建模绘图基础
使用二维函数来绘图,利用meshgrid来绘制网格,mesh画图
x=linspace(1,10,500);
y=linspace(-5,5,500);
[X,Y]=meshgrid(x,y);
mesh(x,y)
输入输出,使用input命令获取键盘输入,str=input("输入你的内容"),使用disp命令打印内容到屏幕disp("这是输入的内容"),使用fprintf命令打印格式化内容,fprintf('你的成绩:%.2f',score),这是保留小数点后两位,fprintf('你的成绩:%.2e,score)使用科学计数法来输出;变量的保存和加载,保存使用save命令,加载使用load
Data=rand(10);
save('Data.mat','Data');
load('Data.mat')
使用fopen函数操作文件对象,r读模式,w写模式,a追加,r+读写,w+创建模式读写,a+追加模式创建fp=fopen('test.txt','a+'),使用fprintf(ffp,'this is a test string'),fclose(fp),文件打开之后记得关闭;
关系运算符>,<,<=,==,~=(不等于),得到的是逻辑值真就是1,向量里面比较就是每一个元素进行比较,返回也是一个向量,逻辑运算符&|~;内置逻辑运算函数,any(A),向量中任意非零则返回true,矩阵中则以列向量为基准进行判断,xor为异或,find(A>d)寻找矩阵中满足条件的元素的位置>> A=magic(4);>> find(A>10),找到之后返回矩阵的下标,它是以列为基础的,如果是要找到值 A(find(A>10))这样嵌套即可,就是找到位置之后,在取出矩阵中的值,
条件结构if...else...end结构,分段函数可以使用,fuction也是以end结束,swith..case...end结构,和c的区别是 case 8,8后面没有冒号,for....end,factorial(i); 求阶乘的函数,while...end
Matlab绘图2D绘图包括曲线图散点图,饼图,直方图,极坐标图3D绘图,散点图,曲线图,曲面图。有趣的图像分形叶型图,二维绘图




常用命令hold on(off),在一张图上持续绘图,就是强制把图绘制到一张图上,
function epx_plt1
x=2:0.01:4;
y=3*x.^3;
y1=9*x.^2;
y2=17*x;
plot(x,y,'-b');
hold on;
plot(x,y1,'--g');
plot(x,y2,'-.r')
hold off;
end


图例就是线的说明比如蓝色是什么线绿色是什么线通过函数legend('Theory','Experiment');对数坐标图的使用,比如指数函数,开始x变化小,y值变化大,x就不太能展宽,就要使用对数坐标轴,使用semilogx(x,y)可以实现


直方图bar(),barh(),前面一个是正常的直方图后面一个是睡着的直方图,饼图使用pie(x),x是一个数组是各个元素所占的比例,阶梯图stairs(x,y),火柴图stem(x,y),统计直方图就是直方图使用histogram(y,n),极坐标图使用polarplot(t,r),t是角度,r是轴长,子图是通过subplot()
x=1988:1994;
sle=[8 12 20 22 18 24 27];
stairs(x,sle);
3三维绘图:曲线、散点图
绘制三维曲线是使用plot3(x,y,z),三维火柴图stem3(x,y,z),grid on添加网格,绘制曲面:首先生产网格[X,Y]=meshgrid(x,y),先生成网格再算Z,第二部是使用mesh(X,Y,Z)或者使用surf(X,Y,Z),surf绘制出来的不是很密集,底部要绘制三维的轮廓使用meshc(X,Y,Z);surfc(X,Y,Z),只画轮廓图是使用contour(x,y,z);contourf(x,y,z)二者的区别在于有没有填充,三维柱状图bar3(y),饼图pie3(y)
1.密文破解
01字符的表示及其转换,字符表示使用‘’,str='你好‘,使用下标访问str(1)访问最后一个字符str(end),字符串拼[str1,str2],size(str)获取大小 ,字符表示msg=char('hell','world'),数字转字符int2str(3231), num2str(pi,5) 这个是对浮点数转换,第一个是数,第二个数精度,字符ASCll码double('x'),字符数字转换首先str=char('hell','world'),然后double(str),ASCll码转为字符char(97) ,char可以用来表示维度不同的字符串 str=char('hello','world');
associated_arry=double(str);
encoded_msg=associated_arry.^pi+1213
算法篇:
目标规划类算法
01线性规划,02整数规划03非线性规划04二次规划
01线性规划(LP)问题是在一组线性约束条件下求线性目标函数最大或最小的问题,建议使用图示法来处理,首先有约束条件绘制曲线,在可行解的范围取值计算得最值,但是这种做法有极限就是复杂曲线比较难画,我们在matlab中都转化为求最小值,约束条件都已转化为小于或小于等于或等于就是st,大于的只需要在两边乘以一个负号, 在matlab中提供函数linprog()来求解线性规划问题
整数规划:定义规划中的变量(全部或部分)限制为整数时,称为整数规划,若在线性规划模型中,变量限制为整数,称为整数线性规划 ,求解方法1.分支定界法,2.割平面法,1,2可求解纯整数规划或混合线性规划,3,隐枚举法求解0-1线性规划,4.蒙特卡洛法可求解各种类型规划问题,分支定界法:有点像有顺序的中值排序算法,不停的对可行解区域做分割,算出小区域的
目标下界
非线性规划:如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划,使用函数FMINCON,

二次规划,二次规划是线性规划的一种,若某非线性规划的目标函数为自变量x的二次函数,约束条件又是线性,就称这种规划为二次规划使用函数quadprog()求解,

分析方法:
方差分析,回归分析,层次分析,判别分析
0.1方差分析方法,用数理统计的方法分析实验结果,鉴别各因素对结果影响程度,我们关心的实验结果称为指标,可以控制的条件称为因素,因素所处的状态称为水平,有单因素分析和双因素方差分析,单因素只分析,一个变量对指标的影响,在matlab中使用anoval.若各数据个数相等,称为均衡数据,若各组数据个数不等,称为非均衡数据,均衡数据使用方法p=anoval1(x),返回值p是一个概率,使用下面代码
1程序


非均衡数据使用p=avova1(x,group),x为向量,用从矩阵中取数据的方法转为向量x=[x(1:4),x(16),x(5:8),x(9:11),x(12:15)];

回归分析就是对拟合问题做统计,回归分析就是在一组数据的基础上研究这样几个问题,1,建立因变量y与自变量x1,x2,x3,....xm之间的回归模型(经验公式),利用回归模型对y进行预测或控制,

matlab求解:b=regress(Y,X),残差,
三,经验判别,预测类别
神经网络算法,前馈网络主要是函数映射,可以利用全局极小值,它主要用来求解最优化问题,反馈网络可以根据结果来调整权重,

蚁群算法:蚂蚁找食物总是可以找到从住处到蚂蚁舍的一个最短路径,有群体合作,正反馈选择,并行计算三大特点
首先要生产一定数量的蚁群,让每一只蚂蚁建立一个解或解的一部分,每一只蚂蚁从问题的初始状态出发,根据浓度选择下一个要转移的状态,直到建立起了一个解;旅行商问题以信息素做为媒介相互通信,蚂蚁的转移是有一定的概率,属于解集就转移,不属于就不转移,
微分方程建模,微分方程建模是数学建模的重要方法,步骤如下
1.根据实际要求确定要研究的量(自变量,未知函数,必要参数等)并确定坐标系。2.找出这些量所满足的基本规律(物理的,几何的化学的或生物学的等等),列方程有抓大放小或者直接按照规律列方程,在matalb中如果这个变量是常数但是我们不确定是什么我们用syms来声明,非线性的微分方程我们一般是解不出来的,这个时候就需要我们用数值解了,首先将微分方程离散化,可以使用差商近似导数,2)数值积分两个函数值之差用积分来代替3)使用Talor级数来展开,使用差分方程来近似;有多个变量的微分方程称为偏微分方程,初始条件和边界条件,未附加定解条件的偏微分方程称为泛定方程,微分方程的差分法,差分法又称有限差分方法或网格法,是求解微分方程定解中应用最广泛的方法,
更多推荐


所有评论(0)