Matlab编程与应用习题和一些参考答案

更新时间:2023-11-25 11:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Matlab上机实验一、二

3.求下列联立方程的解

?3x?4y?7z?12w?4??5x?7y?4z?2w?4 ?x?8z?5w?9???6x?5y?2z?10w?4>> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\\b

?1?34.设A?????246?78?5?1213???9??8???543?2??6?23?8,B???????13?97??,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所

有方阵的逆阵。

>> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3)

5.设 y?cosx?0.5??,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的2(1?x)??曲线。

>> x=linspace(0,2*pi,101);

>> y=cos(x)*(0.5+(1+x.^2)\\3*sin(x)); >> plot(x,y,'r')

6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var) a=randn(8,6) mean(a) var(a)

k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

1

?3sinx?

或者

u=reshape(a,1,48); p1=mean(u) p2=var(u)

7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y曲线。 >> t=linspace(0,10); >> r1=2;

>> x1=(r1*cos(t)+3*t); >> y1=r1*sin(t)+3; >> r2=3;

>> x2=(r2*cos(t)+3*t); >> y2=r2*sin(t)+3; >> r3=4;

>> x3=(r3*cos(t)+3*t); >> y3=r3*sin(t)+3;

>> plot(x1,y1,'r',x2,y2,'b',x3,y3,'m')

8.设f(x)=x5- 4x4 +3x2- 2x+ 6

(1) 在x=[-2,8]之间取100个点,画出曲线,看它有几个过零点。(提示:用polyval 函数)

>> x=linspace(2,8,100);

>> y=polyval([1 0 -4 3 -2 6],x); >> plot(x,y,'b',x,0,'y')

(2) 用roots函数求此多项式的根。 t=[1 0 -4 3 -2 6] p=roots(t)

9.建立一个字符串向量,然后对该向量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 统计字符串中小写字母的个数。

>> a='abcdef123456'; >> subch=a(1:5) subch = abcde

>> revch=a(end:-1:1) revch =

654321fedcba>> k=find(a>='a'&a<='z'); >> a(k)=a(k)-('a'-'A'); >> char(a)

>> length(a) >> length(k)

10.利用帮助查找limit函数的用法,并自己编写,验证几个函数极限的例子。

2

limit(sin(x)/x) returns 1

limit((x-2)/(x^2-4),2) returns 1/4

limit((1+2*t/x)^(3*x),x,inf) returns exp(6*t) limit(1/x,x,0,'right') returns inf limit(1/x,x,0,'left') returns -inf limit((sin(x+h)-sin(x))/h,h,0) returns cos(x) v = [(1 + a/x)^x, exp(-x)]; Matlab上机实验二

1.验证所授课程的课件。 2.设x=sint, y=sin(nt+a),

(1) 若a=1,令n =1,2,3,4,在四个子图中分别画出其曲线。

(2) 若n=2,取a=0,π/3,π/2,及π,在四个子图中分别画出其曲线。 (1) a=1; x=sin(t);y1=sin(1*t+a);y2=sin(2*t+a);y3=sin(3*t+a);y4=sin(4*t+a);subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4) (2)

n=2;x=sin(t);y1=sin(2*t+0);y2=sin(2*t+pi/3);y3=sin(2*t+pi/2);y4=sin(2*t+pi);subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4) 3.绘制z?x2e?(x2

?y)2在定义域x=[-2,2],y=[-2,2]内的曲面。(利用meshgrid)

x=-2:2;y=x;[X,Y]= meshgrid(x,y);Z=X^2*exp(-(X^2+Y^2));mesh(X,Y,Z) 4.求代数方程3x5+4x4+7x3+2x2+9x+12=0的所有根。(利用roots函数) p=[3 4 7 2 9 12];roots(p)

5.把1开五次方,并求其全部五个根。(提示:解x5-1=0) p=[1 0 0 0 0 -1];roots(p)

?(?x2?4x?3)/2?3?x??1?2,画出在??3,3?上的曲线。 y???x?1?1?x?1?(?x2?4x?3)/21?x?3?6,

x1=-3:0.01:-1;y1=(-x1.^2-4.*x1-3)/2; x2=-1:0.01:1;y2=-x2.^2+1;

x3=1:0.01:3;y3=(-x3.^2+4.*x3-3)/2;plot(x1,y1);hold on; plot(x2,y2);hold on; plot(x3,y3)

Matlab上机实验三

1.设

,求

>> syms x

>> y=x*exp(2*x); Diff(y,10)

3

2.设,求

syms x

>> y=sin(x)^4+cos(x)^4; >> y^10

3.设,求

>> syms x y

>> z=y^4*sin(x)^4+x^4*cos(y)^4; >> diff(z,'x') 4.?1(x?1)(x?x)22dx

>> syms x y

>> y=1/((x^2+1)*(x^2+x)); >> int(y) 5.?(9?x)xdxx?x3236dx

>> int((sqrt((9-x^2)^3)/x^6)) 6.?21

>> syms x

