您好,欢迎访问三七文档
河北大学《数学模型》实验实验报告班级专业15计科2班姓名张宇轩学号20151101006实验地点C1-229指导老师司建辉成绩实验项目利用MATLAB进行验证性实验1.划艇比赛的成绩2.汽车刹车距离3.生猪的出售时机模型求解一、实验目的学会利用MATLAB进行验证性实验,熟练掌握用数据拟合求解模型和参数。了解并使用最小二乘多项式拟合函数polyfit,仿照案例今后能够自己解决图形问题。二、实验要求1.划艇比赛的成绩的模型:t=αnβ其中,t为比赛成绩(时间),n为桨手人数,α和β为参数。为适合数据拟合,将模型改为:logt=logα+βlog桨手人数n比赛平均成绩t17.1726.8846.3285.841.参数α和β估计程序如下: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.284226.886.779946.326.310685.845.8737参考图形结果:图1:题给拟合图形结果要求:1)运行以上程序。2)编程:实际值与计算值比较(数据比较和和拟合图形)。3)用help查询函数polyfit的用法。2.汽车刹车距离的模型:d=t1v+kv2其中,d为刹车距离,变量v为车速,参数t1为反应时间,参数k为比例系数。取经验值t1=0.75秒。实际数据表车速实际刹车距离(英里/小时)(英尺/秒)(英尺)2029.3443044.0784058.71245073.31866088.026870102.737280117.3506①用数据拟合求参数k为适合数据拟合,将模型改为:y=k其中y=(d-0.75v)/v2程序如下:clear;clc;v=[29.344.058.773.388.0102.7117.3];%英尺/秒d=[4478124186268372506];%最大实际刹车距离(英尺)y=(d-0.75*v)./v.^2;k=polyfit(v,y,0)②用所得模型计算刹车距离和刹车时间(数据比较)程序如下:clear;clc;k=;%输入上题所求得的结果v=[29.344.058.773.388.0102.7117.3];%英尺/秒d=[4478124186268372506];%最大实际刹车距离(英尺)dd=0.75*v+k*v.^2;%计算刹车距离t=d./v;%计算刹车时间formatshortg;[v',d',round(10*[dd',t'])/10]③实际和计算刹车距离的比较(拟合图形)程序如下:clear;clc;k=;%输入题1所求得的结果vh=[20304050607080];%英里/小时v=[29.344.058.773.388.0102.7117.3];%英尺/秒d=[4478124186268372506];%最大实际刹车距离(英尺)dd=0.75*v+k*v.^2;%计算刹车距离plot(vh,d,'r+',vh,dd,'b-');title('实际和计算刹车距离的比较');axis([20,80,0,510]);xlabel('v英里/小时');ylabel('d英尺');要求:1)运行以上程序,结果与教材相应内容比较。2)题2和题3中要求输入题1所求得的k值。3)理解程序。3.生猪的出售时机模型求解目标函数(生猪出售纯利润,元):Q(t)=(8-gt)(80+rt)-4t-640其中,t≥0为第几天出售,g为每天价格降低值(常数,元/公斤),r为每天生猪体重增加值(常数,公斤)。求t使Q(t)最大。①图解法绘制目标函数Q(t)=(8-gt)(80+rt)-4t-640的图形(0≤t≤20)。其中,g=0.1,r=2。程序如下:clear;clc;g=0.1;r=2;fplot(@(t)(8-g*t)*(80+r*t)-4*t-640,[0,20]);grid;xlabel('t');ylabel('Q');②代数法对目标函数Q(t)=(8-gt)(80+rt)-4t-640用MATLAB求t使Q(t)最大。其中,r,g是待定参数。程序如下:clear;clc;symst;%定义符号变量tQ=sym('(8-g*t)*(80+r*t)-4*t-640')%建立符号表达式dQ=diff(Q,'t')%求微分dQ/dtt=solve(dQ,t)%求dQ=0的解tr=2;g=0.1;t=eval(t)%求r=2,g=0.1时的t值Q=eval(Q)%求r=2,g=0.1,t=10时的Q值(最大值)要求:1)运行以上程序。2)理解程序,对照教材相关内容。三、实验内容划艇比赛的成绩1.用数据拟合求参数α和β。给出α和β值和模型:alfa=7.2842bata=-0.1035模型:logt=logα+βlogn或t=αnβ2.实际值与计算值比较(数据比较和和拟合图形),程序和运行结果。数据比较:[n',t',(alfa*n.^bata)']ans=1.00007.21007.28422.00006.88006.78014.00006.32006.31098.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,'r+',x,y);axis[0,10,5,11][n',t',(alfa*n.^bata)']汽车的刹车距离1.用数据拟合求参数k。给出k值和模型。k=0.0258模型:k=(d-0.75v)/v22.用所得模型计算刹车距离和刹车时间(数据比较),运行结果。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',d',round(10*[dd',t'])/10]ans=29.34444.11.5447882.91.858.7124132.92.173.3186193.62.588268265.83102.7372349.13.6117.35064434.33.实际和计算刹车距离的比较(拟合图形),运行结果。k=0.0258;vh=[20304050607080];v=[29.344.058.773.388.0102.7117.3];d=[4478124186268372506];dd=0.75*v+k*v.^2;plot(vh,d,'r+',vh,dd,'b-');title('实际和计算刹车距离的比较');axis([20,80,0,510]);xlabel('v英里/小时');ylabel('d英尺');图3:拟合图形结果生猪的出售时机模型求解1.题1程序运行结果,从函数图估计t为何值时函数取得最大值。g=0.1;r=2;fplot(@(t)(8-g*t)*(80+r*t)-4*t-640,[0,20]);grid;xlabel('t');ylabel('Q');图4:拟合图形结果当t=10时函数取得最大值2.题2程序运行结果。symst;Q=sym('(8-g*t)*(80+r*t)-4*t-640')Q=(8-g*t)*(80+r*t)-4*t-640dQ=diff(Q,'t')dQ=-g*(80+r*t)+(8-g*t)*r-4t=solve(dQ,t)t=2*(-20*g+2*r-1)/g/rr=2;g=0.1;t=eval(t)t=10Q=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.关于实验:生猪的出售时机模型求解可用图解法和代数法均可求出二次函数的最值。在代数法中应用的函数及其用法如下:①函数句柄/function_handle(@):是一种间接调用函数的方式。语法:handle=@functionnameorhandle=@(arglist)anonymous_function描述:函数句柄(functionhandle)是一种能够提供函数间接调用的matlabvalue。你可以通过传递句柄来调用各种其他功能。你也可以将句柄存储到数据结构中备用(例如HandleGraphic回调)。句柄是matlab的标准数据类型之一。②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]。③syms是定义符号变量;sym则是将字符或者数字转换为字符。y=sym(’x');和symsx;y=x;的功能一样。另外symx和symsx有很大的区别:symx是将字符‘x’转换为字符,而symsx则是定义符号变量x。④diff用法:diff(函数),求函数的一阶导数;diff(函数,n),求函数的n阶导数(n是具体整数);diff(函数,变量名),求对变量的偏导数;diff(函数,变量名,n),求对变量的n阶偏导数;⑤Solve函数用法:在MATLAB中,solve函数主要是用来求解代数方程(多项式方程)的符号解析解。也能解一些简单其他方程的数值解,不过对于解其他方程的能力很弱,此时求出的解往往是不精确或不完整的。注意可能得到的只是部分的结果,并不是全部解。⑥eval()函数:其功能就是将括号内的字符串视为语句并运行比如eval('y1=sin(2)')和语句y1=sin(2)
本文标题:利用MATLAB进行验证性实验-1.划艇比赛的成绩-2.汽车刹车距离-生猪的出售时机模型求解
链接地址:https://www.777doc.com/doc-5709022 .html