- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
虽然我的问题似乎与 sympy github 问题 here 有关,它要么看起来没有直接关系,要么仍然是一个悬而未决的、 Unresolved 问题(从 2012 年开始)。
我的问题是,我的矩阵中有一个由符号表示的“矩阵”(实际上,它只是一个向量,但由于 sympy 处理事物的方式,这是我唯一的选择),当被替换时,会显示一个矩阵而不是对其进行评估。
下面是演示这一点的示例代码块:
import numpy as np
import sympy
x = np.random.rand(15, 3)
l_syms = sympy.MatrixSymbol('l', 1, 3)
m = sympy.Matrix(x/l_syms)
m.subs({l_syms:sympy.Matrix([[1,1,1]])})
矩阵 [[1,1,1]] 中的每个值都应分为 m
矩阵的每个元素,但矩阵保持原样,保留索引符号。
Matrix([
[ 0.98979011265311*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.833576329284127*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.575808048824554*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.523263044342704*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.320197709246721*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.592365354846089*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.943288501064919*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.996020450969247*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.964522394691641*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.763752929521655*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.690054409108757*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.417629855595703*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.213578356927868*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.362782611339912*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.892921288169683*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.068921237699985*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.244310349677818*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.977494896836049*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[0.0169721915631557*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.254316922886399*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.682785271511585*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.768287921847173*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.679243253034139*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.790710466097621*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.892115183428169*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.988514816033581*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.537769900907173*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.275725750770885*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.928279364723852*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.18023576064915*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.71421202332017*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.663585719630706*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.43460735199406*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.770814091341355*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0650430822905173*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.0845773234523002*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[0.0398441324212175*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0358479090409692*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.0801076763216808*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.89937521111821*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.21500916688666*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.661216039738327*Matrix([[1, 1, 1]])[0, 2]**(-1)],
[ 0.866641224226343*Matrix([[1, 1, 1]])[0, 0]**(-1), 0.0506005171711028*Matrix([[1, 1, 1]])[0, 1]**(-1), 0.791277139679317*Matrix([[1, 1, 1]])[0, 2]**(-1)]])
我似乎无法找到一种方法来评估所有这些 Matrix 对象及其索引 - 唯一远程相关的是上面链接的 github 问题,但使用 xreplace
对于我的意图来说甚至不太理想/正确,因为它将符号留在原处而不是替换矩阵。
非常感谢任何帮助。
最佳答案
doit
将计算表达式
In [9]: print(m.subs({l_syms:sympy.Matrix([[1,1,1]])}).doit())
Matrix([[0.391482321650262, 0.261165517803277, 0.142349217414644], [0.273871679444907, 0.753721446526393, 0.915204734923647], [0.689284430582533, 0.509755263016457, 0.828178833602631], [0.258602302969241, 0.561852165820955, 0.926528186168350], [0.932268817842373, 0.275670112515102, 0.313790471533159], [0.815965494794080, 0.00638263457666399, 0.728986133320254], [0.771288596688822, 0.159602759327409, 0.846541783656596], [0.703501924167250, 0.168463436323684, 0.496465192945264], [0.265617558320534, 0.727288058464723, 0.301561940789455], [0.134747729067062, 0.315683443879649, 0.741893699540517], [0.763480667163729, 0.459612818589501, 0.295897102504639], [0.519647253027057, 0.884505816757734, 0.823849322619653], [0.0499379745242409, 0.333299403033741, 0.960531610086280], [0.658552664971765, 0.788381947436270, 0.609862319604282], [0.748840147759344, 0.434013189476355, 0.747584770109250]])
关于python - sympy 矩阵中的 sympy 矩阵在替换时保持未计算状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38539095/
在下面的程序中,SymPy 似乎不理解被积函数是乘积的导数。有没有办法让它返回u*v ? import sympy x = sympy.symbols('x', real=True) u = symp
我有两个单变量函数,f(x)和 g(x) ,我想替换 g(x) = y重写 f(x)正如一些 f2(y) . 这是一个有效的简单示例: In [240]: x = Symbol('x') In [24
我需要以字符串的形式接受用户输入,将其解析为一个 sympy 表达式,然后求解一个变量。大多数用户允许的函数与 sympy 函数匹配,除了 log2(x) 等同于 sympy 的 log(x, 2)。
当 Function 出现在方程中或者是要求解的目标时,sympy 的 solve 函数似乎无法求解某些方程。 为了解决这个问题,我想创建一个通用函数,它会自动用同名的 Symbol 替换表达式中的
尽管 radsimp函数看起来正是我想要的: from sympy import radsimp, sqrt, symbols v1, v2 = symbols('v1 v2') radsimp(1
在动态系统中,我的基值都是时间的函数,d(t)。我使用 d = Function('d')(t) 创建变量 d,其中 t = S('t') 显然,d 的导数(变化率,如速度等)很常见。但是 diff(
我有各种涉及 UndefinedFunction 实例的 SymPy 表达式: f = Function('f') g = Function('g') e = f(x) / g(x) 如何获取出现在此
我试图使用 sympy 解决斐波那契数列的递推关系。我得到了一个与教科书不同的答案。不知道我哪里弄错了。 我的同情码 from sympy import * f=Function('f') var('
我设置了 Anaconda 2.0.0 (Win 64)。 它有 SymPy 0.7.5。 我将 Spyder(Anaconda 附带的 2.3.0rc)配置为使用符号数学: 工具 > 首选项 > i
我是 sympy 的新手,并且正在学习它。我正在浏览堆栈交换中关于使用 sympy 符号求解具有初始条件的微分方程组的文档和问题。 我有一个简单的 ODE-s 系统 ( dV/dt ) = -(
x,i,n = symbols("x i n") summation(x,(i,1,n)) 我如何制作 x由 i 索引? 最佳答案 没有数字上限,它不会做任何事情,但除此之外,您可以使用类似函数的表达
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
我正在尝试在 Jupyter 笔记本中使用 sympy 以可重复的方式记录和执行一系列数学计算。 如果我定义以下内容: from sympy import * init_printing() x, y
当我打字时 >python > from sympy import * > x=symbols('x') > integrate(1/4/sin(1/3*x),x) 输出是 0.375*log(cos
如果我们知道变量满足某个方程,是否可以简化 SymPy 中的表达式?例如,在 Mathematica 中我们可以这样写: Simplify[a+b-c, a+b==c] 当然,在这种情况下可以解决 a
在 sympy 中,如何声明一个对子函数中的多个变量具有多个限制的 Piecewise 函数? 这是我的背景和尝试: from sympy import Piecewise, Symbol, exp
我想使用 sympy 求解以下简单方程 2^(x-y)=1 其中 x 和 y 是 +ve 整数 我的预期结果是 x=y 当我尝试使用 sympy 求解时 x = Symbol('x') y = Sym
我有一个表达式列表,例如 4.0*x[0] + 5.0*x[10] + 1 = 0我想根据 [4.0, 0, 0, ..., 5.0, ... , 1] 等系数将它们转换为向量。原因是我的一些方程可能
当我打字时 >python > from sympy import * > x=symbols('x') > integrate(1/4/sin(1/3*x),x) 输出是 0.375*log(cos
我想对 SU(2) 的一般矩阵进行计算,即我有一个 a,b=symbols('a,b') m=Matrix([[a,b],[-conjugate(b), conjugate(a)]]) 经过一些计算,
我是一名优秀的程序员,十分优秀!