matlab数学实验.docx
《matlab数学实验.docx》由会员分享,可在线阅读,更多相关《matlab数学实验.docx(41页珍藏版)》请在冰点文库上搜索。
matlab数学实验
《管理数学实验》实验报告
班级姓名
实验1:
MATLAB的数值运算
【实验目的】
(1)掌握MATLAB变量的使用
(2)掌握MATLAB数组的创建,
(3)掌握MATLAB数组和矩阵的运算。
(4)熟悉MATLAB多项式的运用
【实验原理】
矩阵运算和数组运算在MATLAB中属于两种不同类型的运算,数组的运算是从数组元素出发,针对每个元素进行运算,矩阵的运算是从矩阵的整体出发,依照线性代数的运算规则进行。
【实验步骤】
(1)使用冒号生成法和定数线性采样法生成一维数组。
(2)使用MATLAB提供的库函数reshape,将一维数组转换为二维和三维数组。
(3)使用逐个元素输入法生成给定变量,并对变量进行指定的算术运算、关系运算、逻辑运算。
(4)使用MATLAB绘制指定函数的曲线图,将所有输入的指令保存为M文件。
【实验内容】
(1)在[0,2*pi]上产生50个等距采样数据的一维数组,用两种不同的指令实现。
0:
(2*pi-0)/(50-1):
2*pi或linspace(0,2*pi,50)
(2)将一维数组A=1:
18,转换为2×9数组和2×3×3数组。
reshape(A,2,9)
ans=
Columns1through7
135791113
2468101214
Columns8through9
1517
1618
reshape(A,2,3,3)
ans(:
:
1)=
135
246
ans(:
:
2)=
7911
81012
ans(:
:
3)=
131517
141618
(3)A=[0234;1350],B=[1053;1505],计算数组A、B乘积,计算A&B,A|B,~A,A==B,A>B。
A.*B
ans=
001512
11500
A&B
ans=
0011
1100
A|B
ans=
1111
1111
~A
ans=
1000
0001
A==B
ans=
0000
1000
A>=B
ans=
0101
1010
(4)绘制y=0.5
-t*t*sin(t),t=[0,pi]并标注峰值和峰值时间,添加标题y=0.5
-t*t*sint,将所有输入的指令保存为M文件。
a=0.5
b=1/3
t=0:
0.001:
pi
y=a*exp(b*t)-t.*t.*sin(t)
[y_max,t_max]=max(y)
t_text=['t=',num2str(t(t_max))]
y_text=['y=',num2str(y_max)]
max_text=char('maximum',t_text,y_text)
tit=['y=a*exp(',num2str(b),'t)-t*t*sin(t)']
holdon
plot(t,y,'y.')
plot(t(t_max),y_max,'r')
text(t(t_max)+0.3,y_max+0.1,max_text)
title(tit),xlabel('t'),ylabel('y'),holdoff
【实验心得与总结】
通过这次试验让我了解常用简单函数的功能,学会利用函数解决一些;数值计算和符号计算的实际问题;利用Matlab的help命令查询一些函数的功能。
利用MATLAB可以让繁琐的计算问题变得更加简单化,如矩阵运算等。
\
实验2:
MATLAB绘图
【实验步目的】
利用MTALAB画墨西哥帽子,及参数方程的图像
【实验原理】
(1)二维绘图命令:
plot(x,y)函数
(2)三维绘图命令中三维曲线:
plot3(x,y,z),
(3)利用mesh函数画三维的网格表面的。
【实验内容】
(含参考程序、实验结果及结果分析等)
画出函数图形
。
方程:
【参考程序】
>>t=0:
0.1:
4*pi;
>>plot3(2*cos(t),t.^3,t)
【实验结果】
画出曲面
的图像。
方程:
【参考程序】
x=-7.5:
0.5:
7.5;
y=x;
[xx,yy]=meshgrid(x,y);
R=sqrt(xx.^2+yy.^2)+eps;
z=sin(R)./R;
surf(xx,yy,z)
【实验结果】
【实验心得与总结】
Matlab的常见错误:
Innermatrixdimensionsmustagree
1、因为在Matlab的输入变量是矩阵,参与运算的矩阵维数必须对应,矩阵相应元素的运算必须全部加dot(点),例2中方程如果这样输入:
x=2*(cos(t)+t*sin(t)),就会出现该错误.
2、mesh函数是用来画三维的网格表面的。
三维空间中的一个点是用(x,y,z)来表示的,mesh就是把这些点之间用网格连接起来。
实验3:
MATLAB微积分问题的计算
【实验目的】利用MTALAB求解二重积分、勒展开式及级数求和。
【实验原理】
1.利用int(int(f,x,a,b),y,c,d)函数求二重积分计算累次积分
2.利用泰勒函数taylor(f,n,x,a)来求f(x,y)的n-1阶泰勒展开式
;
3.利用函数symsum(f,k,n1,n2)来求级数的和函数
【实验内容】(含参考程序、实验结果及结果分析等)
求
。
【参考程序】
>>symsxy
>>z=x*y;
>>f=int(int(z,y,2*x,x^2+1),x,0,1)
【实验结果】
f=1/12
将f(x)=lnx展开为幂为(x-2)的5阶泰勒展开式。
【参考程序】
>>symsxn;
>>f=(-1)^n*x^(n+1)/(n+1);
>>symsum(f,n,1,inf)
【实验结果】
ans=log(1+x)-x
级数求和
。
【参考程序】
>>symsxn;
>>f=(-1)^n*x^(n+1)/(n+1);
>>symsum(f,n,1,inf)
【实验结果】
ans=log(1+x)-x
【实验心得与总结】
1、在实验过程中,要是一句程序结束后加了分号,则说明,不要求执行程序时输出执行结果;
2、在matlab中是区别大小写的,如果N写成n会出现Undefinedfunctionorvariable'n'.Undefinedfunctionorvariable'n'.的错误提示.
实验4:
MATLAB优化计算
【实验目的】
掌握应用matlab求解无约束最优化问题的方法
【实验原理与方法】
1:
标准形式:
2.无约束优化问题的基本算法
一.最速下降法(共轭梯度法)算法步骤:
⑴给定初始点
,允许误差
令k=0;
⑵计算
;
⑶检验是否满足收敛性的判别准则:
,
若满足,则停止迭代,得点
,否则进行⑷;
⑷令
,从
出发,沿
进行一维搜索,
即求
使得:
;
⑸令
,k=k+1返回⑵.
最速下降法是一种最基本的算法,它在最优化方法中占有重要地位.最速下降法的优点是工作量小,存储变量较少,初始点要求不高;缺点是收敛慢,最速下降法适用于寻优过程的前期迭代或作为间插步骤,当接近极值点时,宜选用别种收敛快的算法.
二.牛顿法算法步骤:
(1)选定初始点
,给定允许误差
,令k=0;
(2)求
检验:
若
则
停止迭代,
.否则,转向(3);
(3)令
(牛顿方向);
(4)
转回
(2).
如果f是对称正定矩阵A的二次函数,则用牛顿法经过一次迭代
就可达到最优点,如不是二次函数,则牛顿法不能一步达到极值点,
但由于这种函数在极值点附近和二次函数很近似,因此牛顿法的收
敛速度还是很快的.
牛顿法的收敛速度虽然较快,但要求Hessian矩阵要可逆,要计算二阶导数和逆矩阵,就加大了计算机计算量和存储量.
【实验内容】
1.求f=2
在0主程序为wliti1.m:
f='2*exp(-x).*sin(x)';
fplot(f,[0,8]);%作图语句
[xmin,ymin]=fminbnd(f,0,8)
f1='-2*exp(-x).*sin(x)';
[xmax,ymax]=fminbnd(f1,0,8)
运行结果:
xmin=3.9270ymin=-0.0279
xmax=0.7854ymax=0.6448
2.对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如
何剪法使水槽的容积最大?
先编写M文件fun0.m如下:
functionf=fun0(x)
f=-(3-2*x).^2*x;
主程序为wliti2.m:
[x,fval]=fminbnd('fun0',0,1.5);
xmax=x
fmax=-fval
运算结果为:
xmax=0.5000,fmax=2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.
实验5:
MATLAB图论问题计算
【实验目的】
了解用Matlab软件求解图论模型及层次分析模型的方法。
【实验内容与原理】
内容:
1.某城市要建立一个消防站,为该市所属的七个区服务,如图所示.问应设在那个区,才能使它至最远区的路径最短。
2.某矿区有七个矿点,如图所示.已知各矿点每天的产矿量
(标在图的各顶点上).现要从这七个矿点选一个来建造矿厂.问应选在哪个矿点,才能使各矿点所产的矿运到选矿厂所在地的总运力(千吨公里)最小.
原理:
利用层次分析法和图论方法模型的一般概念,理解建立层次分析法和图论方法模型的一般方法,初步学会建立层次分析法和图论方法模型以解决实际问题。
【操作方法与步骤】
步骤:
1.
(1)用Floyd算法求出距离矩阵D=
.
(2)计算在各点
设立服设施的最大服务距离
(3)求出顶点
,使
建立M文件
a=[03infinfinfinfinf;
302inf182.5inf;
inf2062infinf;
infinf603infinf;
inf182304inf;
inf2.5infinf401.5;
infinfinfinfinf1.50];
[D,R]=floyd(a)
点击运行
则
就是要求的建立消防站的地点.此点称为图的中心点.
2.
(1)求距离阵D=
.
(2)计算各顶点作为选矿厂的总运力
(3)求
使
,
(4)建立M文件
a=[03infinfinfinfinf;
302infinf4inf;
inf2062infinf;
infinf601infinf;
infinf2104inf;
inf4infinf401.5;
infinfinfinfinf1.50];
[D,R]=floyd(a)
q=[3,2,7,1,6,1,4];
m=0;
fori=1:
7
forj=1:
7
m=m+q(i)*D(i,j);
end
m
m=0;
end
点击运行
(5)则
就是选矿厂应设之矿点.此点称为图G的重心或中位点.
【实验结果与分析】
实验结果与分析:
1.
S(v1)=10,S(v2)=7,S(v3)=6,S(v4)=8.5,S(v5)=7,S(v6)=7,S(v7)=8.5
S(v3)=6,故应将消防站设在v3处。
2.
由上述公式可得:
m(v1)=38.5*3=115.5,m(v2)=23.5*2=47,m(v3)=23.5*7=164.5,m(v4)=28.5,m(v5)=23.5*6=141,m(v6)=27.5,m(v7)=35*4=140
再求其中的最小值,m(v6)=27.5,则
就是选矿厂应设之矿点.
实验6:
MATLAB计算机模拟计算
【实验目的】
学会用数学软件matlab和蒙特卡洛方法估计积分值,并于其中应用概率论中的概率密度等知识点。
【实验问题】
估计积分值,并对误差进行估计。
【实验要求】
针对要估计的积分选择适当的概率分布设计蒙特卡洛估计算法;
利用计算机产生所选分布的随机样本的估计积分值;
通过计算平均误差对估计结果进行评价。
【实验过程分析】
(x为运行结果平均值,y为样本方差)
估计程序如下:
clc;
clear;
m=10;
n=10000;
d=0;
e=0;
fori=1:
m
d=0;
a=rand(1,n);
forj=1:
n
b=a(j)+2;
c=b^2;
e(i)=d+c/n;
d=e(i);
end
fprintf('e=%.8f\n',e(i))
end
p=sum(e)/m;
forj=1:
m;
s(j)=(e(j)-p)^2;
end
q=sum(s);
fprintf('x=%.8f\ny=%.8f\n',p,q);
结果为:
e=6.34879520
e=6.34068140
e=6.35081124
e=6.31353632
e=6.35586630
e=6.33058791
e=6.32419121
e=6.33707454
e=6.30357011
e=6.35063255
x=6.33557468
y=0.00304243
2.估计程序变动如下:
b=a(j)*3;
c=b*sin(b)*3;
结果为:
e=3.12211717
e=3.11373037
e=3.07484948
e=3.08660758
e=3.10052243
e=3.10475698
e=3.13762746
e=3.16481618
e=3.11552000
e=3.09615989
x=3.11167076
y=0.00669223
3.估计程序变动如下:
b=exp(-a(j)^2/2);
c=b/n*(2*pi)^0.5;
e(i)=d+c/2;
结果为:
e=0.88617655
e=0.88538972
e=0.88635209
e=0.88575809
e=0.88653705
e=0.88606366
e=0.88634011
e=0.88613926
e=0.88573325
e=0.88644154
x=0.88609313
y=0.00000132
4.估计程序变动如下:
b=exp(a(j)^2);
c=b/n;
e(i)=d+c;
结果为:
e=1.46211146
e=1.46154792
e=1.46327379
e=1.46256348
e=1.46318297
e=1.46235828
e=1.46241378
e=1.46316145
e=1.46203052
e=1.46280489
x=1.46254485
y=0.00000320
5.估计程序变动如下:
b=a(i)*4;
c=1/((1+b^2)^0.5);
e(i)=d+c*4/n;
结果为:
e=1.98511173
e=1.02167881
e=1.26713031
e=0.98770837
e=1.14216662
e=1.75642022
e=1.97055988
e=1.96227794
e=1.83229787
e=1.06190231
x=1.49872541
y=1.90228258
【实验结果与分析】
通过对实验所得平均值与真实值的比较,可以看出实验结果与真实值相比非常接近,而且样本方差很小,从而说明概率分布的选取比较适当,计算机实验很准确。
实验7:
MATLAB与马尔科夫预测模型
【实验目的】
基于matlab编程应用马尔可夫预测模型
【实验原理】
马尔可夫通过实践认为:
世界上无论是社会领域还是自然领域,有一类事物的变化过程只与事物的近期状态有关,与事物的过去状态无关,这类事物的性质称为无后效性。
例如,事物π,从初始状态π(0)起,变动一次后为π
(1),变动n次后为π(n),则π(n)仅与π(n-1)有关,与n-1以后的各次变动无关。
马尔可夫链:
如果n个连续变动的事物,在变动的过程中,其中任一次变动的结果都具有无后效性,那么,这n个连续变动事物的集合,就叫做马尔可夫链,这类事物的演变过程就叫做马尔可夫过程。
【实验内容】
1.农业收成变化预测
考虑某地区农业收成变化的三个状态,即“丰收”、“平收”和“欠收”。
记E1为“丰收”状态,E2为“平收”状态,E3为“欠收”状态。
下表给出了该地区1965~2004年期间农业收成的状态变化情况。
试计算该地区农业收成变化的状态转移概率矩阵,并进行预测。
使用matlab实现如下:
P=[0.20000.46670.3333;0.53850.15380.3077;0.36360.45450.1818];
%读入状态转移概率矩阵
x=[0,1,0];
%读入初始状态概率向量(2004年的农业收成状态)
fori=1:
11%预测今后11年(2005-2015)的农业收成状态
y=x*P^i
end
运行结果如下:
y=0.53850.15380.3077
y=0.30240.41480.2827
y=0.38670.33340.2798
y=0.35860.35890.2823
y=0.36770.35090.2813
y=0.36480.35340.2817
y=0.36570.35260.2815
y=0.36540.35290.2816
y=0.36550.35280.2815
y=0.36540.35280.2815
y=0.36540.35280.2815
2.市场占有率预测
某厂对某产品的市场占有率和销售情况进行了调查:
一月份共销售了50万件,其中普通、一级、特级品分别为35、10、5万件。
二月份中,一月份买普通品的顾客25%的顾客转买一级品,8%的顾客转买特级品;一月份买一级品的顾客10%转买特级品,3%转买普通品;一月份买特级品的顾客2%买普通品,15%转买一级品。
请预测以后月份各个等级产品的市场占有率。
由所给的资料可知
使用matlab实现如下:
P=[0.670.250.08;0.030.870.1;0.020.150.83];
%读入状态转移矩阵
x=[0.70.20.1];
%读入初始状态概率向量(一月份各等级产品的市场占有率)
fori=1:
11%预测今年剩余11个月各产品等级的市场占有率
y=x*P^i
end
运行结果如下:
y=0.47700.36400.1590
y=0.33370.45980.2065
y=0.24150.51440.2441
y=0.18210.54450.2734
y=0.14380.56030.2959
y=0.11910.56780.3131
y=0.10310.57070.3262
y=0.09270.57120.3361
y=0.08600.57050.3435
y=0.08160.56940.3490
y=0.07870.56810.3532
结论:
顾客对普通品的需求有减少的趋势,对一级品和特级品的需求有增加的趋势,因此,可以调整相应等级产品的产量。
实验8:
基于MATLAB的灰色预测模型
【实验目的】
实验目的:
掌握灰色预测模型及其应用
基本内容:
灰色预测模型的提出,建模以及实现代码。
【实验内容】
灰色系统(GreySystem)理论是我国著名学者邓聚龙教授20世纪80年代初创立的一种兼备软硬科学特性的新理论。
该理论将信息完全明确的系统定义为白色系统,将信息完全不明确的系统定义为黑色系统,将信息部分明确、部分不明确的系统定义为灰色系统。
由于客观世界中,诸如工程技术、社会、经济、农业、环境、军事等许多领域,大量存在着信息不完全的情况。
要么系统因素或参数不完全明确,因素关系不完全清楚;要么系统结构不完全知道,系统的作用原理不完全明了等,从而使得客观实际问题需要用灰色系统理论来解决。
灰色预测是应用灰色模型GM(1,1)对灰色系统进行分析、建模、求解、预测的过程。
由于灰色建模理论应用数据生成手段,弱化了系统的随机性,使紊乱的原始序列呈现某种规律,规律不明显的变得较为明显,建模后还能进行残差辨识,即使较少的历史数据,任意随机分布,也能得到较高的预测精度。
因此,灰色预测在社会经济、管理决策、农业规划、气象生态等各个部门和行业都得到了广泛的应用。
一、GM(1,1)模型建立
设有k个原始非负样本序列
为揭示系统的客观规律,灰色系统理论采用了独特的数据预处理方式,对序列{
}进行一阶累加生成,即AGO生成,
由此得生存数列:
GM(1,1)模型的原始形式为:
为
的紧邻值生存序列
其中
GM(1,1)模型的基本形式:
若
=
为参数列,且
则GM(1,1)模型
的最小二乘估计参数列满足
关于
的白化方程也叫影子方程为:
定理:
白化方程的解也称时间响应函数为:
GM(1,1)模型
的时间响应序列为
实际预测值为
二、模型检验
为确保所建立的GM(1,1)模型有较高的预测精度,还需要进行以下检验
(1)求出
及
之残差e(k)、相对误差
和平均相对误差
:
,
.
(2)求出原始数据平均值x:
.
三、残差修正模型
记
,当然我们知道
并不一定全为负或者全为正,这时我们令
同时令
则
是一个非负序列,我们可以用方法来建立它的GM模型,求解,得出其预测值
而后还原残差预测值
最后用
修正原来的预测值,得到修正后的预测值
.
四、实现代码
clearall
X0=input('请输入序列矩阵');%输入数据请用如例所示形式:
[48.757.1768.7692.15]或者[43823050,44649620,4579375046613050477154404852627049713050],该向量为原始向量X0n=length(X0);
fori=2:
n%开始进行建模可行性分析
Q(i)=X0(i-1)/X0(i);