(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) 比较。