标签: sympy

sympy 如何处理 0.5 次方的指数?

((gamma-(gamma**2-omega**2)**0.5)*(gamma+(gamma**2-omega**2)**0.5)).simplify()
Run Code Online (Sandbox Code Playgroud)

输出为:gamma^2 - (gamma^2 -omega^2)^{1.0} $

然而,我预计结果是 omega^2。我知道在 sympy 文档中,它警告要小心浮点数,但我的印象是整数和 2 的小数次幂(可以精确表示)都很好。

以下代码正确地再现了 omega^2:

((gamma-(gamma**2-omega**2)**sym.Rational(1,2))*(gamma+(gamma**2-omega**2)**sym.Rational(1,2))).simplify()
Run Code Online (Sandbox Code Playgroud)

为什么第一个代码没有产生预期的结果?

python floating-point sympy

3
推荐指数
1
解决办法
68
查看次数

简化 sympy.sympify 给出的表达式

当您的表达式由 sp.sympify 给出时,sp.simplify 似乎不起作用。我怎样才能改变这一点?

\n
import sympy as sp\n\nr = sp.Symbol('r', real = True)\nf_str = 'sqrt(1/r**4)'\n\nf1 = sp.sympify( f_str )\nf2 = sp.sqrt(1/r**4)\n\nfor f in f1,f2:\n    sp.pprint(sp.simplify(f))\n
Run Code Online (Sandbox Code Playgroud)\n

哪个输出

\n
     ____\n    \xe2\x95\xb1 1  \n   \xe2\x95\xb1  \xe2\x94\x80\xe2\x94\x80           # f1\n  \xe2\x95\xb1    4 \n\xe2\x95\xb2\xe2\x95\xb1    r  \n\n1 \n\xe2\x94\x80\xe2\x94\x80                 # f2\n 2\nr \n
Run Code Online (Sandbox Code Playgroud)\n

我期望给定一个实值 (r),sympify 表达式可以得到简化

\n

python sympy

3
推荐指数
1
解决办法
89
查看次数

总和中的符号[sympy]

例如,我想解决

http://www.texify.com/img/%5CLARGE%5C%21%5Cdisplayst%5Csum_%7Bn%3D1%7D%5EN%5C%20n%5E2%5C%20%3D%5C%2055.gif

这是我试过的:

from sympy import var, solve
x = var('x')
f = lambda N: sum( n**2 for n in range(1,N+1) )
f(x)

# output:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: range() integer end argument expected, got Add.
Run Code Online (Sandbox Code Playgroud)

python sympy

2
推荐指数
1
解决办法
3695
查看次数

Sympy:简化方块的平方根

Sympy似乎无法简化涉及变量的平方的平方根的表达式:

In [28]: a = x**2
In [29]: b = a**(1/2)
In [30]: b
Out[30]: 
    0.5
? 2?   
?x ?   
In [31]: b.simplify()
Out[31]: 
    0.5
? 2?   
?x ?   
Run Code Online (Sandbox Code Playgroud)

我不认为这与其他变体有关simplify,特别是我认为b.powsimp()应该有效.

In [32]: b.powsimp()
Out[32]: 
    0.5
? 2?   
?x ?   
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这不起作用,或者我做错了什么?

python sympy simplify

2
推荐指数
1
解决办法
1940
查看次数

计算python中的积分

我需要计算python中的积分.

我有进口同情.

 g(a,z) = integral_from_z_to_inf of ( t^(a-1) * e^(-1))
Run Code Online (Sandbox Code Playgroud)

在python中:

 x,a,z = symbols('x a z')
 g = integrate(x**(a-1) * exp(-x), z, oo)
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

 ValueError: Invalid limits given: (z, oo)
Run Code Online (Sandbox Code Playgroud)

我打了电话:

b,c,mean,variance  = S('b c mean variance'.split())

ff1 = b*g((1+c), lb / b)  // lb is a constant, b and c are unknown var that I need to solve. and mean and variance are constants. 
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

TypeError: 'Add' object is not callable
Run Code Online (Sandbox Code Playgroud)

python sympy integral python-3.x

2
推荐指数
1
解决办法
7157
查看次数

缺少sympy.physics.vector中的函数

我想使用符号数学库从矢量/标量字段派生类似curl/ divergence等的属性.根据sympy文档,这可以通过sympy.physics.vector模块实现,

http://docs.sympy.org/dev/modules/physics/vector/api/fieldfunctions.html

http://docs.sympy.org/dev/modules/physics/vector/fields.html

但是我无法找到卷曲/发散功能随时随地为这个模块中,根据文档应该 sympy.physics.vector.curlsympy.physics.vector.divergence

我用pip安装了版本并检查了它的0.7.5版本.那么我能找到这些功能的任何想法?也许文档不是最新的?

python sympy

2
推荐指数
1
解决办法
429
查看次数

DiracDelta没有给出正确的结果

我必须在一个复杂的积分中使用dirac delta,并希望看到它如何与一个简单的情况一起工作,但它返回错误的答案.我在下面做错了什么线索?

from sympy import DiracDelta
from scipy import integrate

def f(x):
     return x*DiracDelta(x-1)

b, err = integrate.quad(f, 0, 5)    
print b
Run Code Online (Sandbox Code Playgroud)

这会返回,0.0而不应该返回.

python integrate sympy

2
推荐指数
1
解决办法
4208
查看次数

如何使用SymPy替换模式

在我的代码中,我需要将sin(g(t))(g作为连续函数)的所有表达式替换为g(t)(它是紧密角度近似).这是我从代码中获得的一个示例:

-29.4*sin(2*t) - 19.6*sin(f(t)) + 4.0*Derivative(f(t), t)**2
Run Code Online (Sandbox Code Playgroud)

我需要替换这两个sin(f(t))sin(2*t).不只是其中之一和sin(2*t)变化,(sin(f(t))总是一样的).有没有比为其中的内部添加额外变量更简单的方法sin

python symbolic-math sympy

2
推荐指数
1
解决办法
148
查看次数

使用numpy数组的sympy数字

在使用符号表达式数组时,使用numpy数组是否明智?

就像是

u0=numpy.array([Number(1.0), Number(1.0), Number(1.0)])

我的意思是,使用numpy数组而不是python列表会更快吗?

如果是这样,具有numpy数组的某些操作似乎会自动转换为浮动符号表达式,例如:

u0=np.array([Number(1.0), Number(1.0), Number(1.0)]) u = np.zeros((10, 3)) u[0] = u0

现在虽然 type(u0[0])>> sympy.core.numbers.Float,

type(u[0][0]) >> numpy.float64

如何避免numpy转换复制到float64的符号表达式?

python numpy sympy python-3.x

2
推荐指数
1
解决办法
640
查看次数

无法将表达式转换为float

我正在尝试学习python中符号操作的细节(我是初学者).

我有以下基本代码,输出给我一个错误告诉我它"无法将表达式转换为浮点数".

这段代码有什么问题:

from sympy import *
from math import *

def h(x):
    return log(0.75392 * x)

x = symbols('x')
hprime = h(x).diff(x)

print(hprime)
Run Code Online (Sandbox Code Playgroud)

python symbolic-math sympy derivative

2
推荐指数
1
解决办法
5092
查看次数