当前位置: 首页 > 面试题库 >

如何使用symPy和numPy将符号替换为矩阵

宗政颖逸
2023-03-14
问题内容

我正在尝试将方程式中的两个符号替换为每个符号的矩阵形式。

我创建了一个换向器函数,该函数形成了我的表达式:

t, vS, = sy.symbols('t, vS', commutative = False)
hS = t + vS

eta = myComm(t,hS)

dHs = myComm(eta,hS) 
print dHs.expand()

产生我想要的正确表达:

2*t*vS*t + t*vS**2 - t**2*vS - 2*vS*t*vS - vS*t**2 + vS**2*t

所以现在我希望用矩阵替换符号t和vS,但是当使用subs时出现错误,“ unhashable
type:’list’”,我认为这与矩阵的初始化或如何正确替换它们有关因为我是numPy和symPy的新手。

其余代码:

tRel = ([e0, 0],[0,e1])
vtmp = ([v0, v1],[v2,v3])

dHs = dHs.subs(t, tRel)
dHs = dHs.subs(vS, vtmp)
print dHs

问题答案:

也许使用lambdify:

import sympy as sy
import numpy as np    
from sympy.abc import x, y

z = ((x+y)**2).expand()
print(z)
# x**2 + 2*x*y + y**2
X = np.arange(6).reshape(2,3)
Y = np.arange(1,7).reshape(2,3)

f = sy.lambdify((x, y), z, 'numpy')
print(f(X, Y))
# [[  1   9  25]
#  [ 49  81 121]]

assert np.allclose(f(X, Y), (X**2 + 2*X*Y + Y**2))


 类似资料:
  • 问题内容: 我在NumPy中有三个相同大小的正方形矩阵。我想将它们组合成块对角矩阵。 例: 做这个的最好方式是什么? 问题答案: scipy.linalg具有block_diag函数以自动执行此操作

  • 问题内容: 我在Python中有一个SymPy表达式,我想将其复制并粘贴到Java源代码中。问题在于,对幂有不同的表示法: Java用途; Python使用。 所以我的问题是:有没有办法以“ Java格式”打印SymPy表达式? 问题答案: SymPy有几个专门用于此目的的代码打印机。虽然没有Java代码打印机,但是有一种Javascript打印机。我不能说Java和Javascript是否在每种

  • 问题内容: 使用Swift,我试图获取应用程序文本视图中输入的数字列表,并通过为成绩计算器提取每个数字来创建此列表的总和。而且,用户输入的值量每次都会更改。一个例子如下所示: 字符串:98,99,97,96 …试图获取:98 + 99 + 97 + 96 … 请帮忙!谢谢 问题答案: 使用打破了逗号分隔的字符串。 使用前,每一个元素后删除空格 使用每个元素转换为整数。 使用(以前称为)删除所有无法

  • 我得到了一个导入的文本块,但格式并不总是那么完美。之后我会尝试用jquery解决这个问题。所以我开始用 替换 : null null 但替换不起作用。最终的html应该如下所示:

  • 好吧,我可能不会用正确的方法来做这件事,但现在。。 我有这个字符串,它需要一个链接并提取标签之间的文本... 这个字符串中有几个项目有和符号(在文本部分,而不是标记部分),但是大多数没有。我试图找出一种方法,要么将与号合并到当前模式中,要么在上做另一个preg_replace,以便在标记被删除后删除与号。 谢谢

  • 我已经在运行El Capitan的Mac上安装了Python 2.7和3.5。此外,我在python中使用了Symphy包(与pip一起安装)。我想用Pypy(用自制软件安装)运行我的代码,但Pypy似乎找不到Sympy,并说: “没有名为sympy的模块” 我根本不是专家,现在不知道该怎么办。Sympy可以很好地与Python2和3配合使用,但不能与Pypy配合使用。 我感谢你的每一个回答,提前

  • 问题内容: 我是Numpy的新手,想替换矩阵的一部分。例如,我有两个由numpy生成的矩阵A,B 最终,我想使A为以下矩阵。 和/或以下 我尝试跟随,但没有用。我现在不知道了:( 甚至我尝试过 检查四个单元是否更改。你有什么主意吗? 问题答案: 这是您可以执行的操作:

  • 问题内容: 在String类中,将加号(+)作为Java 方法的第一个参数(即要替换的字符串)的正确正则表达式是什么?我无法正确使用语法。 问题答案: 您需要使用来对正则表达式进行转义。 但是,Java使用String参数构造正则表达式,该表达式用于其自己的转义序列。因此,您必须逃避自身: