代码之家  ›  专栏  ›  技术社区  ›  Frank-Rene Schäfer

辛-元素符号数上的符号和

  •  7
  • Frank-Rene Schäfer  · 技术社区  · 7 年前

    用SymPy表达以下内容最合适的方式是什么:

    样本“x[i]”的和,其中“i”来自混凝土 0到符号“N”x[i]'本身应具有符号性,即。 始终显示为变量。

    目标是在线性方程组中使用这些表达式。

    示例(平凡最小二乘近似):

    由“y=m*x+a”给出的线。也就是说,估计线由“m”和“a”确定。

     error(m, a) = sum((m * x[i] + a - y[i]) ** 2, start_i=0, end_i=N)
    

    现在,搜索导数“d/dm误差(m,a)”中的零跃迁 “d/da误差(m,a)”提供了最小距离。我怎么才能找到

    1 回复  |  直到 3 年前
        1
  •  5
  •   Uriel    7 年前

    考虑到你后面的问题,我假设你已经计算了其中的大部分,但为了清楚起见,样本被视为函数(有意义的是,给定的集实际上是覆盖集域的函数[主要覆盖部分整数]),因此符号类似于 x(i) summation 功能或 Sum 构造函数(第一个更好,因为它会自动展开常数加数,如 summation(x, (i, 0, n))

    >>> from sympy import *
    >>> m, a, x, y, i, n = symbols('m a x y i n')
    >>> err = summation((m * x(i) + a - y(i)) ** 2, (i, 0, n))
    >>> pprint(err)
      n
     ___
     ╲
      ╲                      2
      ╱   (a + m⋅x(i) - y(i))
     ╱
     ‾‾‾
    i = 0
    

    在提供和函数后,加数表达式和 (index, lower bound, upper bound) ,您可以继续玩总和:

    >>> diff(err, m)
    Sum(2*(a + m*x(i) - y(i))*x(i), (i, 0, n))
    >>> diff(err, a)
    Sum(2*a + 2*m*x(i) - 2*y(i), (i, 0, n))
    
    推荐文章