>> int(1/(x+x^3),1,2) >> simple(ans)

?7.求级数的和: ?n?1n?22n (利用帮助,查找symsum)

>> syms n

>> symsum((n+2)/2^n,n-1,inf) >> simple(ans)

8.利用函数int计算二重不定积分 ?xy(x?y)edxdy??

>> syms x y

>> int(int((x+y)*exp(-x*y))) 9.设方程(1)x3(2)x?cos(x)?0?cos(a)?0,

3及(3)x3?cos(ax)?0,用符号运算工具箱函数solve分

别求x的解。用a=0.5代入,求 x的数值解,并与用roots 函数所求的结果进行比较。

>> syms x1 x2 x3

>> x1=solve('x1^3+cos(0.5)=0'); >> x2=solve('x2^3+cos(x2)=0'); >> x3=solve('x3^3+cos(0.5*x3)=0'); >> x1,x2,x3

>> p=[1 0 0 cos(0.5)]; >> roots(p)

10.求微分方程的解: y'''-y''=x,y''(2)=4,y'(1)=7,y(1)=8

4

>> syms x y

>> dsolve('D3y-D2y=x','D2y(2)=4','Dy(1)=7','y(1)=8')

11.设 x?zsin3z,y?zcos3z, 要求在z=0~10区间内画出x,y,z三维曲线。

>> z=0:0.01:10; >> x=z.*sin(3*z); >> y=z.*cos(3*z); >> plot3(x,y,z)

2212.设 z?xe2?(x?y),画出定义域x=[-2,2],y=[-2,2]内的曲面图。

>> [x,y]=meshgrid([-2:0.1:2]); >> z=x.^2.*exp(-x.^2-y.^2); >> mesh(x,y,z)

13.设z=0.05x-0.05y+0.1; 画出z的曲面(平面)图。 >> [X,Y]=meshgrid(1:10:200,1:10:200); >> Z=0.05*X-0.05*Y+0.1; >> surf(X,Y,Z)

1.编写程序计算:

(1)使用一个for/end循环,但不能使用数组运算符sum。 (2)使用数组运算符和sum,但不能使用任何for/end循环。 答:(1): 1~100相加

For循环: s=0;

for i=1:100 s=s+i; end s

(2): 1~100相加 Sum函数:

i=1:100; s=sum(i)

2.编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入,直到正确为止。 答:function mypassword

k=0;

n=input('等待键盘输入\\n'); while(k==0) if n==123

5

disp('输入密码正确') k=1; else

n=input('密码错误,重新输入\\n'); k=0; end end

3.编制m文件,输入n(正整数),显示所有小于n的质数。 答:function zhishu

m=input('输入正整数m=\\n'); p=2:m-1;

for i=2:sqrt(m)

n=find(rem(p,i)==0&p~=i); p(n)=[]; end p

4.编写一个M函数文件fun_es(x),计算如下函数:y?0.5ex/3?x2sin(x),其中参数可以为标量,也可以为向量。在Matlab指令窗口键入如下命令检验该函数:fun_es(3) 答:function fun_es(x)

y=0.5*exp(x/3)-x.^2.*sin(x)

5.利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。 答:function pailie

n=rand(1,10) for j=1:10

for i=j+1:10 if n(j)

disp('重新排列后:') n

6.编写m函数文件求半径为r的圆的面积和周长。 答:

function yuan(r) s=pi*r^2 c=2*pi*r

6

7.数组[1:99]中非素数(即质数)元素的和 答:

function feizhishuhe m=99; p=2:m;

for i=2:sqrt(m)

n=find(rem(p,i)==0&p~=i); p(n)=[]; end

s=sum(1:99)-sum(p)

8.从键盘输入若干个数(每个数用回车结束),当输入0时结束输入,求这些数的平均值以及平方和。(结束标志0不计算在内) 答:function abc

k=0; s=0; i=0; y=0;

n=input(''); while(k==0) if n~=0 k=0; i=i+1; s=s+n; y=y+n^2; n=input(''); else

k=1; a=s/i y end end

9.输入x,y的值,并将它们的值互换后输出。 答:function jiaohuan

x=input('x=\\n'); y=input('y=\\n'); z=x; x=y; y=z;

7

x y

10.下面程序实现什么功能? for n=100:200

if rem(n,77)~=0 continue

end break end n

答:在100到200之间输出第一个能被77整除的整数

11:编写一个M函数文件计算下列级数的和: f(x)?1?x?x2?x3?...xnx和n的值由input指令给出。

2!3!?n!答:function jishu

x=input('x=\\n'); n=input('n=\\n'); y=1; a=1; for i=1:n a=a*i;

y=y+(x.^i)/a; end y

12:编写函数文件,参数为整数n,返回值为:n!尾部0的个数。 答:function linggeshu

a=1; c=0;

n=input('n=\\n'); for i=1:n a=a*i; end

for j=1:1000

if rem(a,10^j)==0 c=c+1; end end c

8

本文来源:https://www.bwwdw.com/article/stst.html

Top