<p>正如<a href="https://stackoverflow.com/questions/22773579/issue-with-program-to-approximate-sin-and-cosine-values#comment34720434_22773579">Russell Borogove's comments</a>中指出的,这里有几个问题。在</p>
<p>第一个问题是你使用的公式</p>
<p><img src="https://i.stack.imgur.com/ZOvgS.png" alt="enter image description here"/></p>
<p>(见<a href="http://en.wikipedia.org/wiki/Taylor_series#List_of_Maclaurin_series_of_some_common_functions" rel="nofollow noreferrer">wikipedia</a>)期望<em>x</em>是弧度而不是度数。绕一个圆一圈是360度或2*pi,因此可以通过乘以pi/180将度数转换为弧度,如下python代码中所示,这样可以错误地获得90度的sin。在</p>
<pre><code>>>> math.sin(90)
0.8939966636005579
>>> math.sin(90*math.pi/180)
1.0
</code></pre>
<p>问题2是代码的其余部分。正如在评论中指出的,有一些bug,找到它们的最好方法是使用一些战略性的<code>print</code>语句。然而,你可以用更少的代码行来编写你的程序,而简单的程序往往会有更少的错误,如果它们确实有问题,则更容易调试。在</p>
<p>因为这是一个作业,我不会为您做,但是一个相关的例子是sinh(x)的系列。在</p>
<p><img src="https://i.stack.imgur.com/aqOLV.png" alt="enter image description here"/></p>
<p>(再次来自维基百科)</p>
<p>您可以使用Python<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">list comprehension</a>在“one shot”中生成术语。可以对列表进行<code>print</code>ed和<code>sum</code>med来获得结果,如下面的程序所示</p>
^{pr2}$
<p>这个程序的输出是</p>
<pre><code>[1.5707963267948966, 0.6459640975062462, 0.07969262624616703, 0.004681754135318687, 0.00016044118478735975]
2.30129524587 2.30129890231
</code></pre>
<p>我直接从求和的数学公式中生成了Python列表理解代码,它在左侧以“Sigma”表示法方便地给出。你也可以用同样的方式产生罪恶和罪恶。你需要的一个缺少的成分是系列中每一点的符号。数学公式告诉你你需要(-1)<sup>n</sup>。Python的等价物是<code>(-1)**n</code>,它可以被安排到列表理解代码的适当位置。在</p>