渐近数组上的求和

编程入门 行业动态 更新时间:2024-10-28 20:26:07
本文介绍了渐近数组上的求和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我想用i和j这两个指数对Array(称为arr)求和。对arr[i]求和得到一个整数,如In [4]所示。但是,对arr[j]求和不会得到一个数字(请参见下面的In [5])。为什么会这样?

In [1]: from sympy import * In [2]: i, j = symbols("i j", integer=True) In [3]: arr = Array([1, 2]) In [4]: summation( ...: arr[i], ...: (j, 0, i), (i, 0, len(arr)-1) ...: ) Out[4]: 5 In [5]: summation( ...: arr[j], ...: (j, 0, i), (i, 0, len(arr)-1) ...: ) Out[5]: Sum([1, 2][j], (j, 0, i), (i, 0, 1)) 推荐答案

如果出现以下情况,symPy将计算总和

  • 求和数和的限制都是明确的;或者
  • 它可以根据求和的公式找到求和的符号表达式。
  • 嵌套求和是从左到右执行的。在第一版中,

    summation(arr[i], (j, 0, i)) 属于第2项:由于被和数不依赖于索引j,因此求和的值象征性地等于(i + 1)*arr[i]。则外和变为

    summation((i + 1)*arr[i], (i, 0, len(arr)-1))

    这属于第1项:求和和限制都是显式的。

    但在第二个版本中

    summation(arr[j], (j, 0, i))

    既不适合1也不适合2。被加数依赖于j,我们没有关于它的任何公式(它只是一些数字[1,2]),和和求和的上限是象征性的。SymPy与这样的金额没有任何关系,因此它仍未完成。因此,由于未完成内部求和,因此外和不会到达任何位置。

    解决方法

    在第二种情况下,用Python sum替换外和会显式计算内和,因此会对其求值。

    >>> sum([summation(arr[j], (j, 0, i)) for i in range(len(arr))]) 4

    当然,这并不真正使用SymPy的符号功能:内部和也可以是Python的sum。

    更多推荐

    渐近数组上的求和

    本文发布于:2023-11-22 04:22:56,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1615963.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:渐近   数组

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!