最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Matlab上机实验答案

来源:动视网 责编:小OO 时间:2025-09-30 22:28:17
文档

Matlab上机实验答案

Matlab上机实验答案实验一MATLAB运算基础1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。(1)>>z1=2*sin(85*pi/180)/(1+exp(2))z1=0.2375(2),其中>>x=[21+2i;-0.455];>>z2=1/2*log(x+sqrt(1+x^2))z2=0.7114-0.0253i0.68+0.3658i0.2139+0.9343i1.1541-0.0044i(3)>>a=-3.0:0.1:3.0;>>z3=(exp(
推荐度:
导读Matlab上机实验答案实验一MATLAB运算基础1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。(1)>>z1=2*sin(85*pi/180)/(1+exp(2))z1=0.2375(2),其中>>x=[21+2i;-0.455];>>z2=1/2*log(x+sqrt(1+x^2))z2=0.7114-0.0253i0.68+0.3658i0.2139+0.9343i1.1541-0.0044i(3)>>a=-3.0:0.1:3.0;>>z3=(exp(
Matlab上机实验答案

实验一   MATLAB运算基础

1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。

(1) 

>> z1=2*sin(85*pi/180)/(1+exp(2))

z1 =

    0.2375

(2) ,其中

>> x=[2 1+2i;-0.45 5];

>> z2=1/2*log(x+sqrt(1+x^2))

z2 =

   0.7114 - 0.0253i   0.68 + 0.3658i

   0.2139 + 0.9343i   1.1541 - 0.0044i

(3) 

>> a=-3.0:0.1:3.0;

>> z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)

(>> z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)

可以验证z3==z33,是否都为1)

z3 =

  Columns 1 through 5

   0.7388 + 3.1416i   0.7696 + 3.1416i   0.7871 + 3.1416i   0.7913 + 3.1416i   0.7822 + 3.1416i

  Columns 6 through 10

   0.7602 + 3.1416i   0.7254 + 3.1416i   0.6784 + 3.1416i   0.6196 + 3.1416i   0.5496 + 3.1416i

  Columns 11 through 15

   0.4688 + 3.1416i   0.3780 + 3.1416i   0.2775 + 3.1416i   0.1680 + 3.1416i   0.0497 + 3.1416i

  Columns 16 through 20

  -0.0771 + 3.1416i  -0.2124 + 3.1416i  -0.3566 + 3.1416i  -0.5104 + 3.1416i  -0.6752 + 3.1416i

  Columns 21 through 25

  -0.8536 + 3.1416i  -1.0497 + 3.1416i  -1.2701 + 3.1416i  -1.5271 + 3.1416i  -1.8436 + 3.1416i

  Columns 26 through 30

  -2.2727 + 3.1416i  -2.9837 + 3.1416i -37.0245 + 0.0000i  -3.0017 + 0.0000i  -2.3085 + 0.0000i

  Columns 31 through 35

  -1.71 + 0.0000i  -1.5978 + 0.0000i  -1.3575 + 0.0000i  -1.1531 + 0.0000i  -0.9723 + 0.0000i

  Columns 36 through 40

  -0.8083 + 0.0000i  -0.6567 + 0.0000i  -0.5151 + 0.0000i  -0.3819 + 0.0000i  -0.2561 + 0.0000i

  Columns 41 through 45

  -0.1374 + 0.0000i  -0.0255 + 0.0000i   0.0792 + 0.0000i   0.1766 + 0.0000i   0.2663 + 0.0000i

  Columns 46 through 50

   0.3478 + 0.0000i   0.4206 + 0.0000i   0.4841 + 0.0000i   0.5379 + 0.0000i   0.5815 + 0.0000i

  Columns 51 through 55

   0.6145 + 0.0000i   0.6366 + 0.0000i   0.74 + 0.0000i   0.70 + 0.0000i   0.6351 + 0.0000i

  Columns 56 through 60

   0.6119 + 0.0000i   0.5777 + 0.0000i   0.5327 + 0.0000i   0.4774 + 0.0000i   0.4126 + 0.0000i

  Column 61

   0.3388 + 0.0000i

(4) ,其中t=0:0.5:2.5

>> t=0:0.5:2.5;

>> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^2-2.*t+1)

z4 =

         0    0.2500         0    1.2500    1.0000    2.2500

2. 已知:

求下列表达式的值:

(1) A+6*B和A-B+I(其中I为单位矩阵)

(2) A*B和A.*B

(3) A^3和A.^3

(4) A/B及B\\A

(5) [A,B]和[A([1,3],:);B^2]

>> A=[12 34 -4;34 7 87;3 65 7];

>> B=[1 3 -1; 2 0 3;3 -2 7];

>> A+6*B

ans =

    18    52   -10

    46     7   105

    21    53    49

>> I=eye(3);

>> A-B+I

ans =

    12    31    -3

    32     8    84

     0    67     1

(2)

>> A*B

ans =

    68    44    62

   309   -72   596

   154    -5   241

>> A.*B

ans =

    12   102     4

    68     0   261

     9  -130    49

(3)

>> A^3

ans =

       37226      233824       48604

      247370      149188      600766

       78688      454142      118820

>> A.^3

ans =

        1728       39304         -

       39304         343      658503

          27      274625         343

(4)

>> A/B

ans =

   16.4000  -13.6000    7.6000

   35.8000  -76.2000   50.2000

   67.0000 -134.0000   68.0000

>> B\\A

ans =

  109.4000 -131.2000  322.8000

  -53.0000   85.0000 -171.0000

  -61.6000   .8000 -186.2000

(5)

>> [A,B]

ans =

    12    34    -4     1     3    -1

    34     7    87     2     0     3

     3    65     7     3    -2     7

>> [A([1,3],:);B^2]

ans =

    12    34    -4

     3    65     7

     4     5     1

    11     0    19

    20    -5    40

3. 设有矩阵A和B

(1) 求它们的乘积C。

(2) 将矩阵C的右下角3×2子矩阵赋给D。

(3) 查看MATLAB工作空间的使用情况。

>> A=(reshape(1:25,5,5))';

>> B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];

