泰勒公式的收敛域的程序验证

    技术2026-03-16  3

    什么是泰勒公式

    百度百科是这样说的:如果函数f(x)在包含x0的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,有下式成立: 泰勒公式的定义看起来气势磅礴,高端大气。但实际上我们用的最多的,是泰勒公式在0点的展开,即代入x0=0,写成: 代入具体函数,可以得到我们最熟悉的形式:

    非0处的展开

    首先对于最简单的e^x:

    #include<stdio.h> int main() { double sum = 0.0; double next = 1.0; double x;//选择令x为多少 scanf("%lf", &x); for (int i = 1; i < 100000; i++) { sum += next; next = next * x / i; } printf("%.15lf", sum); }

    我们分别取三个值:0.1次方,1次方和10次方。 e^0.1次方 采用麦克劳林公式展开计算的程序结果: 还真就是一模一样。 同样的,计算e^x在x=1处的展开 原来,自然对数e除了下面这样的形式: 我们还可以得到另外一种形式:

    然后是三角函数sinx

    它的麦克劳林公式: 程序如下:

    #include<stdio.h> int main() { double sum = 0.0; double x;//选择令x为多少 scanf("%lf", &x); double next = x; for (int i = 1; i < 100000; i++) { if (i % 2) sum += next; else sum -= next; next = next * x *x/ (4.0*i*i+2.0*i); } printf("%.15lf", sum); }

    我输入pi/2 即3.14159…/2=1.5707963268… 程序结果返回1.0000… 与sin pi/2结果一致! 那么我们再测试一下2*pi即6.28318…

    最后是对数函数

    程序:

    #include<stdio.h> int main() { double sum = 0.0; double x;//选择令x为多少 scanf("%lf", &x); double next = x; for (int i = 1; i < 100000; i++) { sum += next; next = next * (-1) * x * i / (i + 1.0); } printf("%.15lf", sum); }

    这里先试e^(1/2)-1,结果如下图所示,与实际符合 那么再试一下e-1 对于ln(1+x),只有在(-1,1]范围内麦克劳林公式成立。 具体可以参见无穷级数章节。

    至于 可以回想一下高中所学的等比数列,自行归纳。

    Processed: 0.014, SQL: 9