首页 > 解决方案 > 泰勒级数 - 当 T1 == T0 时如何停止该功能?

问题描述

我需要在 python 中制作泰勒级数,而不需要导入任何文件,import math 也不使用任何内置的数学函数,如round().

到目前为止,我的余弦函数代码如下:

x = abs(float(input("Please input the degree: "))) 
rad = x * 3.14159265358979323846264338327950288419716 / 180

def cos():
    f = 1
    i = 0
    c = 0
    T0 = 1
    T1 = 0
    i = 0
    Tp = 1
    prec = 11
    TDif = 1
    print("{0:^45} {1:^13} {2:^47} {3:>12}".format("x", "termOld", "termNew", "tOld - TNew"))

    while T1 != T0:
        T0 = Tp
        T1 = (-1 * T0 * rad * rad) / ((i + 1) * (i + 2))
        Tp = T1
        f += T1
        c += 1
        i += 2
        TDif = abs(T0) - abs(T1)
        print("{:02d} ==> {:^30.11f} {:^30.11f} {:^30.11f} {:^30.11f}".format(c, f, abs(T0), abs(T1), abs(TDif)))

cos()

这是输出:

Please input the degree: 30
                     x                           termOld                        termNew                      tOld - TNew    
01 ==>         0.86292216110                  1.00000000000                  0.13707783890                  0.86292216110         
02 ==>         0.86605388342                  0.13707783890                  0.00313172232                  0.13394611658         
03 ==>         0.86602526410                  0.00313172232                  0.00002861932                  0.00310310300         
04 ==>         0.86602540421                  0.00002861932                  0.00000014011                  0.00002847921         
05 ==>         0.86602540378                  0.00000014011                  0.00000000043                  0.00000013968         
06 ==>         0.86602540378                  0.00000000043                  0.00000000000                  0.00000000043         
07 ==>         0.86602540378                  0.00000000000                  0.00000000000                  0.00000000000         
08 ==>         0.86602540378                  0.00000000000                  0.00000000000                  0.00000000000         
09 ==>         0.86602540378                  0.00000000000                  0.00000000000                  0.00000000000
...

最后一个重复,直到计数器达到 80。

现在这是我的问题。termOld当( T0) == termNew( T1) 遵循它们设置的精度时,如何在上面设置的条件下停止函数?就像,如果你查看整个小数点,我知道T0不是真的在计数器 9,但是因为精度是 11,所以我想在只有 0 的字符串作为输出出现时停止它,即在计数器 07 处。== T1

标签: pythonpython-3.xfunctionformattaylor-series

解决方案


更改while T1 != T0:while abs(TDif) > .5*10**(-prec):应该可以解决问题。这确保了在给定的小数精度下,差异将向下舍入为零。


推荐阅读