>> C=A*B

C =

    93   150    77

   258   335   237

   423   520   397

   588   705   557

   753   0   717

>> D=C(3:5,2:3)

D =

   520   397

   705   557

   0   717

>> whos

  Name      Size            Bytes  Class     Attributes

  A         5x5               200  double              

  B         5x3               120  double              

  C         5x3               120  double              

  D         3x2                48  double   

4. 完成下列操作:

(1) 求[100,999]之间能被21整除的数的个数。

(2) 建立一个字符串向量,删除其中的大写字母。

>> n=100:999;

>> l=find(rem(n,21)==0);  

>> length(l)

ans =

43

>> ch='aegbBOIEG0je23RGnc';

>> wz=find(ch>='A'&ch<='Z');

>> ch(wz)=[]

ch =

aegb0je23nc

实验二   MATLAB矩阵分析与处理

1. 设有分块矩阵,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证。

>> E=eye(3);

>> R=rand(3,2);

>> O=zeros(2,3);

>> S=diag(1:2);

>> A=[E,R;O,S]

A =

    1.0000         0         0    0.8147    0.9134

         0    1.0000         0    0.9058    0.6324

         0         0    1.0000    0.1270    0.0975

         0         0         0    1.0000         0

         0         0         0         0    2.0000

>> A^2

ans =

    1.0000         0         0    1.6294    2.7401

         0    1.0000         0    1.8116    1.71

         0         0    1.0000    0.2540    0.2926

         0         0         0    1.0000         0

         0         0         0         0    4.0000

>> [E,R+R*S;O,S^2]

ans =

    1.0000         0         0    1.6294    2.7401

         0    1.0000         0    1.8116    1.71

         0         0    1.0000    0.2540    0.2926

         0         0         0    1.0000         0

         0         0         0         0    4.0000

