Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python循环帮助-使用Gregory–;莱布尼兹级数_Python_Math - Fatal编程技术网

Python循环帮助-使用Gregory–;莱布尼兹级数

Python循环帮助-使用Gregory–;莱布尼兹级数,python,math,Python,Math,我在让Python2.5shell完成我需要做的事情时遇到了一个问题。我试图让用户输入一个“n”值,表示循环将重复的次数。实际上,我需要用户输入N,它将对应于Gregory–Leibniz级数中的项数,并输出pi的近似值 格雷戈里-莱布尼茨系列 pi=4*((1/1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11)+(1/31)…) 所以当n为3时,我需要循环计算到1/5。不幸的是,对于total变量,它总是给我一个0的值 我现在的代码是错误的,我知道这一点。只是想寻求帮助。代码如

我在让Python2.5shell完成我需要做的事情时遇到了一个问题。我试图让用户输入一个“n”值,表示循环将重复的次数。实际上,我需要用户输入N,它将对应于Gregory–Leibniz级数中的项数,并输出pi的近似值

格雷戈里-莱布尼茨系列 pi=4*((1/1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11)+(1/31)…)

所以当n为3时,我需要循环计算到1/5。不幸的是,对于total变量,它总是给我一个0的值

我现在的代码是错误的,我知道这一点。只是想寻求帮助。代码如下:

def main():
    n = int(raw_input("What value of N would you like to calculate?"))
    for i in range(1,n,7):
        total = (((1)/(i+i+1))-((1)/(i+i+2))+((1)/(i+i+4)))

    value = 4*(1-total)
    print(value)

main()

你需要积累条件。e、 g

total = 0.0
term = 1.0
for i in range (1,n+1):
    denom = 2*i-1
    total += term/denom
    term = -term
当然,你可以更简洁地表达这一点

也许用这个来代替也更自然

总计=0.0 术语=1.0 对于范围(n)中的i: denom=2*i+1 总计+=术语/名称 术语=-术语


当您以这种方式使用n个术语的最自然形式时。请注意分母计算方式的差异。

您需要累积项。e、 g

total = 0.0
term = 1.0
for i in range (1,n+1):
    denom = 2*i-1
    total += term/denom
    term = -term
当然,你可以更简洁地表达这一点

也许用这个来代替也更自然

总计=0.0 术语=1.0 对于范围(n)中的i: denom=2*i+1 总计+=术语/名称 术语=-术语


当您以这种方式使用n个术语的最自然形式时。请注意分母计算方式的差异。

这使用整数除法,因此您将得到零:

total = (((1)/(i+i+1))-((1)/(i+i+2))+((1)/(i+i+4)))
相反,使用浮点数来获得浮点数除法

total = ((1.0/(i+i+1))-(1.0/(i+i+2))+(1.0/(i+i+4)))
在Python2中,默认情况下,对整数执行
/
将得到一个整数


在Python3中,这一点已被更改,
/
始终执行浮点除法(
/
执行整数除法)。

这使用整数除法,因此您将得到零:

total = (((1)/(i+i+1))-((1)/(i+i+2))+((1)/(i+i+4)))
相反,使用浮点数来获得浮点数除法

total = ((1.0/(i+i+1))-(1.0/(i+i+2))+(1.0/(i+i+4)))
在Python2中,默认情况下,对整数执行
/
将得到一个整数



在Python3中,这一点已被更改,
/
始终执行浮点除法(
/
执行整数除法)。

Q1)转到查找π的莱布尼兹公式。设我们是用于近似π的项序列。我们可以看到,S中的第一项是+1,S中的第二项是-1/3,S中的第三项是+1/5,依此类推。求最小项数,使4*S和π之间的差值小于0.01。也就是说,abs(4*S–math.pi)Q1)去寻找π的莱布尼兹公式。设我们是用于近似π的项序列。我们可以看到,S中的第一项是+1,S中的第二项是-1/3,S中的第三项是+1/5,依此类推。求最小项数,使4*S和π之间的差值小于0.01。也就是说,abs(4*S–math.pi)不是费马的最后一个定理。FLT是将数字相加,并提升到相同的幂。不是关于pi的,很抱歉。那是我的错误。出于某种原因,我认为是费马。可能是你的问题是整数使用整数除法,所以
1/2==0
。如果您使用
1.0
代替
1
,您将得到浮点除法。请查看打印功能。O/P使用的是Python 3.0。不需要显式浮点。@GaryWalker“…让python 2.5 shell完成我需要的任务的问题…”这不是Fermat的最后一个定理。FLT是将数字相加,并提升到相同的幂。不是关于pi的,很抱歉。那是我的错误。出于某种原因,我认为是费马。可能是你的问题是整数使用整数除法,所以
1/2==0
。如果您使用
1.0
代替
1
,您将得到浮点除法。请查看打印功能。O/P使用的是Python 3.0。不需要显式浮点。@GaryWalker“…让Python2.5 shell执行我需要的操作时出现问题…”
total+=1/denom
将转换为return
int
not
float
O/P正在使用Python3——请看打印语句是的,它使用了。修正了。@GaryWalker你可以在2.5中使用
print(value)
,问题明确地说他在使用2.5。你的答案不会因此对OP有帮助。
total+=1/denom
将转换为return
int
not
float
O/P正在使用Python 3——请看打印语句是的,它会。修正了。@GaryWalker你可以在2.5中使用
print(value)
,问题明确地说他在使用2.5。因此,您的回答对OP没有帮助。您也可以从future import division(或类似内容)调用
。您也可以从future import division
(或类似内容)调用
。欢迎使用堆栈溢出!如果你把你的代码像这样用反勾号包装起来,你的文章会更漂亮。这并不能回答问题。你说的是如何使用莱布尼兹公式来计算π的精确度。问题是,当您已经知道需要n个项时,如何获得公式的非零值。欢迎使用堆栈溢出!如果你把你的代码像这样用反勾号包装起来,你的文章会更漂亮。这并不能回答问题。你说的是如何使用莱布尼兹公式来计算π的精确度。问题是当你已经知道你想要n个项时,如何得到公式的非零值。