利用matlab软件求解常数e和欧拉常数γ
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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计算很缓慢。这也表明,这个算法还有待改进,需要更好的算法才能计算出γ更精确的值。
实验总结:
本文探索了使用数学软件求解常见常数的方法,并比较了算法的优劣,而算法不同,计算精度、时间相差很大,这表明,数学不能完全依靠计算机,人所编写的算法也非常重要,计算机只是人的工具,人的思维能力才是最重要的。另外,我们也需要计算机强大计算能力的帮助,学会使用数学软件,才能更加有效地发展数学。