>> A^2==[E,R+R*S;O,S^2]

ans =

     1     1     1     1     1

     1     1     1     1     1

     1     1     1     1     1

     1     1     1     1     1

     1     1     1     1     1

通过验证,矩阵成立。

2. 产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们的条件数Th和Tp,判断哪个矩阵性能更好。为什么?

>> H=hilb(5)

H =

    1.0000    0.5000    0.3333    0.2500    0.2000

    0.5000    0.3333    0.2500    0.2000    0.1667

    0.3333    0.2500    0.2000    0.1667    0.1429

    0.2500    0.2000    0.1667    0.1429    0.1250

    0.2000    0.1667    0.1429    0.1250    0.1111

>> P=pascal(5)

P =

     1     1     1     1     1

     1     2     3     4     5

     1     3     6    10    15

     1     4    10    20    35

     1     5    15    35    70

>> Hh=det(H)

Hh =

   3.7493e-12

>> Hp=det(P)

Hp =

     1

>> Th=cond(H)

Th =

   4.7661e+05

>> Tp=cond(P)

Tp =

   8.5175e+03

答:5阶帕斯卡矩阵P的性能好。矩阵的性能是由条件数决定的,条件数越接近于1其性能就越好。由上机操作求得Th=4.7661e+005,Tp=8.5175e+003。Tp的值更接近于1则其性能要好。所以5阶帕斯卡矩阵P的性能好。

3. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数。

>> A=rand(5)

A =

    0.2785    0.9706    0.4218    0.0357    0.7431

    0.5469    0.9572    0.9157    0.8491    0.3922

    0.9575    0.4854    0.7922    0.9340    0.6555

    0.99    0.8003    0.9595    0.6787    0.1712

    0.1576    0.1419    0.6557    0.7577    0.7060

>> det(A)

ans =

   -0.1322

>> trace(A)

ans =

    3.4127

>> rank(A)

ans =

     5

>> norm(A)

ans =

    3.2759

4. 已知

求A的特征值及特征向量,并分析其数学意义。

>> A=[-29,6,18;20,5,12;-8,8,5]

A =

   -29     6    18

    20     5    12

    -8     8     5

>> [V,D]=eig(A)

V =

    0.7130    0.2803    0.2733

   -0.6084   -0.7867    0.8725

    0.3487    0.5501    0.4050

D =

  -25.3169         0         0

         0  -10.5182         0

         0         0   16.8351

在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v:当v 经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。如果特征值为正,则表示v 在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。但无论怎样,仍在同一条直线上。

5. 下面是一个线性方程组:

(1) 求方程的解。

(2) 将方程右边向量元素b3改为0.53再求解,并比较b3的变化和解的相对变化。

(3) 计算系数矩阵A的条件数并分析结论。

>> format rat %用分数格式显示

>> A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]

A =

       1/2            1/3            1/4     

       1/3            1/4            1/5     

       1/4            1/5            1/6     

>> format %恢复默认格式

>> b=[0.95;0.67;0.52]

b =

    0.9500

    0.6700

    0.5200

>> X=A\\b

X =

    1.2000

    0.6000

    0.6000

>> b2=[0.95;0.67;0.53]

b2 =

    0.9500

    0.6700

    0.5300

>> X2=A\\b2

X2 =

    3.0000

   -6.6000

    6.6000

>> D=cond(A)

D =

   1.3533e+03

矩阵的条件数决定矩阵的性能,条件数越接近于1其性能越好,系数矩阵A的条件数为1.3533e+003,和1相差很大,则其性能不好。因此b矩阵个别元素的微小变动,对方程的解(X值)影响很大。

6. 建立A矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。

实验三   选择结构程序设计

1. 求分段函数的值。

用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

程序设计:

clear;

x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0];

if x<0&x~=-3

    y=x.^2+x-6;

elseif x>=0&x<5&x~=2&x~=3

    y=x.^2-5*x+6;

else

    y=x.^2-x-1;

end

y

