您的当前位置:首页实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计

来源:小侦探旅游网
实验五 M文件和MATLAB程序设计实验

一、实验内容

1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为

奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21

3105168421 63105168421

运行下面的程序,按程序提示输入n=1,2,3,5,7,8,9等数来验证这一结论。 %classic \"3n+1\" problem from number theory. while 1

n=input('Enter n,negative quits:'); if n<=0 break end a=n;

while n>1

if rem(n,2)==0 n=n/2; else

n=3*n+1; end a=[a,n]; end a end

Enter n,negative quits: a=0;

i22. 编程求满足i1100000的最小m值。

m i=1;

while (a<100000) a=a+pow2(i); i=i+1; end m=i-1

y的值。

function [y]=myfun1(x)

3. 编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回

sinx,y(x)x,x6,选择一些数据测试你编写的函数。

x00x3x3

function y=myfun1(x) if x<=0

y=sin(x); elseif x>0&x<=3 y=x; elseif x>3 y=-x+6; end

运行结果:

4. 用如下迭代公式求

a,迭代的终止条件为

xn1xn105,迭代初值

x01.0,迭代次数不超过100次。分别对迭代结果和准确值进行比较,并统计迭代次数。

迭代公式:xn1xn1a 22xn1function [x, n]=sqrt_a(a)

x=1.0;

for k=1:100 m=x;

x=x/2+a/(2*x);

if abs(x-m)<=10^(-5) break end end x; n=k;

s=(x-sqrt(a)); if abs(s)<=10^(-5) disp('正确'); else

disp('错误'); end

下面调用举例: 运行结果:

>> [x ,n]=sqrt_a(3) 正确 x =

1.7321 n = 5

>> [x, n]=sqrt_a(17) 正确 x =

4.1231 n = 6

>> [x,n]=sqrt_a(113) 正确 x =

10.6301 n = 8

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

程序设计:

function [e ln s c]=num(x) e=exp(x) ln=log(x) s=sin(x) c=cos(x) end

运行结果: >> num(5i) e =

0.2837 - 0.9589i ln =

1.6094 + 1.5708i s =

0 +74.2032i c =

74.2099 ans =

0.2837 - 0.9589i 6. 设 f(x)=

1(x2)20.11,编写一个MATLAB函数文件fx.m,

0.01(x3)4使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。 程序设计: 函数文件fx.m:

function A=fx(x)

A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01) end

调用fx.m的命令文件:

>> A=fx([1 2;2 3;4 3])

运行结果:

A =

0.9716 10.9901 10.9901 100.9091 1.2340 100.9091 二、实验小结

指导老师: _________________

实验时间和地点:______________

实验成绩:____________________

因篇幅问题不能全部显示,请点此查看更多更全内容