我不久前开始使用python进行编程,而且我遇到了程序的一部分问题。程序将要求用户输入,他可以输入:A,B,C,M或Q.我已完成A,M和Q部分,但我无法弄清楚如何为B做部件(计算你想要的数字的正弦)和C(计算正弦)。 我得到的所有信息都是:
X的正弦的幂级数近似可表示为: 正弦(X)= X - (X3 / 3!)+(X5 / 5!) - (X7 / 7!)+(X9 / 9!)....注意, 该幂级数中的个别项可表示为:( - 1)k * X2k + 1 /(2k + 1)!其中k = 0,1,2,3 ......,
哦,和(但是对于这个while循环应该做对吗?): 当计算X的正弦或X的余弦时,程序将扩展幂级数 直到系列中下一个术语的绝对值小于1.0e-8(指定的epsilon)。 该术语不会包含在近似值中。
我不能使用导入数学。 谁能让我知道如何做到这一点?我真的不知道从哪里开始哈哈哈。
提前致谢!
***嘿伙计们,我在过去的3个小时里一直试图这样做。我对编程很陌生,你的一些答案使我对它更容易理解,但是我的程序没有用,我真的不知道怎么做。是的,我今天去找了一位导师,但他也不知道。所以,是的,我想我会等到我的老师给我的程序评分,然后我可以问他应该怎么做。谢谢你的所有答案,我很感激他们! :)
答案 0 :(得分:2)
似乎你不应该导入math
,因为你应该编写自己的函数来计算正弦。你应该使用幂级数逼近。
我建议你先写一个阶乘函数,然后编写一个使用这个阶乘函数计算幂级数的循环。
如果你仍然无法弄明白,我建议你和你的老师或老师的助手谈谈。
答案 1 :(得分:2)
由于你有条件完成循环last_term < 1.0e-8
,你应该使用while
:
while last_term > 1.0e-8:
你需要一个计数器来保持k
的数量(从0开始)和一个变量以保留最后一个术语:
k = 10 # some initial value
last_term = 0
while ...:
last_term = ... # formula here
也是一个结果变量,让'说sin_x
:
while ...:
...
sin_x += last_term
注意:在公式中您使用的是阶乘,因此需要定义一个计算数字阶乘的函数,并正确使用它。
答案 2 :(得分:2)
>>> e = 2.718281828459045
>>> X = 0.1
>>> (e**(X*1j)).imag # sin(X)
0.09983341664682815
>>> (e**(X*1j)).real # cos(X)
0.9950041652780258
验证
>>> from math import sin, cos
>>> sin(X)
0.09983341664682815
>>> cos(X)
0.9950041652780258
如果你通过
明确总结系列,你可能会得到更好的分数result = 0
n = 1
while True:
term = ...
result += term
if term <= epsilon:
break
n += 2