就像标题所说的,我需要找到泰勒级数以及编写除数测试程序,而不使用Python3.5中的数学模块。我会在一张纸上做数学,但实际上我在学校里从来没有教过这两样东西,所以老实说,我完全不知道怎么在纸上做。我已经完成了相当多的工作,但我需要一些帮助来完成它。我有一个朋友教我编程时使用的算法,所以我现在对这个有了一点了解。请看我遇到的主要编程问题的长注释。在
对于泰勒级数:在计算/sinx/cosx的值时,您的程序应该继续添加幂级数的项,直到它达到一个绝对值小于乘以先前项和的绝对值的项。在
公式:
如果n是正整数: n!=n x(n-1)x(n-2)x…x 3 x 2 x 1
对于Lewis-Carrol可分性检验:
只要数字有一个以上的数字,就可以通过删除单位数字并从结果数字中减去这个数字来缩短它。
当且仅当最终数等于零时,原始数可被11整除
代码:
#I don't know why, but for some reason n is automatically set to 5 once it is called in the recursion function for sin and cos x.
#This causes the answers to for sin and cos x to be drastically incorrect.
x = float(input("Please input a real number: "))
def factorial(n):
res = 1
for i in range(1, n+1):
res *= i
return res
def question1():
ex = 1 + x
for n in range(2,15):
ex += (x**n)/factorial(n)
print("e^{} = {}".format(x, ex))
question1()
def question2():
cosx = 0
for n in range(0, 15):
cosx += ((-1)**n)/factorial(2*n)*(x**(2*n+1))
print("cos {} = {}".format(x, cosx))
question2()
def question3():
sinx = 0
for n in range(0, 15):
sinx += ((-1)**n)/factorial(2*n+1)*(x**(2*n+1))
print("Sin {} = {}".format(x, sinx))
question3()
##def question4():
## while x > 9:
## unit = x % 10
## new_x = x // 10
## print(new_x)
## if new_x == 0:
## break
##question4()
样本输出:
^{pr2}$
在
question3()
函数中的for
循环中的计算有许多错误。在(-1**n)
中,**
的优先级高于-
。正确的表达式是((-1)**n)
(x*(2*n)+1)
使用乘法而不是求幂。应该是:x**(...
,而不是x*(...
。在*
(修正为**
)的优先级高于+1
。应该是:(x**(2*n+1))
。在n -= 1
没有效果,因为n
在循环的下一次迭代的顶部立即反弹到一个新值。在旧版:
更好:
^{pr2}$你还是有逻辑错误。赋值要求在单个项小于前面总和的
10**-15
倍时终止循环。你根本没有实现。在question2()
包含以下错误:-1**n
应该是(-1)**n
+1
。在n -= 1
。在试试这个:
相关问题 更多 >
编程相关推荐