标签: sympy

SymPy:列表中符号求和的表达式

我正在编写一个计算幂级数的程序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)
Run Code Online (Sandbox Code Playgroud)

a0,a1,...,a9这让我可以使用来引用符号a[0],a[1],...,a[9],并且是由 给出的a[m]函数。a[m-1]f_recur

现在,我希望将求和代码编写如下:

m, x, y = sympy.symbols('m x y')
y = sympy.Sum(a[m]*x**m, (m, 0, 10))
Run Code Online (Sandbox Code Playgroud)

但是,m不是整数,因此a[m]会引发异常。

在这种情况下,符号存储在列表中,您将如何对求和进行编码?谢谢你的帮助!

python sympy

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

如何在Python中集成Sympy和Numpy?sympy 符号的 Numpy 数组

假设我想要一个像 [x , 2x] 这样的数组向量,然后我想在 x=5 时计算这个数组。所以结果就变成了[5, 10]。

这可以在 matlab 中使用符号工具箱轻松完成。然而,我刚刚从 matlab 转向 python,建议我使用 Numpy 和 Sympy 来替代 Matlab 强大的矩阵操作。

我尝试了以下代码

import numpy as np
import sympy as sp

x=sp.symbols('x')
a=np.array([x , 2*x])
Run Code Online (Sandbox Code Playgroud)

但是,当 x 是任意数字时,我找不到任何可用于计算“a”的命令。

有人可以引导我走正确的道路吗?

python numpy sympy

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

如何从 sympy 中删除系列中的“O()”

我想画一个函数的泰勒展开式,例如:sin

from sympy import *
from sympy.plotting import *
m, x = symbols("m x")
plot(*Array([2, 4, 6]).applyfunc(lambda m: sin(x).series(x0=0, n=m)), (x, -pi/2, pi/2))
Run Code Online (Sandbox Code Playgroud)

