资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
《数学建模》实验指导书
目 录
实验一Matlab概述与简单计算 4课时
实验二 符号函数及其微积分 2课时
实验三 多元函数及其微积分 2课时
实验四 无穷级数及曲线拟合 2课时
实验五 线性代数 2课时
实验六 数理统计 2课时
实验七 优化问题的matlab求解 2课时
实验八MATLAB编程基础 4课时
实验一 MATLAB概述与简单计算
【实验学时】4学时
【实验目的和要求】
实验目的: 熟悉Matlab工作界面, 掌握Matlab的基本命令与基本函数, 掌握Matlab的基本赋值与运算。经过具体实例, 掌握Matlab的基本使用方法。
实验要求:
1. 掌握Matlab的一些基本操作命令和基本函数;
2.掌握Matla的基本赋值与有运算。
【实验步骤】
1. 熟练Matlab软件的进入与运行方式及工作界面;
2. MATLAB基本命令与基本函数使用;
3. MATLAB的基本赋值与运算。
【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件
【实验内容】
1.显示当前日期, 并在屏幕上显示当年度各月的月历;
fix(clock)
结果: ans =
12 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.
-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;
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,[-pi 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,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学时
【实验目的和要求】
实验目的: 熟练掌握代数方程、 线性方程、 非线性方程、 常微分方程的符号解的求解命令。
实验要求:
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-
syms 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 =
y: [1x1 sym]
x: [1x1 sym]
实验五 线性代数
【实验学时】2学时
【实验目的和要求】
实验目的: 熟练掌握矩阵的基本操作, 会运用解线性方程组的命令, 能运用命令求解线性方程组的数值解。
实验要求:
1.熟练演习书上例题;
2.能运用所学的各种命令求解完成课后习题。
【实验步骤】
1.基本的矩阵操作;
2.线性方程组的求解;
3.矩阵的分解;
4. 线性方程组的数值解。
【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件
【实验内容】
1., 求A和B的点积、 叉积, A、 B和C的混合积;
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 =
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.4883 + 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.0000i
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.0000i -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<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;
return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)<ep
break;
end
x=y;
k=k+1;
end
命令: A=[12 -3 3;18 -3 1;-1 2 1];
b=[15;15;6];
[x, k, index]=Jacobi(A, b, 1e-5, 100)
结果: x =
1.0e+20 *
-0.7371
-2.2790
2.4051
k =
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<maxSp
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
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
-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
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_max
index=0;
return;
end
z=z/A(i,i);
x(i)=(1-w)*x(i)+w*z;
end
if norm(y-x,inf)<ep
break;
end
k=k+1;
end
命令: A=[12 -3 3;18 -3 1;-1 2 1];
b=[15 ;15; 6];
x0=[0;0;0];
[x,k,index]=SOR(A,b)
结果: x =
1
2
3
k =
150000
index =
0
实验六 数理统计
【实验学时】2学时
【实验目的和要求】
实验目的: 熟练掌握常见基本数据分析函数, 能熟练运用命令计算方差和标准方差、 协方差和相关系数。
实验要求:
1.熟练演习书上例题;
2.能运用所学的各种命令求解完成课后习题。
【实验步骤】
1.常见基本数据分析函数;
2.方差与标准方差;
3.协方差和相关系数。
【实验主要仪器及材料】 WindowsXP计算机、 Matlab软件
【实验内容】
1.列举一些统计工具箱中玉概率密度函数、 分布函数有关的函数;
概率密度函数 :
betapdf 贝塔分布的概率密度函数 binopdf 二项分布的概率密度函数 chi2pdf 卡方分布的概率密度函数 exppdf 指数分布的概率密度函数 fpdf f分布的概率密度函数
gampdf 伽玛分布的概率密度函数 geopdf 几何分布的概率密度函数 hygepdf 超几何分布的概率密度函数 分布函数:
betacdf 贝塔分布的累加函数 binocdf 二项分布的累加函数 chi2cdf 卡方分布的累加函数 expcdf 指数分布的累加函数 fcdf f分布的累加函数 gamcdf 伽玛分布的累加函数 geocdf 几何分布的累加函数 hygecdf 超几何分布的累加函数 logncdf 对数正态分布的累加函数
2.叙述有哪些统计量能够分别用来描述样本的集中趋势和离中趋势。各统计量进行度量时有什么优缺点; .
方差: 优: 一次能够分析两个因素的独立作用,还能够分析交互作用
缺: 当水平较多时,进行分析比较次数多,很麻烦
标准差是离均差平方和平均后的方根,更能反映一个数据集的离散程度.
一般统计使用标准差更为广泛,特别是样本量足够大的情况下,它更能反映数据的离散程度
离差: 反映了真实值偏离平均值的差距。可能出现结果与平均预期的偏离程度, 代表风险程度的大小。
3.下面列出的石某工厂随机选取的20只部件的装配时间( 分钟)
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];
mean(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计算机、 Matlab软件
【实验内容】
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=(power(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
output =
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]=fmincon('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.协方差和相关系数。
【实验主要仪器及材料】 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);
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
展开阅读全文