运行结果:

y =

   29.0000   11.0000   -1.0000    1.0000    2.7500    5.0000   19.0000

2. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~分为B,79分~79分为C,60分~69分为D,60分以下为E。

要求:

(1) 分别用if语句和switch语句实现。

程序设计:

(一)用if语句

clear;

score=input('请输入百分制成绩:');

a=fix(score/10);

if a==9 | a==10

    grade='A';

elseif a==8

    grade='B';

elseif a==7

    grade='C';

elseif a==6

    grade='D';

else

    grade='E';

end

grade

(二)用if语句

clear;

score=input('请输入百分制成绩:');

if score>=90&score<=100

    grade='A';

elseif score>=80&score<90

    grade='B';

elseif score>=70&score<80

    grade='C';

elseif score>=60&score<70

    grade='D';

else

    grade='E';

end

grade

(三)用switch语句

clear;

score=input('请输入百分制成绩:');

switch fix(score/10)

    case {9,10}

        grade='A';

    case 8

        grade='B';

    case 7

        grade='C';

    case 6

        grade='D';

    otherwise

        grade='E';

end

grade

 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

clear;

score=input('请输入百分制成绩:');

if score>=0&score<=100                 %判断成绩合理性

    switch fix(score/10)

        case {9,10}

            grade='A';

        case 8

            grade='B';

        case 7

            grade='C';

        case 6

            grade='D';

        otherwise

            grade='E';

    end

    grade

else 

    disp('error')                     %成绩不合理时输出出错信息

end

3. 硅谷公司员工的工资计算方法如下:

(1) 工作时数超过120小时者,超过部分加发15%。

(2) 工作时数低于60小时者,扣发700元。

(3) 其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。

程序设计:

clear;

num=input('请输入员工工号:');

time=input('请输入员工工时数:');

if time<60

    wages=time*84-700;

elseif time>120

    wages=84*120+(time-120)*84*(1+0.15);

else

    wages=time*84;

end

disp=(['员工工号:' num2str(num) '    应发工资:' num2str(wages)])

运行结果:

请输入员工工号:4

请输入员工工时数:35

disp =

员工工号:4    应发工资:2240

4. 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。

解:

程序设计:

clear;

a=floor(rand(1)*90+10)

b=floor(rand(1)*90+10)

c=input('请输入运算符号:','s');

if c=='+'

    s=a+b

elseif c=='-'

    s=a-b

elseif c=='*'

    s=a*b

elseif c=='\\'

    s=a\\b

else

    disp('error')

end

运行结果:

a =

    30

b =

    77

请输入运算符号:-

s =

   -47

5. 建立5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。

程序设计:

clear;

A=rand(5,6)

n=input('n=?')

if n>=1&n<=5

    B=A(n,1:6);

else

    disp('erro!')

    B=A(5,1:6);

end

B

运行结果:

A =

    0.7792    0.0119    0.5285    0.62    0.9133    0.0782

    0.9340    0.3371    0.1656    0.7482    0.1524    0.4427

    0.1299    0.1622    0.6020    0.4505    0.8258    0.1067

    0.5688    0.7943    0.2630    0.0838    0.5383    0.9619

    0.4694    0.3112    0.6541    0.2290    0.9961    0.0046

n=?3

n =

     3

B =

    0.1299    0.1622    0.6020    0.4505    0.8258    0.1067

实验四   循环结构程序设计

1. 根据,求π的近似值。当n分别取100、1000、10000时,结果是多少?

要求:分别用循环结构和向量运算(使用sum函数)来实现。

程序设计(一):

clear;

for n=[100,1000,10000]

    sum=0;

    for x=1:n

        sum=sum+1/(x.^2);

    end

    result=sqrt(6*sum)

end

运行结果:

result =

    3.1321

result =

    3.1406

result =

    3.1415

程序设计(二):

clear;

for n=[100,1000,10000]

    x=1:n;

    result=sqrt(6*sum(1./x./x))

end

运行结果:

