人人范文网 范文大全

上机习题3教案

发布时间:2020-03-02 19:42:37 来源:范文大全 收藏本文 下载本文 手机版

实验三 MATLAB7.0基本编程

实验目的:

① 掌握脚本和函数;

② 掌握matlab中的变量和M文件的流控制语句; ③ 掌握函数的设计和实现。

实验要求:给出程序和实验结果。 实验内容:

一、一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

二、从键盘输入若干个数,当输入10时结束输入,求这些数的平均值和它们之和。

三、求[1000,2000]之间第一个能被17整除的整数。

四、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,10000]之间的全部完数。

五、Fibonacci数列定义如下:

f1=1 f2=1 fnfn1fn2,(n2)

求Fibonacci数列的第20项。

六、设计一个猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。 实验结果:

一、一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

程序如下: for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字

1 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end 153 370 371 407

二、从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 程序如下: sum=0; cnt=0; val=input(\'Enter a number (end in 0):\'); while (val~=0) sum=sum+val; cnt=cnt+1; val=input(\'Enter a number (end in 0):\'); end if (cnt > 0) sum mean=sum/cnt end Enter a number (end in 0):45 Enter a number (end in 0):65 Enter a number (end in 0):342 Enter a number (end in 0):45

2 Enter a number (end in 0):67 Enter a number (end in 0):12 Enter a number (end in 0):0 sum = 576

mean =

96

三、求[100,200]之间第一个能被21整除的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n n = 105

四、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。 for m=1:500 s=0;

3 for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end 6 28 496

五、Fibonacci数列定义如下:

f1=1 f2=1 fnfn1fn2,(n2)

求Fibonacci数列的第20项。 编写程序为: for i=3:20;

f(1)=1;

f(2)=1;

f(i)=f(i-1)+f(i-2); end >> f f =

Columns 1 through 7

1 8

13

2 3 5 4

Columns 8 through 14

21

34

55

89

144

233

377

Columns 15 through 20

610

987

1597

2584

4181

6765

六、设计一个猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。

命令如下:

a=fix(rand(1)*100+1); k=1; for k=1:7 n=input(\'输入一个1-100的整数:n=\'); if n>a disp(\'High\'); elseif n

补充:

例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1:

5 首先建立命令文件并以文件名f2c.m存盘。 M文件建立如下:

clear; %清除工作空间中的变量 f=input(\'Input Fahrenheit temperature:\'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c = 22.7778 程序2:

首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 >> clear; y=input(\'Input Fahrenheit temperature:\'); x=f2c(y) Input Fahrenheit temperature:70 c =

21.1111

x =

21.1111 例3-2 输入x,y的值,并将它们的值互换后输出。 程序如下:

x=input(\'Input x please.\');

y=input(\'Input y please.\'); z=x; x=y; y=z; disp(x); disp(y); Input x please.34 Input y please.54 54 34 例3-3 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input(\'a=?\'); b=input(\'b=?\'); c=input(\'c=?\'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp([\'x1=\',num2str(x(1)),\',x2=\',num2str(x(2))]); a=?1 b=?7 c=?9 x1=-1.6972,x2=-5.3028 例3-4 计算分段函数的值。

程序如下:

x=input(\'请输入x的值:\'); if x

7 end y 请输入x的值:5 y =

1.1562 例3-5 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input(\'请输入一个字符\',\'s\'); if c>=\'A\' & c=\'a\'& c=\'0\'& c

price

输入所售商品的价格,求其实际销售价格

8 建立m文件且以eg.m命名: price=input(\'请输入商品价格\'); switch fix(price/100) case {0,1} %价格小于200 rate=0; case {2,3,4} %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) % rate=5/100; case num2cell(10:24) % rate=8/100; case num2cell(25:49) % rate=10/100; otherwise % rate=14/100; end price=price*(1-rate) % eg 请输入商品价格390 price =

378.3000 >> eg 请输入商品价格23090 price =

价格大于等于500但小于1000 价格大于等于1000但小于2500 价格大于等于2500但小于5000 价格大于等于5000 输出商品实际销售价格 9 1.9857e+004 例3-7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下:

A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因 C =

7 16 27 40 55 72

ans =

Error using ==> mtimes Inner matrix dimensions must agree.

n已知 y12i1 ,当n=100时,求y的值。 i1 程序如下: y=0; n=100; for i=1:n y=y+1/(2*i-1); 10 end y y =

3.2843

例3-10 写出下列程序的执行结果。 s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a s=s+k; end disp(s\'); 39 48 57 66 例3-14 编写函数文件求半径为r的圆的面积和周长。

编写m文件并命名为fcircle.m如下: function [s,p]=fcircle(r) %FCIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 s=pi*r*r; p=2*pi*r; circle(2) ans =

12.5664

11 例3-15 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

函数文件tran.m:

function [rho,theta]=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 在命令窗体输入命令: x=input(\'Please input x=:\'); y=input(\'Please input y=:\'); [rho,the]=tran(x,y); rho the Please input x=:5 Please input y=:7 rho =

8.6023

the =

0.9505 例3-16 利用函数的递归调用,求n!。 n!本身就是以递归的形式定义的:

显然,求n!需要求(n-1)!,这时可采用递归调用。递归调用函数文件factor.m如下:

function f=factor(n) if n

12 f=factor(n-1)*n; %递归调用求(n-1)! end 在命令窗体输入: factor(9) ans =

362880

>> factor(67) ans =

3.6471e+094

例3-17 nargin用法示例。

函数文件charray.m: function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end 在命令窗体中输入: x=[1:3]; >> y=[1;2;3]; >> charray(x)

13 ans =

1 2 3

>> charray(x,y\') ans =

2 4 6

>> charray(x,y,3) ans = 21 例3-18 全局变量应用示例。

先建立函数文件wadd.m,该函数将输入的参数加权相加。function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y; 在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2) s = 5 14

上机习题2教案

语法分析上机实习题

上机教案

级VB上机实习题

文献检索上机实习题(一)

文献检索上机实习题(二)

VFP上机习题(附答案)

东北大学上机实验3

VB上机考试 习题以及答案

上机实验作业3材料

上机习题3教案
《上机习题3教案.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档