利用matlab软件求解常数e和欧拉常数γ

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学实验报告

利用matlab软件求解常数e和欧拉常数γ实验目的:

利用matlab软件计算常数e和γ,并尝试利用不同的算法计算,比较计算精度和时间,找到较好的算法。

掌握matlab程序求和、求极限的方法,学会寻找更优算法。

实验内容:

1、求e

e可以来源于两个数列的极限和,即

en=lim(1+1/x)^x,(x->+∞)(1式)

sn=1/0!+1/1!+1/2!+1/3!+1/4!+1/5!+……(2式),

根据1式,可在matlab上设计如下代码:

for n=1:15

n=10^n;

e=(1+1/n)^n %求常数e的循环语句

end

format long %使结果显示16位双精度数

结果:

e的标准值约为:2.71828182845904523536

由上述结果可知,使用1式,有很大的缺陷,不仅精度连10^-7都没有,而且当n>=10^9误差开始变大。

根据2式,可得如下代码:

sum=0;

t=1;

for n=1:18

t=n*t;

sum=sum+(1/t);

end %求常数e的循环语句

e=1+sum

format long %使结果显示16位双精度数

结果:

e的标准值约为:2.71828182845904523536

如上所示,随着n的增大,e的计算值越来越接近e的真实值.但是,当n 的值大于17后,计算的精度不再提高,原因是双精度型数只能精确到16位,所以结果只有个位以及小数点后15位(最后一位是近似取的),而1/18!=1.56*10^-16,所以n超过18再往下计算不会更精确。。

在1式代码中,(1+1/n)和n都只能精确到小数点后16位,两者相乘,结果精度将只能精确到8位。在2式中,,每一项都能精确到小数点后16位,而e是所有项的和,求和后仍然能够精确到小数点后16位。所以,对于某些使用数学软件求解的问题,如果对精度有要求,应该尽量使用加、减运算,少用其他的运算(例如乘、除、乘方、对数等),这样可以提高运算精度。

2、求γ

如此欧拉常数γ也可以使用matlab求出较为精确的值。

可由公式γ=lim(n→∞)[(1+1/2+1/3+…+1/n )-ln(n)]得出。

for n=1:10

s=0;

for i=1:10^n

s=s+(1/i);

end

y=s-log(10^n) %求常数γ的循环语句

end

format long %使结果显示16位双精度数

结果:

γ的权威数值约等于0.57721566490153286060651209。

上述结果精度约有10^-8,虽然精度还有提高空间,然而matlab上运行时,结果表明,增加n值,精度提高,运算时间也将大大加长(通常n超过10就需要好几分钟)

使用级数来计算:

for n=1:9

s=0;

for i=1:10^n

s=s+(1/i)-log(1+1/i);

end

y=s %求常数γ的循环语句

end

format long %使结果显示16位双精度数

结果:

γ的权威数值约等于0.57721566490153286060651209。

上述结果精度也约有10^-8,n再大就计算时间大大增加了,且可能会出错。

上面两个算法都不能算出更为精确的欧拉常数的值,因为调和级数收敛较慢,因此matlab计算很缓慢。这也表明,这个算法还有待改进,需要更好的算法才能计算出γ更精确的值。

实验总结:

本文探索了使用数学软件求解常见常数的方法,并比较了算法的优劣,而算法不同,计算精度、时间相差很大,这表明,数学不能完全依靠计算机,人所编写的算法也非常重要,计算机只是人的工具,人的思维能力才是最重要的。另外,我们也需要计算机强大计算能力的帮助,学会使用数学软件,才能更加有效地发展数学。

相关文档
最新文档