当solve用于计算二次方程的根时,SymPy返回可以简化的表达式,但我无法简化它们.最小的例子如下:
from sympy import *
sqrt(-24-70*I)
Run Code Online (Sandbox Code Playgroud)
在这里,SymPy只是返回,sqrt(-24-70*I)而Mathematica或Maple将回答相当于5-7*I.
我知道有两个平方根,但这种行为需要SymPy,例如,将返回相当复杂的解决方案
z = symbols("z")
solve(z ** 2 + (1 + I) * z + (6 + 18 * I), z)
Run Code Online (Sandbox Code Playgroud)
同时,Maple和Mathematica将很高兴地给我两个高斯整数来解决这个等式.
有没有选项或我缺少的东西?
我不是SymPy专家,但是最近几年的一些演讲中我已经成功地使用了它。但是,有时符号集成似乎很慢。这是一个示例,该示例在我的计算机上需要很长时间(超过半分钟)时Mathematica几乎立即进行计算SymPy。
from sympy import *
x = symbols("x")
def coeff (f, k, var = x):
return integrate(f(var) * cos(k * var), (var, -pi, pi)) / pi
f = lambda x: (11*sin(x) + 6*sin(2*x) + 2*sin(3*x))/10
[coeff(f, k) for k in range(0, 5)]
Run Code Online (Sandbox Code Playgroud)
我是在做错什么还是预期的行为?有一些技巧可以加快速度吗?
SymPy版本是1.0,Python在Windows上是3.5.1 64位(Anaconda)。
这是我做的:
from sympy import *
x = symbols("x")
y = Function("y")
dsolve(diff(y(x),x) - y(x)**x)
Run Code Online (Sandbox Code Playgroud)
我得到的答案(SymPy1.0)是:
Eq(y(x), (C1 - x*(x - 1))**(1/(-x + 1)))
Run Code Online (Sandbox Code Playgroud)
但那是错的.双方Mathematica并Maple不能解决这个ODE.这里发生了什么事?
我研究了将 Web 浏览器嵌入应用程序的各种方法(例如通过特定于操作系统的方式的 IE 或 Safari,或通过 XULRunner 的 Firefox/Mozilla,或通过 Chromium 嵌入式框架的 Chrome),并且我设法集成了 CEF我的应用程序达到了我确信它会按预期工作的程度。现在,在我看来,无论何时我想修改 DOM(例如添加或删除元素),我都必须通过 Javascript 来完成,即我的应用程序调用 Javascript 来完成实际工作。
我想知道为什么会这样。我(天真?)的信念是,例如,如果我调用appendChildJavascript,附加子项的实际“工作”最终将由 C/C++ 函数执行,因为浏览器本身是用 C/C++ 编写的,而不是用 Javascript 编写的。所以,我想知道为什么在嵌入式 Web 浏览器中我不能直接调用这个 C/C++ 函数而不是通过 Javascript。我知道对于一般脚本,出于安全原因,您不希望使用除 Javascript 之外的其他语言,但是如果浏览器嵌入到应用程序中,我无论如何都可以控制,这不应该是原因,对吗?
我错过了什么?