result =

    3.1321

result =

    3.1406

result =

3.1415

2. 根据,求:

(1) y<3时的最大n值。

(2) 与(1)的n值对应的y值。

程序设计:

y=0;n=1;

while y<3

    y=y+1/(2*n-1);

    n=n+1;

end

n=n-1;

y=y-1/(2*n-1)

n=n-1

运行结果:

y =

    2.9944

n =

    56

%验证n=56时的y值

clear all;clc;

n=56;

i=1:n;

f=1./(2*i-1);

y=sum(f)

3. 考虑以下迭代公式:

其中a、b为正的学数。

(1) 编写程序求迭代的结果,迭代的终止条件为|xn+1-xn|≤10-5,迭代初值x0=1.0,迭代次数不超过500次。

(2) 如果迭代过程收敛于r,那么r的准确值是,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。

程序设计:

clear;

a=input('a=?');

b=input('b=?');

x0=1;

x1=a/(b+x0);

y=abs(x1-x0);

n=1;

while y>10^(-5)&n<=499

    x0=x1;

    x1=a/(b+x0);

    y=abs(x1-x0);

    n=n+1;

end

x1

 

%比较收敛准确值和迭代结果

r1=(-b+sqrt(b^2+4*a))/2

r2=(-b-sqrt(b^2+4*a))/2

运行结果:

a=?1

b=?1

x1 =

    0.6180

r1 =

    0.6180

r2 =

   -1.6180

a=?8

b=?3

x1 =

    1.7016

r1 =

    1.7016

r2 =

   -4.7016

a=?10

b=?0.1

x1 =

    3.1127

r1 =

    3.1127

r2 =

   -3.2127

4. 已知

求f1~f100中:

(1) 最大值、最小值、各数之和。

(2) 正数、零、负数的个数。

程序设计:

clear;

f1=1;f2=0;f3=1;

f=[f1,f2,f3];

for n=4:100

    f4=f3-2*f2+f1;

    f=[f f4];

    f1=f2;

    f2=f3;

    f3=f4;

end

 

maxf=max(f)

minf=min(f)

sumf=sum(f)

 

positivenum=length(find(f>0))

negtivenum=length(find(f<0))

zeronum=length(find(f==0))

运行结果:

maxf =

   4.3776e+11

minf =

  -8.9941e+11

sumf =

  -7.4275e+11

positivenum =

    49

negtivenum =

    49

zeronum =

     2

5. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。求[2,50]区间内:

(1) 亲密数对的对数。

(2) 与上述亲密数对对应的所有亲密素数之和。

程序设计(一):

clear

pair=[];

for m=2:49

    f=(m+1)*m-1;

    signf=0;   %标记为0表示f为素数

    for k=2:sqrt(f)

        if (rem(f,k)==0)

            signf=1;  %标记为1表示f不是素数

        end

    end

    if signf==0

        pair=[pair;m m+1];  %亲密数对矩阵

    end

end

num=size(pair);

susum=sum(pair(:,1).*pair(:,2)-1);

disp(['亲密数对的对数',num2str(num(1))])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

程序设计:

clear

susum=0;num=0;

for m=2:49

    f=(m+1)*m-1;

    n=fix(sqrt(f));

    for k=2:n

        if (rem(f,k)==0)

            break;  %f不是素数时跳出循环

        end

    end

    if k==n

        num=num+1;   %亲密数对个数

        susum=susum+f;  %亲密素数和累加

    end

end

 

disp(['亲密数对的对数',num2str(num)])

disp(['亲密素数之和',num2str(susum)])

运行结果:

亲密数对的对数28

亲密素数之和21066

实验五   函数文件

1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。

建立函数文件fushu.m:

function [e,ln,s,c]=fushu(x)

e=exp(x);

ln=log(x);

s=sin(x);

c=cos(x);

建立命令文件fushu2.m

A=input('请输入任意一个复数A');

[a,b,c,d]=fushu(A);  %调用fushu.m的函数文件

a

b

c

