matlab简明教程 下载本文

(2)正数、零、负数的个数。 解:f(1)=1; f(2)=0; f(3)=1; for m=4:100

f(m)=f(m-1)-2*f(m-2)+f(m-3); end

sum(f([1:100])>0) sum(f([1:100])<0)

100-sum(f([1:100])>0)-sum(f([1:100])<0) 提示:可以考虑使用Matlab的有关函数实现。 8、 解: clear

n=input('接受键盘输入n='); m=input('接受键盘输入m=(m

假定某地区的电话收费标准为:通话时间在3分钟以下,从数组{1,2,。。。n}随机选出m(m<=n))个不重复的元素.

收费为0.5元,3分钟以上,则每超过1分钟加收0.15元;在7:00~22:00之间通话者,按上述收费标准全价收费,在其它时间通话者,按上述收费标准半价收费。计算某人在t1时刻通话到t2时刻,应交多少电话费。(选做,有挑战性) 吴正山预测这题不考

数学实验练习六:函数

一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数:

f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...)

其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数

的输出。

解:function f=pifun01(n) f=0; for i=1:n

f=f+(-1)^(i+1)/(2*i-1); end

f=f*4; 2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

解:function f=pifun01(n) tic; f=0; for i=1:n

f=f+(-1)^(i+1)/(2*i-1); end f=f*4; f=toc;

二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列,

其定义如下:

fibo(n+2) = fibo(n+1)+fibo(n) 此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1.

a) fibo(25) 的返回的值是多少? 解:function fibo(n) fibo(1)=0; fibo(2)=1; for i=1:n-2

fibo(i+2)=fibo(i+1)+fibo(i); end fibo(n)

b) 使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。我的计算

机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。请说明你的计算机规格以及其计算时间。

解:function fibo(n) tic

fibo(1)=0; fibo(2)=1; for i=1:n-2

fibo(i+2)=fibo(i+1)+fibo(i); end

c) 你们已学过离散数学,知道 Fibonacci 数列的第 n 项可以直

接表示成 fibo(n)={[(1+a)/2]^(n-1)-[(1-a)/2]^(n-1)}/a

其中 a 是 5 的平方根。写利用上式一个 MATLAB 的非递归函数 fibo2.m 来计算 Fibonacci 数列。

解: function fibo2(n)

fibo2(n)=(((1+sqrt(5))/2)^(n-1)-((1-sqrt(5))/2)^(n-1))/sqrt(5); fibo2(n)

d) fibo2(25) 的值为何?是否和 fibo(25) 相同? 不相同

e) 请计算 fibo2(25) 的计算时间,并和 fibo(25) 比较。