标签: sympy

类 sympy.core.add.Add 转换为 float

这部分Python程序使用了SymPy库。因此,它在sympy.core.add.Add类中生成一个值,该值无法用于程序的其他部分。

from sympy import *
x = symbols('x')
y = 1 - (0.1 * coeff1) / (x + 2) - sin(x) * (2 * x + coeff1)
yprime = y.diff(x)
Run Code Online (Sandbox Code Playgroud)

如何将sympy.core.add.Add class 转换为普通floatint以便在进一步计算中使用变量yprime ?

python class sympy

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

如何检查 sympy 关系对于某些值是否成立

我使用关系 GreaterThan 定义了一些约束 -

x = sympy.Symbol('x')
constraint1 = (x >= 0)
Run Code Online (Sandbox Code Playgroud)

我现在想检查约束是否适用于任意值“x”。我尝试使用sympy.checksol,但出现属性错误,所以我猜这不是正确的方法 -

In [7]: sympy.checksol(constraint1, {x: 3})
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-cc41bd5986e3> in <module>()
----> 1 sympy.checksol(constraint1, {x: 3})

/Library/Python/2.7/site-packages/sympy/solvers/solvers.pyc in checksol(f, symbol, sol, **flags)
    200         if attempt == 0:
    201             val = f.subs(sol)
--> 202             if val.atoms() & illegal:
    203                 return False
    204         elif attempt == 1:

AttributeError: 'bool' object has no attribute 'atoms'
Run Code Online (Sandbox Code Playgroud)

我什至尝试过constraint1.evalf,但它总是自行返回 -

In [10]: constraint1.evalf(subs={x: 3}) …
Run Code Online (Sandbox Code Playgroud)

python sympy

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

解决 Sympy 中的约束满足问题

我正在尝试解决 Sympy 中的一些简单的布尔可满足性问题。在这里,我尝试解决包含逻辑运算符的约束Or

from sympy import *
a,b = symbols("a b")

print(solve(Or(Eq(3, b*2), Eq(3, b*3))))
# In other words: (3 equals b*2) or (3 equals b*3)
# [1,3/2] was the answer that I expected
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,这会导致错误:

TypeError: unsupported operand type(s) for -: 'Or' and 'int'
Run Code Online (Sandbox Code Playgroud)

我可以使用 解决这个问题Piecewise,但这更加冗长:

from sympy import *
a,b = symbols("a b")
print(solve(Piecewise((Eq(3, b*2),Eq(3, b*2)), (Eq(3, b*3),Eq(3, b*3)))))
#prints [1,3/2], as expected
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试求解两个变量而不是一个变量时,这种解决方法失败了:

from sympy import *
a,b = symbols("a b")

