我正在编写一个计算幂级数的程序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]会引发异常。
在这种情况下,符号存储在列表中,您将如何对求和进行编码?谢谢你的帮助!
假设我想要一个像 [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”的命令。
有人可以引导我走正确的道路吗?
我想画一个函数的泰勒展开式,例如: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 函数(例如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
注意事项
c为单例,因为它仅针对此特定证明或表达式进行定义。E,因为没有可以分配给它的特定数值。我不能简单地将constants关键字添加到,因为我不知道可能出现的所有此类常量(就像添加到Laplacian没有意义一样)。constants=[1,2,3,4,...]solve()
我不能简单地variables向 中添加关键字Laplacian,因为我不知道表达式中出现的变量。
期望的用法如下:
>>> C = ... # somehow create …Run Code Online (Sandbox Code Playgroud) 是否有任何内置的 python 库可用于生成简化的集合表达式?
\n例如,假设我们有一个集合表达式(A\xe2\x88\xa9B)U(A\xe2\x88\xa9C)。这可以简化为A\xe2\x88\xa9(BUC)。
同样(A\xe2\x88\xa9B)U(A\xe2\x88\xa9!B)可以简化为A。
我正在寻找在 python 中实现这个逻辑。我发现它sympy可以用来简化代数表达式,x**2 + 2*x + 1但我不确定它是否可以处理集合表达式。
假设我有一个方程,例如
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 中为给定的 X1,Y1,X2,Y2,X3,Y3,t1,t2,t3,S 绘制它们的图形?
我尝试去除平方根,最后得到 4 次方程,然后尝试绘图,但我仍然得到 4 个解,我必须再次验证其中的两个正确根。是否有任何直接的方法或库来绘制这些类型的方程?
我想查看一些向量运算,看看哪些矩阵元素进入哪个向量,例如,如果我定义一个包含元素的矩阵
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 为我提供了我正在寻找的东西,但我还需要对输入数据进行一些操作,因此使用脚本来执行此操作的方法会很棒。
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) 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