当前位置: 首页 > article >正文

C#,欧拉常数(Euler Constant)的算法与源代码

1 欧拉常数

欧拉常数最先由瑞士数学家莱昂哈德· 欧拉 (Leonhard Euler) 在1735年发表的文章《De Progressionibus harmonicus observationes》中定义。欧拉曾经使用γ作为它的符号,并计算出了它的前6位,1761年他又将该值计算到了16位 。

欧拉常数最先由瑞士数学家莱昂哈德·欧拉(Leonhard Euler)在1735年发表的文章 De Progressionibus harmonicus observationes 中定义。欧拉曾经使用C作为它的符号,并计算出了它的前6位小数。1761年他又将该值计算到了16位小数。1790年,意大利数学家马歇罗尼(Lorenzo Mascheroni)引入了γ作为这个常数的符号,并将该常数计算到小数点后32位。但后来的计算显示他在第20位的时候出现了错误。欧拉数以世界著名数学家欧拉名字命名;还有一个鲜为人知的名字纳皮尔常数,用来纪念苏格兰数学家约翰·纳皮尔 (John Napier) 引进对数 。

2 计算结果

3 源程序

using System;

namespace Legalsoft.Truffer.Algorithm
{
    public static partial class Number_Sequence
    {
        
        private static double doubleFactorial(int n)
        {
            if (n == 1) return 1;
            else return n * doubleFactorial(n - 1);
        }

        public static double Euler_Constant(int n)
        {
            if (n == 0) return 1;
            else return (1 / doubleFactorial(n) + Euler_Constant(n - 1));
        }
    }
}
 

欧拉常数(Euler-Mascheroni constant)

欧拉-马歇罗尼常数(Euler-Mascheroni constant)是一个主要应用于数论的数学常数。它的定义是调和级数与自然对数的差值。

学过高等数学的人都知道,调和级数S=1+1/2+1/3+……是发散的,证明如下:

由于ln(1+1/n)<1/n (n=1,2,3,…)

于是调和级数的前n项部分和满足

Sn=1+1/2+1/3+…+1/n>ln(1+1)+ln(1+1/2)+ln(1+1/3)+…+ln(1+1/n)

=ln2+ln(3/2)+ln(4/3)+…+ln[(n+1)/n]

=ln[2*3/2*4/3*…*(n+1)/n]=ln(n+1)

由于

lim Sn(n→∞)≥lim ln(n+1)(n→∞)=+∞

所以Sn的极限不存在,调和级数发散。

但极限S=lim[1+1/2+1/3+…+1/n-ln(n)](n→∞)却存在,因为

Sn=1+1/2+1/3+…+1/n-ln(n)>ln(1+1)+ln(1+1/2)+ln(1+1/3)+…+ln(1+1/n)-ln(n)

=ln(n+1)-ln(n)=ln(1+1/n)

由于

lim Sn(n→∞)≥lim ln(1+1/n)(n→∞)=0

因此Sn有下界

Sn-S(n+1)=1+1/2+1/3+…+1/n-ln(n)-[1+1/2+1/3+…+1/(n+1)-ln(n+1)]

=ln(n+1)-ln(n)-1/(n+1)=ln(1+1/n)-1/(n+1)

将ln(1+1/n)展开,取其前两项,由于舍弃的项之和大于0,故

ln(1+1/n)-1/(n+1)>1/n-1/(2n^2)-1/(n+1)=1/(n^2+n)-1/(2n^2)>0

即ln(1+1/n)-1/(n+1)>0,所以Sn单调递减。由单调有界数列极限定理,可知Sn必有极限,因此

S=lim[1+1/2+1/3+…+1/n-ln(n)](n→∞)存在。

于是设这个数为γ,这个数就叫作欧拉常数,他的近似值约为0.57721566490153286060651209,目前还不知道它是有理数还是无理数。在微积分学中,欧拉常数γ有许多应用,如求某些数列的极限,某些收敛数项级数的和等。例如求lim[1/(n+1)+1/(n+2)+…+1/(n+n)](n→∞),可以这样做:

lim[1/(n+1)+1/(n+2)+…+1/(n+n)](n→∞)=lim[1+1/2+1/3+…+1/(n+n)-ln(n+n)](n→∞)-lim[1+1/2+1/3+…+1/n-ln(n)](n→∞)+lim[ln(n+n)-ln(n)](n→∞)=γ-γ+ln2=ln2

4 代码格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    public static partial class Number_Sequence
    {
        
        private static double doubleFactorial(int n)
        {
            if (n == 1) return 1;
            else return n * doubleFactorial(n - 1);
        }

        public static double Euler_Constant(int n)
        {
            if (n == 0) return 1;
            else return (1 / doubleFactorial(n) + Euler_Constant(n - 1));
        }
    }
}


http://www.kler.cn/a/233244.html

相关文章:

  • 使用CNN进行验证码识别:深度学习与图像预处理教程
  • C/C++语言基础--C++模板与元编程系列六,C++元编程相关库的讲解与使用
  • SHELL脚本(Linux)
  • 设计模式之责任链模式(Chain Of Responsibility)
  • NAT网络工作原理和NAT类型
  • CentOS 服务
  • springboot/ssm学生请假管理系统 高校请假审批管理系统Java系统
  • jsp页面,让alert弹出信息换行显示
  • Rust方法自动解引用测试,总结和补充
  • 前端入门:(五)JavaScript 续
  • Oracle篇—logminer日志挖掘恢复误操作数据
  • Vue源码系列讲解——虚拟DOM篇【三】(更新子节点)
  • 华为交换机常用命令
  • [office] excel2003进行可视性加密的方法 #媒体#其他#知识分享
  • 京东微前端框架MicroApp简介
  • 让cgteamwork自动为Houdini载入相机,角色道具的abc文件
  • docker下,容器无法启动,要删除里面的文件
  • vue3 elementplus DateTimePicker 日期时间设置默认时间为当天
  • 跟着cherno手搓游戏引擎【22】CameraController、Resize
  • WordPress突然后台无法管理问题
  • GPT-3 训练自己的数据教程详解
  • 常用数字处理格式校验
  • 【C++跬步积累】—— 构造函数+析构函数
  • ARM交叉编译搭建SSH
  • 【网络攻防】网络攻防综合题-期末重点
  • Select 选择器 el-option 回显错误 value