print(solve([Eq(a,3+b),Piecewise((Eq(b,3),Eq(b,3)), …
Run Code Online (Sandbox Code Playgroud)

sympy constraint-programming smt

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

如何安全地保存和加载 sympy 对象

是否有安全保存和加载 sympy 对象的官方方法(用于通过互联网发送)?

使用np.savenp.load给出以下异常。

Traceback (most recent call last):
  File "testSave.py", line 19, in <module>
    print np.load("out.npy", out)
  File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 415, in load
    if mmap_mode:
  File "C:\Python27\lib\site-packages\sympy\core\relational.py", line 195, in __nonzero__
    raise TypeError("cannot determine truth value of Relational")
TypeError: cannot determine truth value of Relational
Run Code Online (Sandbox Code Playgroud)

我用的是考虑sreprEq(5*x + 12 - 8, 12*x - 10)Equality(Add(Add(Mul(Integer(5), Symbol('x')), Integer(12)), Integer(-8)), Add(Mul(Integer(12), Symbol('x')), Integer(-10))),但据我所知,只有这样,才能将其加载从文本是使用parse,但我不喜欢从互联网EXEC字符串。

这与问题SymPy: Safely parsing strings as I am …

python numpy sympy

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

Python:AttributeError:'mpc'(或'mpf')对象没有属性'arcsin'

我试图使用来自 的 Jacobi 椭圆函数mpmath,但得到下面给出的简单代码的错误:

import numpy as np
import scipy.integrate as spi
from scipy import special as sp
import matplotlib.pyplot as plt
from math import sqrt, pow, log
from mpmath import ellipfun

sn = ellipfun('sn')
y=sn(0.5,-1)
print y

y1=y.real
print y1, np.arcsin(y), np.arcsin(y1)
Run Code Online (Sandbox Code Playgroud)

即使我只传递函数的实部,我也会收到错误消息sn(0.5,-1)。我不知道我是不是弄错了。请帮忙。提前致谢。

python numpy sympy mpc mpmath

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

对多个符号变量使用 Lambdify

下面的 python 脚本计算表达式中的第一项, 4.939e-3xAxB+8.7989 at (A,B) = (1.0,1.0)

 import sympy
 from sympy import *

 A = sympy.Symbol(A)
 B = sympy.Symbol(B)
 F = 4.939e-3*A*B+8.7989
 G = str(F).split("+")[0]
 H = lambdify([A,B], G, "numpy")
 print H(1,1)
Run Code Online (Sandbox Code Playgroud)

输出为:0.004939

现在下面的代码旨在实现相同的目标:

A = sympy.Symbol(A)
B = sympy.Symbol(B)
F = 4.939e-3*A*B+8.7989
G = str(F).split("+")[0]
H = lambdify(A, G, "numpy")
I = lambdify(B, H(1), "numpy")
print I(1)
Run Code Online (Sandbox Code Playgroud)

但这会返回错误: NameError: global name 'B' is not defined

有人可以解释一下吗?

python sympy lambdify

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

使用希腊语为 deltax 创建多字符 SymPy 符号

我想做类似的事情deltax=symbols(",,\delta x") 但这似乎给出了一个元组而不是多字符符号。有可能吗?我应该补充一点,我正在使用 Jupyter。

symbols sympy

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

Python 指数回归函数

我正在尝试实现指数回归函数。sp 代表 sympy。我使用 numpy 和 sympy。首先,在 func_exp 中我尝试使用 np.exp 但它生成了一个错误(属性错误),所以我决定使用 sympy 代替。嗯,这是代码

\n\n
import numpy as np\nfrom numpy.linalg import matrix_rank\nimport scipy \nimport scipy.integrate\n\nimport random \n\nimport matplotlib.pyplot as plt\nimport matplotlib as mpl\nfrom mpl_toolkits.mplot3d import Axes3D\n\nfrom sympy import integrate\nimport sympy as sp\n\nx, y = sp.symbols(\'x, y\')\n\nsp.init_printing(use_unicode=True,use_latex=\'mathjax\')\ndef exponential_regression (x_data, y_data):\n   def func_exp(x, a, b):\n       return a*sp.exp(b*x)\n   popt, pcov = scipy.optimize.curve_fit(func_exp, x_data, y_data)\n   a = popt[0] # componente a, Par\xc3\xa1metro \xc3\x93PTimo (popt).\n   b = popt[1] # componente b, Par\xc3\xa1metro \xc3\x93PTimo (popt).\n   plt.figure()\n   puntos = …
Run Code Online (Sandbox Code Playgroud)

python regression numpy sympy exponential

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

如何在 Python 中求解非线性三角方程组(MATLAB 可以轻松求解)

我正在尝试用 Python 求解非线性三角方程组。我尝试了以下方法:

from sympy import symbols,solve,sin,cos,pi, Eq

measurements = [(5.71403,0.347064), (4.28889, -0.396854), (5.78091, -7.29133e-05), 
(2.06098, 0.380579), (8.13321, 0.272391), (8.23589, -0.304111), (6.53473, 0.265354), (1.6023, 
0.131908)]

f, a, phi = symbols('f a phi')
eq1 = Eq(a*sin((2.0*pi*f*measurements[0][0])+phi) - measurements[0][1])
eq2 = Eq(a*sin((2.0*pi*f*measurements[4][0])+phi) - measurements[4][1])
eq3 = Eq(a*sin((2.0*pi*f*measurements[6][0])+phi) - measurements[6][1])
solve((eq1,eq2,eq3), (a, f, phi))
Run Code Online (Sandbox Code Playgroud)

Python 需要花很长时间来尝试求解方程。但是,MATLAB 可以立即完成。

有什么问题?

python numpy sympy scipy

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

通过标量符号多重 sp.eye 的正确方法是什么

我试过

import sympy as sp

? = sp.symbols("?")

? * sp.eye
Run Code Online (Sandbox Code Playgroud)

但看到错误

TypeError                                 Traceback (most recent call last)
<ipython-input-25-dc4fb0b9f400> in <module>
      3 ? = sp.symbols("?")
      4 
----> 5 ? * sp.eye

TypeError: unsupported operand type(s) for *: 'Symbol' and 'function'

Run Code Online (Sandbox Code Playgroud)

sp.eye用标量符号乘法的正确方法是什么

python sympy

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