也许是一个简单的问题,但我认为我在做同样的事情,而我得到了两个不同的答案,我试图计算出200万以下的质数之和。
## THIS WORKS ##
import sympy
ans = 0
for n in range(0, 2000000):
if sympy.isprime(n):
ans += n
print(ans)
## THIS ONE DOESNT< BUT IT LOOKS THE SAME TO ME ##
ans = sum(sympy.isprime(num) for num in (range(0, 20000000)))
ans
我试图用代数的方式操纵二项分布。具体来说,我想得到一个随机变量的期望值和标准差:
import sympy
import sympy.stats
from sympy import *
a = sympy.Symbol('a', integer=True)
W = sympy.stats.Binomial('W', a, sympy.S.Half, +1, -1)
print (W)
print (sympify(a).is_integer)
sympy.stats.E(W)
哪种输出
W
True
然后抛出ValueError: a is not an
我试图使用SymPy处理符号形式的多元正态分布。然而,它似乎无法认识到,我想要指数的矩阵表达式是一个标量。下面是代码:
from sympy import *
# Sample size, number of covariates
n, k = symbols('n k')
# Data
X = MatrixSymbol('X', n, k)
y = MatrixSymbol('y', n, 1)
# Parameters
beta = MatrixSymbol('beta', k, 1)
Sigma =
我正试图用朱莉娅的同情包来解决经济问题。在这个经济问题上,我有外生变量和内生变量,我正在对它们进行索引。我有两个问题:
如何访问索引变量以传递:校准值(外生变量,在其他环境中校准)或公式(内源变量,由代理使用铅笔和纸的一阶条件确定)。这也将使我能够研究当我干扰外生变量时的平衡行为。首先,考虑一下我试图通过外生变量的校准值。
using SymPy
# To index
n,N = sympy.symbols("n N", integer=True)
N = 3 # It can change
# Household
#exogenous variables
α = sy
我正在编写一个计算幂级数sum_{m=0}{oo} a[m]x^m的程序,其中a[m]是递归定义的:a[m]=f(a[m-1])。我所产生的符号如下:
a = list(sympy.symbols(' '.join([('a%d' % i) for i in range(10)])))
for i in range(1, LIMIT):
a[i] = f_recur(a[i-1], i-1)
这允许我引用使用a0,a1,...,a9的符号a[0],a[1],...,a[9],a[m]是f_recur给出的a[m-1]函数。
现在,我希望将总和编码如下:
m
当函数始终提供标量值时,我很难理解为什么我的代码会继续返回值错误。每次运行后的函数值似乎只包含标量值或Sympy常量。
这是我的密码:
from sympy import Symbol
from sympy.stats import Normal, density, sample_iter
from scipy.optimize import minimize
from sympy import Sum, binomial, exp, simplify
def my_func_v(args):
print(args)
N = Normal("N", args[0
我很难用Sympy在python中创建这个,其中{r1,r2,r3,…}是理性主义的一个枚举。
我尝试了以下方法分别定义每个函数,但主要问题是尝试使用一个渐近符号作为我的rationals列表的索引:
import numpy as np
from sympy.abc import x, n
from sympy import Piecewise, piecewise_fold, Sum, IndexedBase, oo, Function
rationals = 10*np.random.rand(10000)
u = Function('u')(x, n)
class
我已经有了很好的使用SymPy的经验,但我仍然在弄清楚一些事情。 有一件事我不太清楚,那就是如何将集合替换为迭代操作,比如求和。 如果我有一个象征性地声明的求和操作,我如何获取一个标准的数字集合,并将它们替换为求和? from sympy import *
# We are going sum these items
# by plugging into symbolic summation
items = [0, 5, 6, 2, 7]
# declare Sympy variables
i, n = symbols('i n')
x = symbols('
我有相当多的步长函数(大约1000个),每个步长函数只有两个间隔。我想把它们加起来,然后找出最大值。做这件事最好的方法是什么?我已经用如下代码尝试过渐变了:
from sympy import Piecewise, piecewise_fold, evalf
from sympy.abc import x
from sympy.plotting import *
import numpy as np
S = 20
t = np.random.random(20)
sum_piecewise = None
for s in range(S):
p = Piecewise((np
我想写一个求和的渐近符号,但求和后的索引也显示为求和数中变量名的下标。例如,
import numpy as np
import sympy
sympy.init_printing()
r = sympy.Symbol('r')
a = sympy.Matrix(sympy.symbols('a:4'))
rpowers = sympy.Matrix([r**i for i in range(len(a))])
long_expr = a.dot(rpowers)
n = sympy.Symbol('n')
a_n = sympy.Symb
我想以同情的方式创建以下表达式:
M、U和A^(k)是m大小的方阵。
到目前为止,我在给定的p中成功地做到了这一点。
import sympy
m = sympy.symbols('m', integer=True)
p = 3
A = [sympy.MatrixSymbol('A^({})'.format(k), m, m) for k in range(p)]
M = sympy.MatrixSymbol('M', m, m)
U = sympy.MatrixSymbol('U', m, m)
expr = M
所以,如果我这么做
import sympy as sp
import numpy as np
u = np.random.uniform(0, 1, 10)
w, k = sp.symbols('w k')
l = sum(1 - sp.log(k + w) + sp.exp(k + w) for k in u)
我得到了我想要的东西( u上的符号和作为w的函数)。但是,编写
f = 1 - sp.log(k + w) + sp.exp(k + w)
l = sum(f for k in u)
但后来我得到了
10*exp(k + w) - 10*log(k + w) + 1
如何简化Kroneckerδ表达式的和的渐近性?
例如,考虑Sum(KroneckerDelta(i,j),(i,0,n-1))或Sum(KroneckerDelta(i, j, (0, n - 1)), (i, 0, n - 1))
from sympy import *
from sympy.concrete.delta import _simplify_delta
n = symbols('n')
j = tensor.Idx('j')
i = tensor.Idx('i')
_simplify_delta(simplify(Sum(Kro
from sympy import Sum, Eq
from sympy.abc import n,x
import random
def polynomial(x):
i = 0
def random_value(i):
return random.choice([i for i in range(-10,10) if i not in [0]])
eq = Sum(random_value(i)*x**n, (n,0,random_value(i)))
display(Eq(eq,eq.doit(), evaluate=False))
po
我想在渐近中计算类似形式(更复杂)的函数。
y = a * b / np.sum( a*( b + c) )
其中所有变量都是长度为n的向量。评估将在优化例程的每个时间步进行。因此,我想高效地实现它。最有可能的是,编译这些函数是最好的,但是自动抓取模块会给出奇怪的错误。
有效的方法:
import numpy as np
import sympy as sp
from __future__ import division
a = sp.IndexedBase('a')
b = sp.IndexedBase('b')
c = sp.IndexedBase(
对于一个项目,我想使用sympy来构造和计算一个离散数据点的高斯分布的最大可能性。我遵循的方法可以在找到。
但是,当我试图在带有Product和/或Sum的符号表达式中使用数组时,我遇到了麻烦。下面是我早期尝试的简化版本。
在Anaconda的Yupyter中的笔记本中,我创建了一个python数组,x说
N = 10
x = range(N)
我希望在x中使用sympy中的符号表达式,如下所示:
from sympy import *, Symbol
i = Symbol('i', integer=True)
mu = Symbol('mu')
s = Su
是否提供了一种处理涉及数组的表达式的方法?我正在尝试做一些像expr = sympy_parser('x[0]+x[1]')或sympy_parser('sum(x)')这样的事情,并通过expr.subs({'x': [1,2,3]})对其进行评估。 在前一种情况下,解析器会给出一个错误TypeError: 'Symbol' object is not subscriptable。在后一种情况下,它会解析,但subs不求值,只是再次返回表达式sum(x)。
由于缺少Latex编辑器,下面是我希望用Sympy绘制的分段函数的图片。我想传递两个系数数组和一个x值,然后计算它并绘制函数。(编辑:比alphas多出一个p,图像更新)
这是我迄今为止的尝试(alpha和p是列表/数组,t是一个数字):
def getf(alpha,p,t):
#Create the argument list of tuples for the SymPy.Piecewise function
argtuples = []
for n,number in enumerate(alpha):
if n == 0:
argtuples.appe
我有一个形式为(采用LaTeX语法)的方程:
\sum_{k=0}^{K-1} a_k = 0
a_k是“下标k",是我在其中建立线性方程组的变量列表之一。我希望能够以尽可能紧凑的方式将这个等式表示为SymPy。似乎我想使用它的Sum()函数来表示求和,但是我不确定如何告诉它on term k in the sum, a_k refers to the k-th symbol。
例如,如果我像这样设置一个符号列表,这是可能的吗?
a = [sympy.symbols('a' + str(i)) for i in xrange(K)]