matlab数学实验复习题有答案.docx
《matlab数学实验复习题有答案.docx》由会员分享,可在线阅读,更多相关《matlab数学实验复习题有答案.docx(18页珍藏版)》请在冰豆网上搜索。
![matlab数学实验复习题有答案.docx](https://file1.bdocx.com/fileroot1/2023-1/24/fff819cd-39de-4889-8692-d8f995b8e618/fff819cd-39de-4889-8692-d8f995b8e6181.gif)
matlab数学实验复习题有答案
matlab数学实验复习题(有答案)
复习题
1、写出3个常用的绘图函数命令:
plot、ezplot、fplot
2、inv(A)表示A的逆矩阵;
3、在命令窗口健入clc,作用是清除工作间管理窗口的所有内容
4、在命令窗口健入clear,作用:
清除内存中所有变量
5、在命令窗口健入figure,作用是打开一个新的图形;
6、x=-1:
0.2:
1表示在区间[-1,1]内以0.2为步长等距取值
7、det(A)表示计算A的行列式的值;
8、三种插值方法:
拉格朗日多项式插值,分段线性插值,三次样条插值。
9、若A=
,则fliplr(A)=
A-3=
A.^2=
tril(A)=
triu(A,-1)=
diag(A)=
A(:
2),=
A(3,:
)=
10、normcdf(1,1,2)=0.5%正态分布mu=1,sigma=2,x=1处的概率
11、unifpdf([5,7],2,6)=【0.25;0】
11、命令formatshort的作用保留小数点后四位而formatlong:
保留小数点后14位
12、formatrat的作用是最接近的有理数
12、interp1(x0,y0,x)的作用是求以x0,y0为节点数组,x为插值点数组的分段线性插值
13、13、[a,b,c,d]=fzero(@fun,x0)中参数的涵义是a是变号点的近似值,b是对应,的函数值,c是停止运行的原因(c=1即为找到该点,c=0就是没有找到)d是一个结构变量,@fun是求解方程的函数M文件,x0是零点或变号点附近的值。
14、龙格-库塔方法可用如下MATLAB命令求解微分方程[t,x]=ode45(@f,[a,b],x0),中参数的涵义是@fun是求解方程的函数M文件,[a,b]是输入向量即自变量的范围a为初值,x0为函数的初值,t为输出指定的[a,b],x为函数值
15、写出下列命令的功能:
axisequal纵、横坐标轴采用等长刻度
text(1,2,‘y=sin(x)’)在x=1,y=2处加上字符串y=sin(x);holdon把新的plot产生的图形画在原来的图形上。
title(‘y=sin(x)’)在图形正上方加上字符串y=sin(x)
16、Matlab中自定义函数M文件的第一行必须以function开头;
10、
11、>>norm([1,2,3])
Ans=3.741657386773941
11、>>length([1,3,-1])=3
12、>>x=0:
0.4:
2;plot(x,2*x,’k*’)
13、>>zeros(3,1);
ans=
0
0
0
14、>>ones(3)=
,vander([2,3,5])=
16、>>floor(1:
0.3:
3)=
1111222
18、>>subplot(2,2,1);fplot('sin',[0,2*pi]);subplot(2,2,2);plot([1,2,-1]);
>>x=linspace(0,6*pi);subplot(2,2,3);plot3(cos(x),sin(x),x);
>>subplot(2,2,4);polar(x,5*sin(4*x/3));
19、>>t=linespace(0,2,11)
0.00.20.40.60.81.01.21.41.61.82.0
20、>>[a,b]=binostat(15,0.2)a=3b=2.4
>>y1=binopdf(5,10,0.7)=0.1029,y2=binocdf(5,10,0.7)=0.1503
21、>>log10([1,10,100])=[012]
22、>>p=1;fork=2:
3:
9p=p*k;end;pp=80
23、>>s=0;fork=2:
3:
9s=s+k;end;ss=15
24、
Ans=3.8647
25、>>a1=norminv(0.6,3,4)a1=4.0134
26、>>unifinv(0.4,1,5),unifpdf(0.4,1,5),unifpdf(2,1,5)
Ans=2.600.25
27、>>A=[01-1;210;1-11];
01-1
1-11
>>A([1,3],:
)
1-11
01-1
A([3,1],:
)=1-11
01-1
>>A(2,:
)=210
>>-2*A(1,:
)=0-22
28、>>quad(‘sin(x)’,0,pi/2)=1.0000
29、>>trapz([3,4,6],[1,2,3])=6.5000
30、>>int('x-sin(x)',0,1)
Ans=
cos
(1)-1/2
31、>>round(3:
0.4:
5),ceil(3:
0.4:
5);floor(3:
0.4:
5)
334455
333445
>>limit(1+1/(3*x)^x,inf)=1
>>diff(sin(3*x)+x^3,2)=6*x-9*sin(3*x)
>>taylor(exp(3*x),5,1):
命令输入:
y=taylor(exp(3*x),x,1,'Order',5)
Ans=
exp(3)+3*exp(3)*(x-1)+(9*exp(3)*(x-1)^2)/2+(9*exp(3)*(x-1)^3)/2+(27*exp(3)*(x-1)^4)/8
>>a1=mod(15,4),b1=rem(15,4)=3,3
>>a2=mod(-15,-4),b2=rem(-15,-4)=-3,-3
>>a3=mod(15,-4),b3=rem(15,-4)=-1,-3
>>a4=mod(-15,4),b4=rem(-15,4)=1,-3
34、>>x=binornd(20,0.4,2,4)
87108
107912
>>sign(x),
1111
1111
>>y=-poissrnd(8,2,4)
-16-108-7
-7-8-6-9
>>sign(y)
-1-1-1-1
-1-1-1-1
35、>>[a1,b1]=binostat(20,0.4)a1=8b1=4.8
>>[a2,b2]=poisstat(8)ans=8,8
>>[a3,b3]=chi2stat(15)ans=[1530]
36、运行M文件:
chi2fig
n=5;a=0.9;
xa=chi2inv(a,n);
x=0:
0.1:
15;y=chi2pdf(x,n);
plot(x,y,'b');holdon;
xf=0:
0.1:
xa;yf=chi2pdf(xf,n);
fill([xf,xa],[yf,0],'g');
text(xa*1.01,0.005,num2str(xa));
text(2.5,0.05,'alpha=0.9','fontsize',20);
text(9,0.09,'X~{\chi}^2(4)','fontsize',16);
37、>>t=linspace(0,2*pi);
>>polar(t,3*t,’g*’)
38、>>quadl(’exp(2*x).*log(3*x)’,1,3)
ans=
398.6352
39、x0=0:
2*pi/6:
2*pi;y0=sin(x0).*cos(x0);
x=[linspace(0,2*pi,100)];y=sin(x).*cos(x);y1=spline(x0,y0,x);
[x;y;y1]'
plot(x,y,'k',x,y1,'b-')
注:
此处省略100组数据
40、>>A=round(unifrnd(0,100,3,3));
>>[L,U]=lu(A)
L=
0.98970.46991.0000
0.16491.00000
1.000000
U=
97.000080.000092.0000
035.804126.8247
00-89.6568
41、a=sparse([133],[235],[123],4,5);s=full(a)
s=
01000
00000
00203
00000
三、编程
1、分别用矩形公式、梯形公式、辛普森公式、Gauss-Lobatto公式及随机模拟方法计算数值积分
,并与符号运算计算的结果进行比较。
formatlong
x=0:
0.01:
pi/2;
y=exp(3*x).*sin(2*x);
s1=sum(y)*0.01;
s2=trapz(x,y);
s3=quad('exp(3*x).*sin(2*x)',0,pi/2);
s4=quadl('exp(3*x).*sin(2*x)',0,pi/2);
n=10000;
x=unifrnd(0,pi/2,1,n);
y=unifrnd(0,exp(5.5),1,n);
k=0;
fori=1:
n
ify(i)<=exp(3*x(i)).*sin(2*x(i))
k=k+1;
end
end
s5=k/n*pi/2*exp(5.5);
symsx
s=int(exp(3*x).*sin(2*x),0,pi/2);
s6=double(s);
[s1,s2,s3,s4,s5,s6]
输出结果:
ans=
Columns1through3
17.27860904827786817.27772471054609217.279658142557587
Columns4through6
17.27965822921708717.21938124018484117.279658229208650
2、用雅可比迭代求解线性方程组
,其中
随机取。
要求使用函数型M文件,并有对其迭代格式的收敛性进行判断的功能。
雅可比迭代M文件;
function[x,m]=yakebi(A,b,x0,tol,n)
D=diag(diag(A));
L=-tril(A,-1);U=-triu(A,1);
B=D\(L+U);f=D\b;
x=x0;
ifmax(abs(eig(B)))>=1
disp('迭代不收敛')
end
fork=1:
n
x=B*x+f;
x;
ifnorm(A*x-b)break
end
end
m=k;
高斯-赛德尔迭代M文件;
function[x,m]=ga(A,b,x0,tol,n)
D=diag(diag(A));
L=-tril(A,-1);U=-triu(A,1);
B=(D-L)\U;f=(D-L)\b;
x=x0;
ifmax(abs(eig(B)))>=1
disp('迭代不收敛')
end
fork=1:
n
x=B*x+f;
x;
ifnorm(A*x-b)break
end
end
m=k;
3、用欧拉方法和龙格库塔方法求下列微分方程初值问题的数值解:
向前欧拉M文件:
functionz=foeula(f,a,b,y0,h)
m=floor((b-a)/h);
x
(1)=a;y
(1)=y0;
forn=1:
m
x(n+1)=x
(1)+n*h;
y(n+1)=y(n)+h*feval(f,x(n),y(n));
end
z=y';
改进欧拉M文件:
functionz=adveula(f,a,b,y0,h);
x=a:
h:
b;m=floor((b-a)/h);
y
(1)=y0;
forn=1:
m
k1=feval(f,x(n),y(n));
k2=feval(f,x(n+1),y(n)+h*k1);
y(n+1)=y(n)+h*(k1+k2)/2;
end
z=y';
函数调用M文件:
functiondy=ode121(x,y)
dy=x^2+y^2;
Return
z1=foeula('ode121',0,1,1,0.1)
z2=adeveula('ode121',0,1,1,0.1)
[x,y]=ode45('ode121',[0:
0.1:
1],1)
或者用直接用“inline”符号函数
z1=foeula(inline('x^2+y^2'),0,1,1,0.1)
z2=adeveula(inline('x^2+y^2'),0,1,1,0.1)
[x,y]=ode45(inline('x^2+y^2'),[0:
0.1:
1],1)
4、用牛顿切线法求
的根,要求相对误差不超过
,并输出解和迭代次数。
function[x,m]=newton(f,df,x0,n,tol)
x
(1)=x0;
fork=1:
n
x(k+1)=x(k)-feval(f,x(k))/feval(df,x(k));
ifabs((x(k+1)-x(k))/x(k))<=tol
break;
end
end
x=x';m=k;
return
>>[x,m]=newton(inline('x^2-exp(-x)'),inline('2*x+exp(-x)'),0.6,10,1e-6)
输出:
x=
0.600000000000000
0.707965679205874
0.703475408900439
0.703467422523631
0.703467422498392
m=
4
5、用
在(-1,1)上产生10个等距节点,然后用三次样条插值方法计算m个插值点的函数值(m要适中,如50~100),并绘出图形。
x0=-1:
0.2:
1;
y0=sin(x0)+sqrt(9+x0.^3);
x=-1:
0.02:
1;
y=sin(x)+sqrt(9+x.^3);
y1=spline(x0,y0,x);
[x;y;y1]'
plot(x,y,x,y1,'r*')
输出数据太长:
略
6、绘制标准正态分布在[-4,4]上的密度和分布函数图形(用normpdf,normcdf),要求两条曲线用不同颜色绘制。
x=-4:
0.01:
4;
y1=normpdf(x,0,1);
y2=normcdf(x,0,1);
plot(x,y1,'m+',x,y2,'r+')
7、求二阶微分方程
的数值解
函数调用M文件
functiondy=ode1(x,y)
dy=[y
(2);2*x*y
(2)/(1+x^2)];
return
命令输入:
[x,y]=ode45('ode1',[0:
0.02:
1],[1;0])
输出结果太长:
略
8、小张夫妇欲贷款50万元买房,他咨询了两家银行,第一家银行开出的条件是每月还4500元,15年还清;第二家银行开出的条件是每年还45000元,20年还清,从利率方面看哪家银行较优惠(简单地假设年利率=月利率×12)。
(1)数学建模:
设:
每月的月利率为r
第一个月:
实际还了
第二个月:
实际还了
第n个月:
实际还了
得出方程式:
化简得:
同理可列出方案2的方程式:
解出第一种方案得利率r
12
两种方案的利率小的比较优惠。
编程:
fplot('500*r*(1+r).^180-4.5*((1+r).^180-1)',[0.005,0.008])
gridon
>>fplot('50*r*(1+r).^20-4.5*((1+r).^20-1)',[0.05,0.07])
>>gridon
x1=fzero(inline('500*r*(1+r).^180-4.5*((1+r).^180-1)'),[0.0055,0.006])
r1=x1*12
r2=fzero(inline('50*r*(1+r).^20-4.5*((1+r).^20-1)'),[0.063,0.065])
[r1,r2]
Ans=
0.07020.0639
第一方案年利率r1=0.0702,第二方案年利率r2=0.0639,故第二种方式较优惠。
9、一老人60岁时将养老金10万元存入基金会,月利率0.4%,他每月取1000元作为生活费,建立差分方程计算他每岁末尚有多少钱?
多少岁时将基金用完?
如果想用到80岁,问60岁时应存入多少钱?
一、数学建模
设第k个月末老人拥有养老金ak元,则
其中r为月利率,于是所求的差分方程为:
若基金想用到80岁,即基金每月末取1000元,取20年,以现在作为计算钱的时间点,则60岁时应存入钱为
clear;formatbank;
a0=100000;r=0.004;a=1+r;
a
(1)=(1+r)*a0-1000;k=1;
whilea(k)>0
a(k+1)=(1+r)*a(k)-1000;
k=k+1;
end
plot(a);grid;
n=fix(k/12);m=mod(k,12);a=a';
disp(‘每岁末养老金的余额为:
');[(1:
n)',a(12:
12:
n*12)]
disp(‘老人养老金用完时的年龄为:
’);time=[num2str(n+60),‘岁’,num2str(m),‘¸’月']
B=0;p=1000;
fori=1:
240
p=p/(1+r);B=B+p;
end
disp(‘若老人养老金想用到80岁,每月取1000元,则60岁时应存入银行的钱为:
‘);money=[num2str(B),’元']
在命令窗口键入文件名,计算机运行结果为:
>>ex2xt2
每岁末养老金余额为:
ans=1.0092639.47
2.0084917.75
3.0076817.13
4.0068319.02
5.0059403.89
6.0050051.30
7.0040239.78
8.0029946.80
9.0019148.74
10.007820.82
基金用完时老人的年龄为:
time=
70岁8个月
若老人想用到80岁,每月取1000元,则老人60岁时应存入的钱为:
money=
154093.3029元
三、结果分析:
老人60岁时存入10万元,每月取1千元,那么70岁零8个月时钱用完;若想用到80岁,则60岁时应存入15409.30元。
10、由某商店过去的销售记录知道,某种商品每月的销售数可以用参数
的泊松分布来描述,为了有95%以上的把握不使商品脱销,问商店在每月月底应进该种商品多少件?
>>y=poissinv(0.95,25)
y=33
P85实验练习:
第三题