在这一篇,我们将对matlab的使用进行一下系统的记录和概括,包括对之前已经接触过的方法之类的总结。
一、数据拟合方法
1、多项式拟合
1)多项式拟合指令
多项式拟合的指令就是我们上一篇用过的拟合方式,具体操作就不赘述了。
2)图形窗口多项式拟合
输入plot(x,y)后,在图形窗口的工具中选择基本拟合,然后可以根据残差值选择一个较为合适的函数方程。
2、指定函数拟合
有时候我们需要用自己自定义的函数进行拟合,我们需要编写以下的M文件:
syms t
x = [0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y = [1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02];
f = fittype(‘a * cos(k * t) * exp(w 8 t)’,’independent’,’t’,’coefficients’,{‘a’,’k’,’w’});
cfun = fit(x,y,f) %显示拟合函数
xi = 0:.1:20;
yi = cfun(xi);
plot(x,y,’r*’,xi,yi,’b-‘);
接下来我们来运行它:
程序中,fittype是自定义的拟合函数,cfun = fit(x,y,f)是根据自定义的拟合函数f来进行拟合数据x,y。(PS:此处的数据必须是列向量)
3、曲线拟合工具箱
自行查找与翻阅help????
4、数据拟合应用举例
1)人口预测模型
人口随时间的变化呈非线性过程,而且存在一个与横坐标轴平行的渐近线,故可以用 Logistic曲线模型进行拟合。
开始我做的图象是这样的,我觉得不太对,他没有给我直观而正确的变化感受。
所以我们需要对坐标进行相应的调整,这是我就发现我基础是有多么不牢固了。
PS1:坐标控制
在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使曲线能够尽可能清晰的显示出来。所以,一般情况下用户不必选择坐标轴的刻度范围。但是,如果用户对坐标不满意,可以利用axis函数对其重新设定。其调用格式为:
axis([xmin xmax ymin ymax zmin zmax])
如果只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。如果给出了全部参数,则绘制出三维图形。
axis函数的功能丰富,其常用的用法有:
axis equal :纵横坐标轴采用等长刻度
axis square:产生正方形坐标系(默认为矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on :显示坐标轴
还有:给坐标加网格线可以用grid命令来控制,grid on/off命令控制画还是不画网格线,不带参数的grid命令在两种之间进行切换。
给坐标加边框用box命令控制。和grid一样用法。
后来呢,我发现y的数据类型不太对,原来是matlab把他当作char了。(因为表格用的识图识别出来的)
所以我们顺利的变成了这样:
因为 Logistic曲线模型的基本形式为
所以,只要令y′=1/y,x′=e-t,就可以将其转化为直线模型: y′ =a+bx′
所以我们做一个实时脚本吧~
以上。
PS2:
二、线性规划
规划类问题是常见的数学建模问题,离散系统的优化问题一般都可以通过规划模型来求 解。
来,我们快乐地直接看问题:
1、中央电视台为改版后的《非常6+1》栏目播放两套宣传片。
其中,宣传片甲播映时间为3.5min,广告时间为30s,收视观众为60万;
宣传片乙播映时间为1min,广告时间为 1min,收视观众为20万。
广告公司规定每周至少有3.5min广告,而电视台每周只能为该栏目宣传片提供不多于16min的节目时间。电视台每周应播映两套宣传片各多少次,才能使得收视观众最多?
大致就是高中经典线性规划题。
就这,还用那么麻烦?
算了先看一下matlab要用的函数:
先说线性规划的标准型在此:
基本函数形式:linprog(c,A,b),其返回值为向量x的值
我也不废话了直接应用到上面的题中就是:
由此我们可见:
[x, fval] = linprog(c,A, b, Aeq, beq, LB, UB, X0, OPTIONS)
其中,fval返回目标函数的值;Aeq和beq对应等式约束Ax=b;
LB和UB分别是变量x的下界和上界;X0是x的初始值;OPTIONS是控制参数。
其实最简单的操作也就是这些了。。。
三、非线性规划
投资决策问题:
某企业有n个项目可供选择投资,并且至少要对其中一个项目投资。已知企业拥有住资金A元,投资于第i(i=1,2,…n)个项目需花资金ai元,并预计可收益bi元。试选择最佳投资方案。
要说这道题,反正让我想到了概率论。。。
这是直接地分析,我们最佳投资方案应该是投资额最小,收益最大,什么意思呢:
总收益-总投资最大化就好了=min总投资-总收益
大致如此,乍一看挺没思路的
所以matlab中数学模型大概长这样:
其中,f(x)是标量函数,A,B,Aeq,Beq是相应维数的矩阵和向量;C(x),Ceq(x)是非线性
向量函数。
MATLAB中的命令是:
X = FMINCON(FUN,XO,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
它的返回值是向量下x,其中,FUN是用M文件定义的函数f(x)。X0是x的初始值。
A,B,Aeq.Beq定义了线性约束Ar≤B,Aeq • x=Beq,如果没有线性约束,则A=[],B=[],Aeq=
口 ,Beq=[]。
LB和UB是变量x的下界和上界,如果上界和下界没有约束,则LB=[],UB=
口;如果x无下界,则LB=-inf;如果x无上界,则UB=inf。
NONLCON是用M文件定义的非线性向量函数C(x),Ceq(x)。
OPTIONS定义了优化参数,可以使用MATLAB默认的参数设置。
#由于原例题不适合练习,我们试着用现有的进行matlab函数练习:
我们需要编写M函数文件:
和
然后命令行:
结果:
Great content! Super high-quality! Keep it up! 🙂
Thank you very much,I will try my best!✌