《数学实验》报告
1. 问题描述
讨论调和级数的变化规律,
(1)画出部分和数列{Sn}变化的折线图,观察变化规律;
(2)引入数列{Hn}:Hn=S2n – Sn,作图观察其变化,猜测是否有极限
(3)引入数列{Gn}:Gn=S2n,作图观察其变化,寻找恰当的函数拟合;
(4)讨论部分和数列{Sn}的变化规律。
2. 问题分析与实验过程
随着n的增大,其数值逐渐减少,因此可以猜测调和级数 曲线的变化趋势是逐步趋缓的。根据这个,按照题目要求引入各种要求的数列,然后用MATLAB进行求解,得出各个数列的曲线,然后进行分析得出结论。在用MATLAB求解时,把各个函数分成几个独立模块,方便调试。
程序:
模块a:实现显示调和级数曲线变化的功能
function test2a(n)
fn = [1]; %定义fn的初值为1
for i = 2:n
fn = [fn,fn(i-1)+1/i]; %定义fn =
end
plot(fn) %显示函数fn的曲线变化图
模块b: 实现显示数列{Hn}的曲线变化的功能
function test2b(n)
fn = [1]; %定义fn的初值为1
for i = 2:2*n
fn = [fn,fn(i-1)+1/i]; %定义fn =
end
Hn = [1/2]; %定义Hn的初值为0.5
for i = 1:n
Hn = [Hn,fn(2*i)-fn(i)];
%定义Hn = -
end
plot(Hn) %显示函数Hn的曲线变化图
模块c:实现显示数列{Gn}曲线变化的功能
function test2c(n)
Gn = [1.5]; %定义Gn的初值为1.5
for i = 2:n
Gn = [Gn,Gn(i-1)+1/(2*i)+1/(2*i-1)];
%定义Gn =
end
plot(Gn) %显示函数Gn的曲线变化图
模块d:实现对数列{Gn}的拟合功能
function y = test2d(n)
Gn = [1.5];
for i = 2:n
Gn = [Gn,Gn(i-1)+1/(2*i)+1/(2*i-1)];
end
xn = 1:n;
Gn = exp(Gn); %令Gn = e ^(Gn)
y = polyfit(xn,Gn,1) %对Gn = e ^(Gn)进行一阶拟合
模块e:实现比较数据跟拟合数据吻合程度的功能
function y = test2e(n)
Gn1 = [];
for i = 1:n
Gn1 = [Gn1,log(3.5621*i+0.8910)];
%设置拟合函数Gn1 = log(3.5621*i+0.8910)
end
Gn2 = [1.5];
for i = 2:n
Gn2 = [Gn2,Gn2(i-1)+1/(2*i)+1/(2*i-1)];
end
x = 1:n;
plot(x,Gn1,'b',x,Gn2,'r*') %显示拟合函数Gn1和原始函数Gn2的曲线图进行比较,确定两个函数的吻合程度。
运行结果(直接输出运行结果或者抓取Matlab运行结果的图片):
模块a:
模块b:
模块c:
模块d:
模块e:
问题回答:
(1)
由图可知,数列{Sn}的曲线随着n的增大而逐步增大,但是n越大,Sn的上升逐步趋缓。
(2)
由图可知,数列{Hn}在刚开始时的上升幅度非常大,但是n增大到一定值后,Hn的上升趋缓,并逐步稳定。可以猜测数列{Hn}有极限。
(3)
由模块c显示的数列{Gn}的曲线变化,猜测Gn为一指数函数,设Gn=ln(a*n+b)。令Gn=e^Gn,然后进行一阶拟合。经一系列验证后,证明上述正确。
(4)部分和数列{Sn}随着n的增大而逐步增大,变化曲线跟对数函数的变化曲线相似,n越大,Sn的上升幅度逐步趋缓。
3.实验总结和实验感悟
总结:
通过这次实验,我学会了如何去拟合一个函数。这需要大量的数据调试,要不断地猜测其最接近哪种函数,然后不断的代数据进去拟合,直到得到一个比较理想的结果。还有,就是要注意自变量的取值范围,前后要一致。最后,我感受到模块化函数高效性和方便性。
感悟:
我觉得MATLAB是一种非常实用的编程软件,它的语法简单易懂,不繁琐,而且功能强大。以后可以加强对MATLAB的学习。