d

fushu2.m运行结果:

>> fushu2

请输入任意一个复数A:4i

a =

  -0.6536 - 0.7568i

b =

   1.3863 + 1.5708i

c =

   0.0000 +27.29i

d =

   27.3082

2. 一物理系统可用下列方程组来表示:

从键盘输入m1、m2和θ的值,求a1、a2、N1和N2的值。其中g取9.8,输入θ时以角度为单位。

要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。

建立函数文件xxfcz.m

function [a1,a2,N1,N2]=xxfcz(m1,m2,t)

t=t*pi/180;

A=[m1*cos(t) -m1 -sin(t) 0; m1*sin(t) 0 cos(t) 0; 0 m2 -sin(t) 0; 0 0 -cos(t) 1];

g=9.8;

B=[0;m1*g;0;m2*g];

X=inv(A)*B;

a1=X(1);

a2=X(2);

N1=X(3);

N2=X(4);

建立命令文件xxfcz2.m

clear

m1=input('请输入m1:');

m2=input('请输入m2:');

t=input('请输入角度t:');

[a1,a2,N1,N2]=xxfcz(m1,m2,t);

a1

a2

N1

N2

运行结果:

>> xxfcz2

请输入m1:5

请输入m2:3

请输入角度t:90

a1 =

    9.8000

a2 =

   3.7505e-16

N1 =

   1.1251e-15

N2 =

   29.4000

3. 一个自然数是素数,且它的数字位置经过任意对换后仍为素数。例如13是绝对素数。试求所有两位绝对素数。

要求:定义一个判断素数的函数文件。

建立判断素数的函数文件sushu.m

function [x]=sushu(m)

%判断数m是否为素数

for M=2:(m/2)

    if rem(m,M)==0

        b=0;

        break

    else

        b=1;

    end

end

if b==1

    x=m;  %判断数m为素数,并返回

else

    x=[];  %数m不为素数

end

end

建立命令文件sushu2.m

clear;

js=[];  %初始绝对素数

for m=10:99

    x=sushu(m);

    if x

        x=fix(x/10)+rem(x,10)*10;

        y=sushu(x);

        js=[js,y];   %绝对素数

    else

        continue

    end

end

js

执行命令文件sushu2.m

>> sushu2

js =

    11    31    71    13    73    17    37    97    79

法二:

建立函数文件sushu3.m

function p=sushu3(m)

b=m(end); p=m;

for i=2:sqrt(b)

   n=find(rem(p,i)==0&p~=i);%将m中能被i整除,且不等于i的元素的下标找出,即n

   p(n)=[];         %将下标为n的元素剔除,其余的即为素数

end

建立命令文件sushu4.m

clear;

m=10:99;

p=sushu3(m);   %找出10到99内所有素数

p=10*rem(p,10)+(p-rem(p,10))/10;  %将p素数矩阵每个元素个位十位调换顺序

p=sushu3(p)    %再对调换顺序后的素数矩阵找出其中的素数

执行命令文件sushu4.m

>> sushu4

p =

    11    31    71    13    73    17    37    97    79

4. 设,编写一个MATLAB函数文件fx.m,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。

建立函数文件fx.m

function [f]=fx(x)

f=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);

end

5. 已知

(1) 当f(n)=n+10ln(n2+5)时,求y的值。

(2) 当f(n)=1×2+2×3+3×4+...+n×(n+1)时,求y的值。

建立函数文件fn1.m

function [fn]=fn1(n)

fn=n+10*log(n.^2+5);

end

建立函数文件fn2.m

function [fn]=fn2(n)

fn=0;

for x=1:n

    fn=fn+x*(x+1);   

end

求(1)(2)中y的值:

y1=fn1(40)/(fn1(30)+fn1(20));

y2=fn2(40)/(fn2(30)+fn2(20));

运行结果:

>> yfn

y1 =

    0.6390

y2 =

1.7662

实验六   高层绘图操作

1. 设,在x=0~2π区间取101点,绘制函数的曲线。

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

