【问题标题】:For loop to math notationFor循环到数学符号
【发布时间】:2020-07-14 18:54:51
【问题描述】:

谁能告诉我如何用数学符号写出以下内容

for x in (range(1,n)):
    var1=1
    var2=0

    var1*=x
    var2+=x
    
    Var3+=var1/var2

我尝试了 SUM((n!)/SUM(n) 但我似乎无法得到相同的答案。

提前谢谢你。

更新: 我向所有被我欺骗的人道歉,我只是不想在尝试生成阶乘的原始公式时得到帮助,因为对我来说这是终极挑战和乐趣。这个想法是利用以下事实得出 e 的近似值来找到解决 n 的方法!唯一的问题是我太天真了,认为 Sum 的公式适用于分数......请原谅我的社区,你太棒了!!!

我也对上一个做了一些调整。

($\sum_{i=0}^n \frac{\sum_{i=0}^n n}{n!} $)*(3/2 -1/10**N)

num=100
var1=0
var2=1
e8= 0

for x in (range(1,num)):
    var1+=x
    var2*=x
    e8+=var1/var2

Sym=(3/2 -(1/10**num))

e8*=1/Sym
print(Sym)


print(e8) 

【问题讨论】:

  • Python 没有阶乘运算符,因此您需要定义自己的函数并调用该函数,或者使用执行阶乘的库。另外,检查sum 的类型。这不是一个数字。
  • 我知道,我正在尝试将代码编写为数学符号,我认为您正在考虑相反

标签: python math notation


【解决方案1】:

在退出循环并假设 Var3 初始化为 0 时,Var3 将等于 n-1。 (我敢打赌这不是你所期望的。)


如果将(重新)初始化移出循环,则公式为

【讨论】:

  • 如果我错了,请纠正我,但我不应该能够对 2k!/k**2+k 执行相同的求和公式 n(n+1)/2。当我尝试它时,我仍然无法得到相同的结果(代码应该是 n+1)
【解决方案2】:
import math
return sum([i/j for i, j in zip([math.factorial(i) for i in range(1, n)], [(i)(i+1)/2 for i in range(1, n)])])

这是一种更数学的方法,但可读性较差。这个好吗?仔细检查它是否输出正确的数字,但它应该。

【讨论】:

  • 我怀疑它会返回与原始代码相同的代码。
【解决方案3】:

Sum(n) 不会为您做任何事情。您想找到 (a_1/b_1 + ... + a_n/b_n) 的总和,其中 a_i 是 i! b_i 是从 1 到 i 的所有数字的总和。一个简化的公式是 n(n+1)/2。为了帮助理解为什么会这样,请考虑匹配第一个和最后一个元素,第二个和倒数第二个等,直到您将所有 n/2 对相加。每对的和是n+1,有n/2个,所以n(n+1)/2是总和。因此,我们可以将 var3 表示为:

import math #for factorial function
var3 = 0 #im assuming it starts at 0 
for i in range(1, n):
    var3 += math.factorial(i)/((n)(n-1)/2)

【讨论】:

  • 感谢大家的帮助和意见
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 2023-03-15
  • 2014-04-14
  • 2021-08-13
  • 2012-02-21
  • 2017-06-13
  • 2013-02-27
相关资源
最近更新 更多