泰勒级数 - 当 T1 == T0 时如何停止函数?

Taylor Series - How do I stop the function when 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 不是真的 == T1 如果你看整个小数,但因为精度是 11,我想 stop当只有 0 的字符串作为输出出现时,即在计数器 07 处。

下午好,

这里只是在黑暗中拍摄;如果你知道你的最终答案是什么,或者它应该是什么,你可以添加一个终止条件,比如......

如果 T1 == T0: 休息

或者使用数值代替变量比较。

然后在那种情况下,如果您知道您的模型应该做什么,并且它确实做到了,您可以结束计算过程以到达那里。

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