>> y=(0.5+3.*sin(x)./(1+x.^2)).*cos(x);

>> plot(x,y);

2. 已知y1=x2,y2=cos(2x),y3=y1×y2,完成下列操作:

(1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。

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

>> y1=x.^2;

>> y2=cos(2*x);

>> y3=y1.*y2;

>> plot(x,y1,'k:',x,y2,'b--',x,y3,'m-.');

(2) 以子图形式绘制三条曲线。

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

y1=x.^2;

y2=cos(2*x);

y3=y1.*y2;

subplot(3,1,1); 

plot(x,y1); 

title('y1');  

subplot(3,1,2); 

plot(x,y2); 

title('y2');  

subplot(3,1,3); 

plot(x,y3); 

title('y3');

(3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。

subplot(3,4,1);bar(x,y1,'y');title('bar(x,y1,"y")');  subplot(3,4,2);stairs(x,y1,'m');title('stairs(x,y1,"m")'); subplot(3,4,3);stem(x,y1,'g');title('stem(x,y1,"g")'); 

subplot(3,4,4);fill(x,y1,'c');title('fill(x,y1,"c")'); 

subplot(3,4,5);bar(x,y2,'y');title('bar(x,y2,"y")');  subplot(3,4,6);stairs(x,y2,'m');title('stairs(x,y2,"m")'); subplot(3,4,7);stem(x,y2,'g');title('stem(x,y2,"g")'); 

subplot(3,4,8);fill(x,y2,'c');title('fill(x,y2,"c")'); 

subplot(3,4,9);bar(x,y3,'y');title('bar(x,y3,"y")');  subplot(3,4,10);stairs(x,y3,'m');title('stairs(x,y3,"m")'); subplot(3,4,11);stem(x,y3,'g');title('stem(x,y3,"g")'); subplot(3,4,12);fill(x,y3,'c');title('fill(x,y3,"c")');

3. 已知

在-5≤x≤5区间绘制函数曲线。

x=-5:0.1:5;

if x<=0

y=(x+sqrt(pi))./(exp(2)); 

else  y=1/2*(log(x+sqrt(1+x.^2))); 

end

plot(x,y)

4. 绘制极坐标曲线ρ=asin(b+nθ),并分析参数a、b、n对曲线形状的影响。

a=input('a='); 

b=input('b='); 

n=input('n='); 

theta=0:0.01:2*pi; 

rho=a*sin(b+n*theta); 

polar(theta,rho,'k')

运行结果:

a=1

b=1

n=1

5. 绘制函数的曲线图和等高线。

其中x的21个值均匀分布[-5,5]范围,y的31个值均匀分布在[0,10],要求使用subplot(2,1,1)和subplot(2,1,2)将产生的曲面图和等高线图画在同一个窗口上。

x=-5:0.5:5; 

y=0:1/3:10;  

[x,y]=meshgrid(x,y);  

z=cos(x).*cos(y).*exp(-(sqrt(x.^2+y.^2)/4)); 

subplot(2,1,1); 

surf(x,y,z); 

subplot(2,1,2); 

contour3(x,y,z);

6. 绘制曲面图形,并进行插值着色处理。

s=0:0.05:pi/2; 

t=0:0.05:3*pi/2; 

[s,t]=meshgrid(s,t); 

[x,y,z]=peaks(30); 

x=cos(s).*cos(t); 

y=cos(s).*sin(t); 

z=sin(s);  

surf(x,y,z);shading flat;

文档

Matlab上机实验答案

Matlab上机实验答案实验一MATLAB运算基础1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。(1)>>z1=2*sin(85*pi/180)/(1+exp(2))z1=0.2375(2),其中>>x=[21+2i;-0.455];>>z2=1/2*log(x+sqrt(1+x^2))z2=0.7114-0.0253i0.68+0.3658i0.2139+0.9343i1.1541-0.0044i(3)>>a=-3.0:0.1:3.0;>>z3=(exp(
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top