利用MATLAB进行验证性实验1划艇比赛的成绩2机动车刹车距离生猪的出售时机模型求解Word格式.docx
《利用MATLAB进行验证性实验1划艇比赛的成绩2机动车刹车距离生猪的出售时机模型求解Word格式.docx》由会员分享,可在线阅读,更多相关《利用MATLAB进行验证性实验1划艇比赛的成绩2机动车刹车距离生猪的出售时机模型求解Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
46.32
85.84
1>
.参数α和β估计
程序如下:
clear;
clc;
n=[1248];
t=[7.216.886.325.84];
logt=log(t);
logn=log(n);
p=polyfit(logn,logt,1);
beta=p
(1)
alfa=exp(p
(2))
2>
.实际值与计算值比较(数据比较和和拟合图形)
参考数据结果:
ans=
17.217.2842
26.886.7799
46.326.3106
85.845.8737
参考图形结果:
图1:
题给拟合图形结果
要求:
1)运行以上程序。
2)编程:
实际值与计算值比较(数据比较和和拟合图形)。
3)用help查询函数polyfit的用法。
2.汽车刹车距离的模型:
d=t1v+kv2
其中,d为刹车距离,变量v为车速,参数t1为反应时间,参数k为比例系数。
取经验值t1=0.75秒。
实际数据表
车速实际刹车距离
(英里/小时)(英尺/秒)(英尺)
2029.344
3044.078
4058.7124
5073.3186
6088.0268
70102.7372
80117.3506
1 用数据拟合求参数k
y=k
其中y=(d-0.75v)/v2
v=[29.344.058.773.388.0102.7117.3];
%英尺/秒
d=[4478124186268372506];
%最大实际刹车距离(英尺)
y=(d-0.75*v)./v.^2;
k=polyfit(v,y,0)
2 用所得模型计算刹车距离和刹车时间(数据比较)
k=;
%输入上题所求得的结果
dd=0.75*v+k*v.^2;
%计算刹车距离
t=d./v;
%计算刹车时间
formatshortg;
[v'
d'
round(10*[dd'
t'
])/10]
3 实际和计算刹车距离的比较(拟合图形)
%输入题1所求得的结果
vh=[20304050607080];
%英里/小时
%英尺/秒
%最大实际刹车距离(英尺)
plot(vh,d,'
r+'
vh,dd,'
b-'
);
title('
实际和计算刹车距离的比较'
axis([20,80,0,510]);
xlabel('
v英里/小时'
ylabel('
d英尺'
1)运行以上程序,结果与教材相应内容比较。
2)题2和题3中要求输入题1所求得的k值。
3)理解程序。
目标函数(生猪出售纯利润,元):
Q(t)=(8-gt)(80+rt)-4t-640
其中,t≥0为第几天出售,g为每天价格降低值(常数,元/公斤),r为每天生猪体
重增加值(常数,公斤)。
求t使Q(t)最大。
1 图解法
绘制目标函数
的图形(0≤t≤20)。
其中,g=0.1,r=2。
g=0.1;
r=2;
fplot(@(t)(8-g*t)*(80+r*t)-4*t-640,[0,20]);
grid;
t'
ylabel('
Q'
2 代数法
对目标函数
用MATLAB求t使Q(t)最大。
其中,r,g是待定参数。
symst;
%定义符号变量t
Q=sym('
(8-g*t)*(80+r*t)-4*t-640'
)%建立符号表达式
dQ=diff(Q,'
)%求微分dQ/dt
t=solve(dQ,t)%求dQ=0的解t
t=eval(t)%求r=2,g=0.1时的t值
Q=eval(Q)%求r=2,g=0.1,t=10时的Q值(最大值)
2)理解程序,对照教材相关内容。
三、实验内容
划艇比赛的成绩
1.用数据拟合求参数α和β。
给出α和β值和模型:
alfa=7.2842
bata=-0.1035
模型:
logt=logα+βlogn或t=αnβ
2.实际值与计算值比较(数据比较和和拟合图形),程序和运行结果。
数据比较:
>
[n'
(alfa*n.^bata)'
]
1.00007.21007.2842
2.00006.88006.7801
4.00006.32006.3109
8.00005.84005.8742
拟合图形:
图2:
拟合图形结果
源程序如下:
n=[1248];
t=[7.216.886.325.84];
logt=log(t);
logn=log(n);
p=polyfit(logn,logt,1);
bata=p
(1);
alfa=exp(p
(2));
x=0:
0.01:
10;
y=alfa*x.^bata;
plot(n,t,'
x,y);
axis[0,10,5,11]
汽车的刹车距离
1.用数据拟合求参数k。
给出k值和模型。
k=0.0258
k=(d-0.75v)/v2
2.用所得模型计算刹车距离和刹车时间(数据比较),运行结果。
k=0.0258;
v=[29.344.058.773.388.0102.7117.3];
d=[4478124186268372506];
dd=0.75*v+k*v.^2;
t=d./v;
formatshortg;
[v'
29.34444.11.5
447882.91.8
58.7124132.92.1
73.3186193.62.5
88268265.83
102.7372349.13.6
117.35064434.3
3.实际和计算刹车距离的比较(拟合图形),运行结果。
vh=[20304050607080];
plot(vh,d,'
title('
axis([20,80,0,510]);
xlabel('
图3:
生猪的出售时机模型求解
1.题1程序运行结果,从函数图估计t为何值时函数取得最大值。
g=0.1;
fplot(@(t)(8-g*t)*(80+r*t)-4*t-640,[0,20]);
grid;
图4:
当t=10时函数取得最大值
2.题2程序运行结果。
symst;
Q=sym('
)
Q=(8-g*t)*(80+r*t)-4*t-640
dQ=diff(Q,'
dQ=-g*(80+r*t)+(8-g*t)*r-4
t=solve(dQ,t)
t=2*(-20*g+2*r-1)/g/r
r=2;
t=eval(t)
t=10
Q=eval(Q)
Q=20
四、实验结果及其分析
1.polyfit函数用法:
polyfit函数是matlab中用于进行曲线拟合的一个函数。
曲线拟合:
已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
调用方法:
polyfit(x,y,n)。
用多项式求过已知点的表达式,其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。
2关于实验:
划艇比赛的成绩.
将浆手人数和比赛平均成绩作为两个向量,根据模型,将两向量分别取对数后进行一次拟合,并求出参数alfa=7.2842和bata=-0.1035。
依据函数模型建立Y与X的函数表达式,根据题给图形,X为以0为起点,以10为终点,以0.01为步长的一维矩阵。
利用plot函数绘制图形时要注意题干中数据点为红色十字形,曲线为蓝色,并且图给Y是从5到11变化,因此要求使用axis函数进行限制
实验中最开始将X变量设置为X=0:
10,因此绘制出图形如下:
图5:
步长为1时拟合图形结果
将步长改为0.1后:
图6:
步长为0.1拟合图形结果
最后步长为0.01才得到满意的结果,因此今后实验中要注意限制。
3.关于实验:
汽车刹车距离
将车速v和刹车距离d作为两个向量,根据模型d=t1v+kv2,y=k其中y=(d-0.75v)/v2。
K的值为v和y进行拟合。
利用拟合进行实际和计算刹车距离的比较,横纵坐标分别为车速和刹车距离,其变化范围为[20,80],[0,510]
4.关于实验:
可用图解法和代数法均可求出二次函数的最值。
在代数法中应用的函数及其用法如下:
1 函数句柄/function_handle(@):
是一种间接调用函数的方式。
语法:
handle=@functionname
or
handle=@(arglist)anonymous_function
描述:
函数句柄(functionhandle)是一种能够提供函数间接调用的matlabvalue。
你可以通过传递句柄来调用各种其他功能。
你也可以将句柄存储到数据结构中备用(例如HandleGraphic回调)。
句柄是matlab的标准数据类型之一。
2 fplot函数:
功能:
在指定的范围内绘制函数图像
使用方法:
fplot在指定的范围内绘制函数图像,函数必须是y=f(x)的形式,其中x是一个指定范围limits的向量,y是和x有相同大小的向量并包含在点x处的值。
如果对一个给定的x值,函数返回多于一个值,则y是每列包含f(x)的每一个分量的矩阵。
fplot(fun,limits)在指定的范围limits内画出函数名为fun的图像。
其中limits是一个指定x轴范围的向量[xminxmax]或者是x轴和y轴范围的向量[xminxmaxyminymax]。
3 syms是定义符号变量;
sym则是将字符或者数字转换为字符。
y=sym(’x'
和symsx;
y=x;
的功能一样。
另外symx和symsx有很大的区别:
symx是将字符‘x’转换为字符,而symsx则是定义符号变量x。
4 diff用法:
diff(函数),求函数的一阶导数;
diff(函数,n),求函数的n阶导数(n是具体整数);
diff(函数,变量名),求对变量的偏导数;
diff(函数,变量名,n),求对变量的n阶偏导数;
5 Solve函数用法:
在MATLAB中,solve函数主要是用来求解代数方程(多项式方程)的符号解析解。
也能解一些简单其他方程的数值解,不过对于解其他方程的能力很弱,此时求出的解往往是不精确或不完整的。
注意可能得到的只是部分的结果,并不是全部解。
6 eval()函数:
其功能就是将括号内的字符串视为语句并运行比如eval('
y1=sin
(2)'
)和语句y1=sin
(2)等价