1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 《数学建模》实验指导书 目 录 实验一Matlab概述与简单计算 4课时 实验二 符号函数及其微积分 2课时 实验三 多元函数及其微积分 2课时 实验四 无穷级数及曲线拟合 2课时 实验五 线性代数
2、 2课时 实验六 数理统计 2课时 实验七 优化问题的matlab求解 2课时 实验八MATLAB编程基础 4课时 实验一 MATLAB概述与简单计算 【实验学时】4学时 【实验目的和要求】 实验目的: 熟悉Matlab工作界面, 掌握Matlab的基本命令与基本函数, 掌握Matlab的基本赋值
3、与运算。经过具体实例, 掌握Matlab的基本使用方法。 实验要求: 1. 掌握Matlab的一些基本操作命令和基本函数; 2.掌握Matla的基本赋值与有运算。 【实验步骤】 1. 熟练Matlab软件的进入与运行方式及工作界面; 2. MATLAB基本命令与基本函数使用; 3. MATLAB的基本赋值与运算。 【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件 【实验内容】 1.显示当前日期, 并在屏幕上显示当年度各月的月历; fix(clock) 结果: ans = 12
4、 1 21 2 21 2. sind(48)+cosd(24)-log(3.56) 结果: ans = 0.3869 3. x=3.25; y=2*(log(3*x+8))^2-5*log(x) 结果: y = 10.6539 4.输入矩阵, 并求矩阵的行列式值和逆矩阵。 a=[2 -1 3;3 1 -6;4 -2 9]; det(a) inv(a) 结果: ans = 15 ans = -0. 0. 0. -
5、3.4000 0.4000 1.4000 -0.6667 0 0.3333 实验二 符号函数及其微积分 【实验学时】2学时 【实验目的和要求】 实验目的: 掌握符号函数的基本运算、 二维图形的绘制。 实验要求: 1.掌握符号函数计算; 2.掌握二维图形的各种绘制命令。 【实验步骤】 1.符号函数计算; 2.绘制二维图形; 3.符号函数极限。 【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件 【实验内容】 1.求函数的复合函数: , 求; syms x f g f=x^3+3;
6、 g=3*tan(3*x-2); compose(f,g) 结果: ans = 27*tan(3*x - 2)^3 + 3 2. 用plot命令作的图像; x=[-2:0.01:2]; y=(power(x,3))/3-2; plot(y,x, 'r'); hold on; e=exp(1); x=[1:0.01:e]; y=power(2,x)-log(x); plot(y,x) 3.用fplot命令作的图像; y='sin(x)'; fplot(y,[0 2*pi]) hold on y='tan(x)-log(x)'; fplot(y,[-p
7、i pi]) 实验三 多元函数及其微积分 【实验学时】2学时 【实验目的和要求】 实验目的: 掌握三维图形的绘制, 掌握多元函数的微积分。 实验要求: 1.熟练操作各种三维图形的绘制; 2.掌握多元函数的微积分计算命令。 【实验步骤】 1.绘制三维图形; 2.计算多元函数微积分。 【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件 【实验内容】 1.使用mesh命令绘制的网格图; x=[-2:0.01:2]; y=[-3:0.01:3]; [x y]=meshgrid(x,y); z=2*x.^2+3*y.^2; mesh(x
8、y,z); 2.使用surf命令绘制的曲面图; x=[-3:0.01:3]; y=[0:0.01:4]; [x y]=meshgrid(x,y); y=x.^2; surf(x,y) 3. 绘制方程的空间曲线图; t=[0:0.01:8*pi]; x=2*cos(t); y=2*sin(t); z=2*t; plot3(x,y,z); grid on; 4.绘制矩阵的三维条形图的图像; x= [3 6 4;2 4 1;1 2 3]; bar3(x) 实验四 符号方程的求解 【实验学时】2学时 【实验目的和要求】 实验目的: 熟练掌握代数方程、
9、 线性方程、 非线性方程、 常微分方程的符号解的求解命令。 实验要求: 1.能将课本上例题熟练演习; 2.能运用所学的各种方程符号解求解命令熟练完成课后习题。 【实验步骤】 1.代数方程的符号解求解; 2.符号线性方程( 组) 的求解; 3.非线性符号方程的求解; 4.常微分方程的符号解。 【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件 【实验内容】 1.求高次方程的解; syms x a y=power(x,4)-3*a*power(x,3)+4*a.^2*x-2; solve(y,x) 3. 解方程组; +998- sy
10、ms x y [x y]=solve('2*power(x,3)+x*y-3*y^2-2*y+2=0','power(x,3)-3*x*y=2*y^2+5*y-3=0') 3.解微分方程; dsolve('D3x+x=0','t') 结果: ans = C8*exp(-t) + C6*exp(t/2)*cos((3^(1/2)*t)/2) + C7*exp(t/2)*sin((3^(1/2)*t)/2) 4. 计算微分方程组; y=dsolve('Dx+3*x-y=0','Dy-8*x+y=0','x(0)=1','y(0)=4','t') 结果: y =
11、 y: [1x1 sym] x: [1x1 sym] 实验五 线性代数 【实验学时】2学时 【实验目的和要求】 实验目的: 熟练掌握矩阵的基本操作, 会运用解线性方程组的命令, 能运用命令求解线性方程组的数值解。 实验要求: 1.熟练演习书上例题; 2.能运用所学的各种命令求解完成课后习题。 【实验步骤】 1.基本的矩阵操作; 2.线性方程组的求解; 3.矩阵的分解; 4. 线性方程组的数值解。 【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件 【实验内容】 1., 求A和B的点积、 叉积, A、 B和C的混合
12、积; A=[1 2 3]; B=[3 1 4]; C=[9 -1 4]; dot(A,B) cross(A,B) dot(A,cross(B,C)) 结果: ans =17 ans = 5 5 -5 ans = 20 2. , 求, . a=[2 -1;-2 -2]; b=[2 -3;0 -4]; c=[1 2]; d=eye(2); 3*a a+b a*d a.*d a*c a\b a.\b a.^b 结果: ans = 6 -3 -6 -6 ans =
13、 4 -4 -2 -6 ans = 2 -1 -2 -2 ans = 2 0 0 -2 ans = 0.6667 -0.3333 -0.6667 2.3333 ans = 1 3 0 2 ans = 4.0000 -1.0000 1.0000 0.0625 3.求解4阶随机矩阵的特征值和特征向量; A=rand(4); [x y]=eig(A) 结果: x = 0.488
14、3 + 0.0000i -0.2208 + 0.2328i -0.2208 - 0.2328i -0.4513 + 0.0000i 0.4126 + 0.0000i 0.6612 + 0.0000i 0.6612 + 0.0000i 0.2778 + 0.0000i 0.6205 + 0.0000i -0.1999 + 0.1291i -0.1999 - 0.1291i 0.6267 + 0.0000i 0.4542 + 0.0000i -0.2364 - 0.5894i -0.2364 + 0.5894i -0.5713 + 0.000
15、0i y = 2.4478 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.5604 + 0.3177i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.5604 - 0.3177i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0
16、000i -0.0946 + 0.0000i 4.分别用直接求解法、 Jacobi迭代法、 Gauss-Seidel迭代法和SOR迭代法求解方程组 直接法: [x1 x2 x3]=solve('12*x1-3*x2+3*x3=15','18*x1-3*x2+x3=15','-x1+2*x2+x3=6') 结果: x1 = 1 x2 = 2 x3 = 3 Jacobi迭代法: .m文件 function [x,k,index]=Jacobi(A,b,ep,it_max) if nargin<4 it_max=100000; end if nargin
17、<3 ep=1e-5; end n=length(A); k=0; x=zeros(n,1); y=zeros(n,1); index=1; while 1 for i=1:n y(i)=b(i); for j=1:n if j~=i y(i)=y(i)-A(i,j)*x(j); end end if abs(A(i,i))<1e-10 || k==it_max index=0;
18、
return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf) 19、 100
index =
0
Gauss-Seidel迭代法: .m文件
function [v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp)
step=0;
error=inf;
s=size(A);
D=zeros(s(1));
vChain=zeros(15,3); k=1;
fx0=x0;
for i=1:s(1)
D(i,i)=A(i,i);
end;
L=-tril(A,-1);
U=-triu(A,1);
while error>=errorBound & step 20、x0=inv(D)*(L+U)*x0+inv(D)*b;
vChain(k,:)=x0';
k=k+1;
error=norm(x0-fx0);
fx0=x0;
step=step+1;
end
v=x0;
sN=step;
命令: A=[12 -3 3;18 -3 1;-1 2 1];
b=[15 ;15; 6];
x0=[0;0;0];
[v,sN,vChain]=gaussSeidel(A,b,x0,0.00001,11)
结果: v =
-125.1885
-158.2497
359.0649
sN =
11
21、
vChain =
1.2500 -5.0000 6.0000
-1.5000 4.5000 17.2500
-1.9375 -8.2500 -4.5000
0.3125 -18.1250 20.5625
-8.4219 3.7292 42.5625
-8.4583 -41.3438 -9.8802
-6.6159 -59.0434 80.2292
-33.5681 -17.9523 117.4709
-32.6058 -167.2519 8.3364
22、 -42.6471 -197.8560 307.8980
-125.1885 -158.2497 359.0649
0 0 0
0 0 0
0 0 0
0 0 0
SOR迭代法: .m文件
function [x,k,index]=SOR(A,b,ep,w,it_max)
if nargin<5
it_max=150000;
end
if nargin<4
23、 w=1;
end
if nargin<3
ep=1e-5;
end
n=length(A);
k=0;
x=zeros(n,1);
y=zeros(n,1);
index=1;
while 1
y=x;
for i=1:n
z=b(i);
for j=1:n
if j~=i
z=z-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10 || k==it_m 24、ax
index=0;
return;
end
z=z/A(i,i);
x(i)=(1-w)*x(i)+w*z;
end
if norm(y-x,inf) 25、
150000
index =
0
实验六 数理统计
【实验学时】2学时
【实验目的和要求】
实验目的: 熟练掌握常见基本数据分析函数, 能熟练运用命令计算方差和标准方差、 协方差和相关系数。
实验要求:
1.熟练演习书上例题;
2.能运用所学的各种命令求解完成课后习题。
【实验步骤】
1.常见基本数据分析函数;
2.方差与标准方差;
3.协方差和相关系数。
【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件
【实验内容】
1.列举一些统计工具箱中玉概率密度函数、 分布函数有关的函数;
概率密度函数 26、 :
betapdf 贝塔分布的概率密度函数 binopdf 二项分布的概率密度函数 chi2pdf 卡方分布的概率密度函数 exppdf 指数分布的概率密度函数 fpdf f分布的概率密度函数
gampdf 伽玛分布的概率密度函数 geopdf 几何分布的概率密度函数 hygepdf 超几何分布的概率密度函数 分布函数:
betacdf 贝塔分布的累加函数 binocdf 二项分布的累加函数 chi2cdf 卡方分布的累加函数 expcdf 指数分布的累加函数 fcdf f分布的累加函数 gamcdf 伽玛分布的累加函数 geocdf 几何分布的累加函 27、数 hygecdf 超几何分布的累加函数 logncdf 对数正态分布的累加函数
2.叙述有哪些统计量能够分别用来描述样本的集中趋势和离中趋势。各统计量进行度量时有什么优缺点; .
方差: 优: 一次能够分析两个因素的独立作用,还能够分析交互作用
缺: 当水平较多时,进行分析比较次数多,很麻烦
标准差是离均差平方和平均后的方根,更能反映一个数据集的离散程度.
一般统计使用标准差更为广泛,特别是样本量足够大的情况下,它更能反映数据的离散程度
离差: 反映了真实值偏离平均值的差距。可能出现结果与平均预期的偏离程度, 代表风险程度的大小。
3.下面列出的石某工厂随机选取的20只部 28、件的装配时间( 分钟)
9.8 10.4 10.6 9.6 9.7 9.9 10.9 11.1 9.6 10.2 10.3 9.6 9.9 11.1 10.5
10.1 9.8 10.3 9.7 10.1
设装配时间的总体服从正态分布, 方差为0.4, 是否能够认为装配时间的均值在0.05的水平上不小于10.
A=[ 9.8 10.4 10.6 9.6 9.7 9.9 10.9 11.1 9.6 10.2 10.3 9.6 9.9 11.1 10.5 10.1 9.8 10.3 9.7 10.1];
m 29、ean(A)
std(A)
cov(A)
corrcoef(A)
结果: ans = 10.1600
ans = 0.4860
ans =0.2362
ans=1
实验七 优化问题的Matlab求解
【实验学时】2学时
【实验目的和要求】
实验目的: 熟练掌握线性规划和非线性规划问题的优化命令及其调用参数格式。
实验要求:
1.熟练演习书上例题;
2.能运用所学命令解决实际问题。
【实验步骤】
1.线性规划的两个优化命令操作;
2.非线性规划的各种优化问题命令;
3.二次规划的优化命令。
【实验主要仪器及材料】 WindowsXP计算机、 Ma 30、tlab软件
【实验内容】
1.用linprog命令计算优化问题
;
c=[-5;-4;-6];
A=[1,-1,1; 3,2,4; 3,2,0];
b=[20; 42; 30];
lb=[0;0;0];
[x,fval]= linprog(c,A,b,[],[],lb);
结果: x =
0.0000
15.0000
3.0000
fval =
-78.0000
2. 计算函数在区间( 0,1) 内的最小值; .
x=fminbnd('(power(x,3)+cos(x)+x*log(x))/exp(x)',0,1)
y=(po 31、wer(x,3)+cos(x)+x*log(x))/exp(x)
结果: x =
0.5223
y =
0.3974
3.用fminsearch求的最小值点;
f='2*power(x(1),3)+4*x(1)*power(x(2),3)-10*x1*x(2)+x(2)^2)'';
[x,fval,exitflag,output]=fminsearch(f, [0 1000])
结果: x =
1.0e+46 *
-0.0000 5.7337
fval =
-3.2187e+182
exitflag =
0
out 32、put =
iterations: 200
funcCount: 400
4.用fmincon命令求优化问题在初始点( 0,1) 处的最优解
fun.m: function f=fun (x);
f=x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-5*x(2);
mycon2.m: function [g,ceq]=mycon2(x);
g=[(x(1)-1)^2-x(2)];
ceq=[]
x0=[0;1];
A=[-2 3];b=[6];
Aeq=[];beq=[];
vlb=[];vub=[];
[x,fval]=fm 33、incon('fun',x0,A,b,Aeq,beq,vlb,vub,'mycon2')
结果: x =
2.9994
3.9992
fval =
-13.0000
实验八 Matlab编程基础
【实验学时】4学时
【实验目的和要求】
实验目的: 理解文件类型和变量类型, 掌握M文件的几种控制语句, 掌握程序调试和错误处理的方法。
实验要求:
1.熟练演习书上例题;
2.能运用所学的各种控制语句求解完成课后习题。
【实验步骤】
1.常见基本数据分析函数;
2.方差与标准方差;
3.协方差和相关系数。
【实验主要仪器及材料】 34、 WindowsXP计算机、 Matlab软件
【实验内容】
1. 用M命令文件绘出曲线及它的包络线, t的取值范围为;
t=0:0.001:4*pi;
y=exp(-t/3).*sin(3*t);
plot(t,y)
hold on
plot(t,exp(-t/3),'r:',t,-exp(-t/3),'r:')
2.使用for循环求的值; .
s=0;
for i=1:10
s=s+i.^2
end
结果: s =
385
3.有一个4*5矩阵,编程求出其最大值及其所处的位置;
a=input('输入一个4*5矩阵');
max=a(1,1) 35、
for i=1:4
for j=1:5
if a(i,j)>max
max=a(i,j);
maxi=i;maxj=j;
end
end
end
max
maxi
maxj
结果:
输入一个4*5矩阵[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20]
max =
20
maxi =
4
maxj =
5
4.用起泡法对10个数由小到大排序. 即将相邻两个数比较,将小的调到前头。
a=input('输入10个数');
n=length(a);
for ii=1:n-1
if a(ii+1)<=a(ii)
t1=a(ii);
a(ii)=a(ii+1);
a(ii+1)=t1;
end
for jj=1:n-1
if a(jj+1)<=a(jj)
t2=a(jj);
a(jj)=a(jj+1);
a(jj+1)=t2;
end
end
end
a
结果:
输入7个数[9 8 7 6 5 4 3 2 1 0]
a =
0 1 2 3 4 5 6 7 8 9