但是,既然Array([2, 4, 6]).applyfunc(lambda m: sin(x).series(x0=0, n=m)给出了

sympy 无法绘制它们。

所以我想知道有没有办法删除O(x^n)?在 Mathematica 中,我可以用来Normal做到这一点。

python sympy

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

在 Sympy 中表示常量符号,使其不是 free_symbol

应用程序 我想创建一个 python 函数(例如Laplacian(expr))。expr拉普拉斯算子被定义为取关于每个变量的二阶偏导数之和(例如, Laplacian(f(x,y,z))is diff(f,x,x) + diff(f,y,y) + diff(f,z,z)。在表达式中,可能有任意常量c,k等,就表达式而言,它们不是变量。只是由于不能求导数diff(f,126),因此对表达式求导c是没有定义的。

我需要能够从表达式中提取非常量的自由符号。

问题c = Symbol('c', constant=True, number=True)虽然我可以在 Sympy 中 构建,c.is_constant()但计算结果为False. 同样,g(c).is_constant()评估结果为 false。对于我的应用程序,该符号应该具有与和c完全相同的行为,因为它是一个数字。E.is_constant() == Trueg(E).is_constant() == True

注意事项

  1. 我无法注册c为单例,因为它仅针对此特定证明或表达式进行定义。
  2. 我无法以与构造类似值相同的方式构造它E,因为没有可以分配给它的特定数值。
  3. 我不能简单地将constants关键字添加到,因为我不知道可能出现的所有此类常量(就像添加到Laplacian没有意义一样)。constants=[1,2,3,4,...]solve()

  4. 我不能简单地variables向 中添加关键字Laplacian,因为我不知道表达式中出现的变量。

期望的用法如下:

>>> C = ... # somehow create …
Run Code Online (Sandbox Code Playgroud)

sympy python-3.x

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

SymPy ODE 中的 Derivative() 或 diff()?

在 Sympy 中 ODE 的定义(和解决方案)中是否有充分的理由使用Derivative而不是?似乎做得很好:diffdiff

简单 ODE 的解

sympy derivative ode dsolve

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

如何在 python 中使用并集、交集和求反来简化集合表达式

是否有任何内置的 python 库可用于生成简化的集合表达式?

\n

例如,假设我们有一个集合表达式(A\xe2\x88\xa9B)U(A\xe2\x88\xa9C)。这可以简化为A\xe2\x88\xa9(BUC)

\n

同样(A\xe2\x88\xa9B)U(A\xe2\x88\xa9!B)可以简化为A

\n

我正在寻找在 python 中实现这个逻辑。我发现它sympy可以用来简化代数表达式,x**2 + 2*x + 1但我不确定它是否可以处理集合表达式。

\n

python set-theory sympy

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

求解方程并用 python 绘制结果

假设我有一个方程,例如

10 * x ** 2 - 7 * x + 3 == 2 * y + y ** 2

我想求解y,然后绘制从 0 到 1的y对比图。我如何在 Python 中做到这一点?xx

我知道如何在 Mathematica 中执行此操作,但我正在迁移到 Python。在 Mathematica 中只有一行

Plot[y /. Solve[10 x^2 - 7 x + 3 == 2 y + y^2, y], {x, 0, 1}]
Run Code Online (Sandbox Code Playgroud)

python matplotlib solver sympy

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

如何在Python中绘制根式方程

我有三个方程,如下所示:

请参阅此图像的方程

如何在 python 中为给定的 X1,Y1,X2,Y2,X3,Y3,t1,t2,t3,S 绘制它们的图形?

我尝试去除平方根,最后得到 4 次方程,然后尝试绘图,但我仍然得到 4 个解,我必须再次验证其中的两个正确根。是否有任何直接的方法或库来绘制这些类型的方程?

python math matplotlib sympy

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

使用参数而不是值求解矩阵和向量乘法(最好在 python 中)

我想查看一些向量运算,看看哪些矩阵元素进入哪个向量,例如,如果我定义一个包含元素的矩阵

mat = [["a11", "a12"], ["a21", "a22"]]
Run Code Online (Sandbox Code Playgroud)

和一个向量

vec = ["v1", "v2"]
Run Code Online (Sandbox Code Playgroud)

然后我正在寻找一些模块/库,当我计算产品时它可以给我结果:

res = mat*vec = ["a11"*"v1" + "a12"*"v2", "a21"*"v1" + "a22"*"v2"]
Run Code Online (Sandbox Code Playgroud)

我知道如果所有参数都是 numpy 的实际数字,这很容易做到,当然我可以手动计算出来,但是如果操作变得更复杂,那么有一种方法可以自动生成结果向量作为参数方程。

如果方程得到简化,例如结果在某处有 +"a11" - "a11" 并将其减少到 0,则可获得奖励积分。

这在Python中可以做到吗?Wolfram Alfa 为我提供了我正在寻找的东西,但我还需要对输入数据进行一些操作,因此使用脚本来执行此操作的方法会很棒。

python math numpy sympy

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

三次方程的 Sympy 解似乎是错误的并且包含虚数单位。怎么了?

from sympy import *
from sympy.abc import x

f = x**3 - 3*x + 1
res = solve(f)
print(res)
Run Code Online (Sandbox Code Playgroud)

但是,它给出的虚数单位答案不正确。检查 viasubs也不返回 0。

更新:

资源:

[-3/((-1/2 - sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)) - (-1/2 - sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)/3,
 -(-1/2 + sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)/3 - 3/((-1/2 + sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)),
 -(27/2 + 27*sqrt(3)*I/2)**(1/3)/3 - 3/(27/2 + 27*sqrt(3)*I/2)**(1/3)]
Run Code Online (Sandbox Code Playgroud)

子检查:

>>> print(f.subs(x, res[0]))
1 + (-1/2 - sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3) + (-3/((-1/2 - sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)) - (-1/2 - sqrt(3)*I/2)*(27/2 + 27*sqrt(3)*I/2)**(1/3)/3)**3 + 9/((-1/2 …
Run Code Online (Sandbox Code Playgroud)

python sympy

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

标签 统计

sympy ×10

python ×8

math ×2

matplotlib ×2

numpy ×2

derivative ×1

dsolve ×1

ode ×1

python-3.x ×1

set-theory ×1

solver ×1