MATLAB习题.docx
《MATLAB习题.docx》由会员分享,可在线阅读,更多相关《MATLAB习题.docx(24页珍藏版)》请在冰豆网上搜索。
MATLAB习题
1.用函数roots求方程
的根
roots([1-1-1])
2.,在n个节点(n不要太大,如取5~11)上用分段线性、三次方、样条插值方法,计算m个插值点(m可取50~100)的函数值。
(注,n取10,m取100)
x=linspace(0,2*pi,10);
y=sin(x);
xi=linspace(0,2*pi,100);
y1=interp1(x,y,xi);
y2=interp1(x,y,xi,'spline');
y3=interp1(x,y,xi,'cublic');
3.测得某地大气压强随高度变化的一组数据如表3-11所示,试用插值法和拟合法估算高度为0,100,200,300,......,2000米时的大气压强值。
表3-11某地大气压强随高度变化数据
高度/m
0
300
600
1000
1500
2000
压强/Pa
0.9689
0.9322
0.8969
0.8519
0.7989
0.7491
x=[0300600100015002000];
y=[0.96890.93220.89690.85190.79890.7491];
xi=0:
100:
2000;
y1=interp1(x,y,xi,'spline');
p=polyfit(x,y,3);
y2=polyval(p,xi);
4.利用梯形法和辛普森法求定积分
的值:
梯形法:
x=linspace(-3,3,200);
y=exp(-x.^2/2)/(2*pi);
I1=trapz(x,y)
辛普森法:
I2=quad('exp(-x.^2/2)/(2*pi)',-3,3)
或者:
t='exp(-x.^2/2)/(2*pi)';
I2=quad(t,-3,3)
5.分别用矩形法、梯形法、辛普森法和牛顿-科茨4种方法来近似计算定积分。
矩形法:
x=linspace(0,1,100);
y=x./(x.^2+4);
t=cumsum(y*(1/99));
t1=t(100)
梯形法:
x=linspace(0,1,100);
y=x./(x.^2+4);
t2=trapz(x,y)
辛普森法
t3=quad('x./(x.^2+4)',0,1)
牛顿-科茨
t4=quadl('x./(x.^2+4)',0,1)
6.解下列方程组:
a=[5121;2511;12102;12210];
b=[9;9;15;15]
x=a\b
9.利用二三阶龙格-库塔方法来求解下列初值问题:
先定义函数
functionf=exe9(x,y)
f=2*x.*y
在命令窗口输入
[x1,y1]=ode23('exe9',[0:
0.1:
1.2],1)
symsx
f=x^3-6*x^2+11*x-6;
g=(x-1)*(x-2)*(x-3);
h=-6+(11+(-6+x)*x)*x;
f1=factor(f)
g1=factor(g)
h1=simplify(h)
symsxyzabc
f=(x+y)*(a+b^c)^z/(x+a)^2;
pretty(f)
g=x*(a+b^c)^z/(x+a)^2+y*(a+b^c)^z/(x+a)^2;
pretty(g)
symsabcx
f=(a*x^2+b*x+c-3)^3-a*(c*x^5+4*b*x-1)-18*b*((2+5*x)^7-a+c);
f1=collect(f)
f2=collect(f,a)
symsxy
f=x^2*y+x*y-x^2-2*x;
g=-1/4*x*exp(-2*x)+3/16*exp(-2*x)
f1=collect(f),
g1=collect(g,exp(-2*x))
symsx
f=x^3-3*x^2-3*x+1;
g=x^3-7*x+6;
f1=factor(f)
g1=factor(g)
symsxy
f1=x*(x*(x-2)+5)-1;
f2=log(x*y)+log(z);
f3=3*x*exp(x)*exp(y+z);
f4=sin(x)^2+cos(x)^2-1;
f11=simplify(f1)
f22=simplify(f2)
f33=simplify(f3)
f44=simplify(f4)
8
symsx
f1=cos(x)+sqrt(-sin(x)^2);
f2=x^3+3*x^2+3*x+1;
f11=simple(f1)
f22=simple(f2)
symsx
f=x^3-6*x^2+11*x-6;
g=(x-1)*(x-2)*(x-3);
h=-6+(11+(-6+x)*x)*x;
df=diff(f)
dg=diff(g)
dh=diff(h)
10.
symsabcx
f=a*x^2+b*x+c;
g=sqrt(exp(x)+x*sin(x));
df=diff(f)
dg=diff(g)
symsxabcds
f1=log(x)/exp(x^2);
f2=cos(2*x)-sin(2*x);
f3=[a*x,b*x^2;c*x^3,d*s];
f1i=int(f2)
f2i=int(f2,-pi,pi)
f3i=int(f3)
symsxyt
f1=sin(x)+2;
f2=x^y;
f3=4*t*x;
f1i=int(f1,0,pi/6)
f2i=int(f2,y,0,pi/3)
f3i=int(f3,2,sin(t))
symsx
f1=1/x^2;
f2=1/(x^2+1);
f1i=int(f1,1,inf)
f2i=int(f2,1,inf)
symsxy
f=sin(x)/x;
g=sin(x+2*y);
lf=limit(f)
lg=limit(g,y,0)
symsxyz
f=sin(x^2+y^2/z);
ftx=taylor(f,x,4,1)
fty=taylor(f,y,4,0)
ftz=taylor(f,z,4,0)
symsx
fx=x^2+x;
ffx=fourier(fx)
symsx
fx=exp(-x^2);
ffx=fourier(fx)
symsxtv
f=sin(x*t+2*t);
L=laplace(f,t,v)
symssx
L=1/(s^2+1);
f=ilaplace(L,s,x)
(1)
symsx1x2x3
L1='-x1+2*x2=2';
L2='2*x1+x2+x3=3';
L3='4*x1+5*x2+7*x3=0';
L4='x1+x2+5*x3=-5';
[x1,x2,x3]=solve(L1,L2,L3,L4,x1,x2,x3)
(2)
symsx1x2x3x4
L1=x1+x2+3*x3-x4+2;
L2=x2-x3+x4-1;
L3=x1+x2+2*x3+2*x4-4;
L4=x1-x2+x3-x4;
[x1,x2,x3,x4]=solve(L1,L2,L3,L4,x1,x2,x3,x4)
[x1,x2,x3,x4]=solve(‘x1+x2+3*x3-x4=-2’,’x2-x3+x4=1’,’x1+x2+2*x3+2*x4=4’,’x1-x2+x3-x4’,’x1’,’x2’,’x3’,’x4’)
(3)
symsx1x2x3x4
L1=x1-2*x2+3*x3-4*x4-4;
L2=x2-x3+x4+3;
L3=-x1-x2+2*x4+4;
[x1,x2,x3,x4]=solve(L1,L2,L3,x1,x2,x3,x4)
(4)
symsx1x2x3
L1=x1-4*x2+2*x3;
L2=2*x2-x3;
L3=-x1+2*x2-x3;
[x1,x2,x3]=solve(L1,L2,L3,x1,x2,x3)
23.解方程:
f(x)=sinx+tanx+1=0
symsx
f=sin(x)+tan(x)+1;
xf=solve(f)
g=double(xf)
xf=solve('sin(x)+tan(x)+1=0')
a=[13;-34];
X=dsolve('DX=a*X')
或
a=[13;-34];
X=dsolve('DX-a*X=0','x')
y1=dsolve('Dy-(x+y)*(x-y)=0','x')
y2=dsolve('x*Dy-y*log(y/x)=0','y(10)=1','x')
y3=dsolve('Dy=x*sin(x)/cos(y)','y
(2)=1','x')
y=dsolve('D2y=cos(2*x)-y','Dy(0)=0','y(0)=1','x')
[ff,gg]=dsolve('Df-f-3*g','Dg=f+4','x')
1.
symsx
f=(x^2-1)/(x^2-3*x+2);
lf=limit(f,x,2)
2.
symsx
fx=cos(2*x)-sin(2*x);
gx=sqrt(exp(x)+x*sin(x));
ifx=int(fx)
dgx=diff(gx)
3.
symsx
fx=sin(x)+2;
ifx=int(fx,0,pi/6)
4.
symsxyz
L1=x+y+z-10;
L2=3*x+2*y+z-14;
L3=2*x+3*y-z-1;
[x,y,z]=solve(L1,L2,L3)
5
[y,z]=dsolve('Dy-z=sin(x)','Dz+y=1+x','y(0)=2','z(0)=7','x')
1.exp2.m:
functions=exp2(x)
s=0;
forn=1:
x
s=s+n;
end
functions=exp2(x)
s=0;n=1;
whilen<=x
s=s+n;
n=n+1;
end
2.用公式求π的近似值,直到最后一项绝对值小于10-6,试编写M脚本文件
s=0;
forn=1:
1000000
p=(-1)^(n-1)/(2*n-1);
s=s+p;
ifabs(p)<1e-6
break
end
end
4*s
或者:
s=0;n=1;p=1;
whileabs(p)>1e-6
p=(-1)^(n-1)/(2*n-1);
s=s+p;
n=n+1;
end
s*4
functions=exp3(x)
s=0;r=1;
forn=1:
x
r=r*n;
s=s+r;
end
1.判断某一年是否是闰年。
年从键盘输入。
n=input('n=')
ifrem(n,400)==0
y='aleapyear';
elseifrem(n,100)==0
y='notaleapyear';
elseifrem(n,4)==0
y='aleapyear';
elsey='notaleapyear';
end
y
(如果此题改成:
检查从1到5000年间的闰年,并把闰年用一向量表示。
a=[];
forn=1:
5000
ifrem(n,400)==0
a=[a,n];
elseifrem(n,100)==0
elseifrem(n,4)==0
a=[a,n];
end
end
a'
如果改成:
编程,判断某一年是否是闰年:
functiony=leap(n)
ifrem(n,4)==0&rem(n,100)~=0|rem(n,400)==0
'leapyear'
else'notaleapyear'
end
2.用公式求π的近似值,直到最后一项绝对值小于10-6,试编写M脚本文件
s=0;
forn=1:
5000
p=(-1)^(n-1)/(2*n-1);
s=s+p;
ifabs(p)<1e-6
break
end
end
4*s
或者:
s=0;n=1;p=1;
whileabs(p)>1e-6
p=(-1)^(n-1)/(2*n-1);
s=s+p;
n=n+1;
end
s*4
3.用循环语句来寻找第一个大于10000的Fibonacci数:
a(m)=a(m-1)+a(m-2),a
(1)=a
(2)=1
n=100;
a=ones(1,n);
fork=3:
n
a(k)=a(k-1)+a(k-2);
ifa(k)>=10000
break;
end,
end
k,a(k),
或者:
a=ones(1,100);
m=2;
whilea(m)<10000
a(m+1)=a(m-1)+a(m);
m=m+1;
end
m,a(m),
4.求解n!
为100位数的最小n值。
a=1;
forn=1:
1000;
a=a*n;
ifa>=1e100
break
end
end
a,n
或者:
a=1;n=1;
whilea<1e100
a=a*n;
n=n+1;
end
a,n-1
3.编写一程序,求魔方矩阵magic(20)左上-右下对角线、左下-右上对角线的元素,并分别以一行向量表示。
a=magic(20);
r=[];s=[];
form=1:
20
forn=1:
20
ifm==n
s=[sa(m,n)];
elseifm+n==21
r=[ra(m,n)];
end
end
end
r,s
4.存在如下递推关系,编程计算精确到前100项的值,x由键盘输入。
x=input('x=')
y=0;
p=1;
forn=1:
100
p=p*(-x)/n;
y=y+p;
end
y
1.判断某一年是否是闰年。
年从键盘输入。
n=input('n=')
ifrem(n,400)==0
y='aleapyear';
elseifrem(n,100)==0
y='notaleapyear';
elseifrem(n,4)==0
y='aleapyear';
elsey='notaleapyear';
end
y
(如果此题改成:
检查从1到5000年间的闰年,并把闰年用一向量表示。
a=[];
forn=1:
5000
ifrem(n,400)==0
a=[a,n];
elseifrem(n,100)==0
elseifrem(n,4)==0
a=[a,n];
end
end
a'
如果改成:
编程,判断某一年是否是闰年:
functiony=leap(n)
ifrem(n,4)==0&rem(n,100)~=0|rem(n,400)==0
'leapyear'
else'notaleapyear'
end
3.用循环语句来寻找第一个大于10000的Fibonacci数:
a(m)=a(m-1)+a(m-2),a
(1)=a
(2)=1
n=100;
a=ones(1,n);
fork=3:
n
a(k)=a(k-1)+a(k-2);
ifa(k)>=10000
break;
end,
end
k,a(k),
或者:
a=ones(1,100);
m=2;
whilea(m)<10000
a(m+1)=a(m-1)+a(m);
m=m+1;
end
m,a(m),
3.编写一程序,求魔方矩阵magic(20)左上-右下对角线、左下-右上对角线的元素,并分别以一行向量表示。
a=magic(20);
r=[];s=[];
form=1:
20
forn=1:
20
ifm==n
s=[sa(m,n)];
elseifm+n==21
r=[ra(m,n)];
end
end
end
r,s
4.存在如下递推关系,编程计算精确到前100项的值,x由键盘输入。
x=input('x=')
y=0;
p=1;
forn=1:
100
p=p*(-x)/n;
y=y+p;
end
y
clf
x=linspace(0,4*pi);
y1=sin(x);
y2=cos(x);
x3=0:
0.5:
16;
y3=zeros(1,length(x3));
plot(x,y1,'r:
',x,y2,'b',x3,y3,'.')
xlabel('时间')
ylabel('幅值')
legend('sinx','cosx')
text(2.8,0.5,'\leftarrowsinx')
text(1.5,0.3,'\leftarrowcosx')
z=0:
0.1:
6*pi;
x=cos(z);
y=sin(z);
subplot(2,2,1),plot3(x,y,z);
subplot(2,2,2),plot(x,y);
subplot(2,2,3),plot(y,z);
subplot(2,2,4),plot(x,z);
a=-2:
0.1:
2;
[x,y]=meshgrid(a);
z=(x.^2).*exp(-x.^2-y.^2);
mesh(x,y,z)
a1.分别绘制下列函数图形:
(1)
(极坐标);
(2)
q=linspace(0,2*pi);
r=3*(1-cos(q));
polar(q,r)
t=linspace(0,2*pi);
y=1.25*exp(-0.25*t)+cos(3*t);
plot(t,y)
2.绘制函数
的图形,且在x轴上标注“Time”,y轴上标注“Amplitude”,图形的标题为“DecayingOscillatingExponential”。
t=linspace(0,8);
y=1-2*exp(-t).*sin(t);
plot(t,y);
xlabel('Time'),
ylabel('Amplitude'),
title('DecayingOscillatingExponential')
3.在同一图中绘制下列两条曲线(x∈[0,25]内):
(1)
(2)
x=linspace(0,25,200);
y1=2.6*exp(-0.5*x).*cos(0.6*x)+0.8;
y2=1.6*cos(3*x)+sin(x);
plotyy(x,y1,x,y2)
4.在一个图形窗口下绘制两个子图,分别显示下列曲线:
(1)y=sin2xcos3x;
(2)y=0.4x要求给x轴、y轴加标注,每个子图加标题。
x=linspace(0,2*pi);
y1=sin(2*x).*cos(3*x);
y2=0.4*x;
subplot(2,1,1),plot(x,y1),
xlabel('x');ylabel('y');title('y1=sin(2*x).*cos(3*x)')
subplot(2,1,2),plot(x,y2),
xlabel('x');ylabel('y');title('y2=0.4*x')
5.画出下列二元函数z(x,y)的图形:
a=linspace(-3,3);
[x,y]=meshgrid(a);
z=1./((x+1).^2+(y+1).^2+1)-1./((x-1).^2+(y-1).^2+1);
surf(x,y,z)
6.二维曲面可用方程表示为
在一个图形窗口下用两个子图表示下面不同情况:
(1)a=5,b=4,c=3,d=1;
(2)a=5j,b=4,c=3,d=1
a=-2:
0.1:
2;
[x,y]=meshgrid(a);
a=5;b=4;c=3;d=1;
z1=c.*sqrt(d-(x.^2)./(a.^2)-(y.^2)./(b.^2));
subplot(2,1,1),surf(x,y,z1)
a=5j;
z2=c.*sqrt(d-(x.^2)./(a.^2)-(y.^2)./(b.^2));
subplot(2,1,2),surf(x,y,z2)