早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用matlab求两个函数间对应点的误差值和计算到每一步时的程序运行总耗时.f1=∏(上标N,下标n=1)(1+2/n);求积.f2=1/2(N+1)(N+2).N=20:20:1000,是个矩阵.希望运行一段程序,能显示出对于N里的每个

题目详情
用 matlab 求 两个函数间对应点的误差值 和 计算到每一步时的程序运行总耗时.
f1 = ∏(上标N,下标n=1)(1+2/n); 求积.
f2 = 1/2(N+1)(N+2).
N=20:20:1000,是个矩阵.
希望运行一段程序,能显示出对于 N 里的每个元素,f1(N) 和 f2(N) 的误差值 (f1-f2) 是多少,以及程序每计算一个元素的耗时.比如计算到 f1(20)-f2(20) 这一步时程序总共运行了多长时间?然后运算到 f1(40)-f2(40) 这一步时程序总共又运行了多长时间.(可能是用 tic/toc 做...不懂.)
要对整个矩阵里的元素都这么做,程序该怎么写...
今天之内解决的话再加20分.
▼优质解答
答案和解析
% 其实计时没有太大意义,因为采用不同的方法差别会很大
% (例如,使用循环或是向量化运算,是否预置,是否递推,等等)
% 更重要的是,计算耗时太少,根本无法计量(总耗时都近似为0,更不要说单步耗时了)
NN=20:20:1000;
e = []; % 用于存储f1-f2的误差
t = []; % 用于存储单步计算耗时
t0 = clock;
for N=NN
tic
n = 1:N;
f1 = sum(1+2./n);
f2 = 1 / 2 * (N+1) * (N+2); % 不确定这个是不是你要的公式?
e(end+1) = f1 - f2;
t(end+1) = tic;
end
% 总耗时
etime(clock,t0)
% 画图,上面是误差,下面是耗时
subplot(2,1,1),plot(NN,e,'.-')
subplot(2,1,2),plot(NN,t,'.-')