将矩阵与假想单位相乘会产生一个例外,即,
import sympy as sy
M = sy.MatrixSymbol('M', 2, 2)
print(sy.I * M)
引发异常
TypeError: Invalid comparison of non-real I
我目前的解决办法是将sy.I替换为i = sy.Symbol('i')。是否有更好的方法将MatrxixSymbol与假想表达式结合使用?谢谢。
PS:使用CondaPython3.7.6和Sympy版本1.5.1。
我使用SymPy表达式来计算表达式,比如a + 3 * b,然后我想用Z3来验证它(例如,所有正a, b的a + 3 * b > 0 )。
我找不到用a, b对象替换SymPy符号的方法,在一般情况下,用Z3对象替换Z3符号。
import sympy
from z3 import *
a = sympy.Symbol('a')
b = sympy.Symbol('b')
t = Real('t')
w = Real('w')
e = a + 3 * b
e = e.subs({a:t, b:w}) # does n
我正在做一个定义,它将帮助我替换多项式的变量,但我得到了这个错误
from sympy import *
x = Symbol('x')
def velocidad_media(t0,t1,poli):
D1=poli.subs(x,t0)
D0=poli.subs(x,t1)
D3=D1-D0
T= t1-t0
Re=D3/T
print("la velocidad media es",Re,"m/s")
pol=input("ingrese la funcion del lanzam
我尝试了这段代码,但是我得到了一个错误。如果可能的话,请告诉我如何修改定义的funct代码
from sympy.abc import x
from sympy import *
init_printing()
def func(y):
if y>0:
return 1
elif y<0:
return -1
else:
return 0
s = fourier_series(func(x), (x, -1, 1))
s = s.truncate(n=4)
s
"TypeError:无法确定关系的真值
我开始做求职面试的练习题,当我解决Caesar Cypher问题时,我第一眼看到的天真的解决方案是这样的。 def caesarCipherEncryptor(string, key):
abc = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'
key = key % 26
letter = 0
result = ''
for char in string:
index = abc.find(char)
result +
我目前正在使用Sympy来帮助我执行数学计算。现在,我正在尝试执行数值积分,但每次运行脚本时都会出现错误。下面是脚本:
from sympy import *
cst = { 'qe':1.60217646*10**-19, 'm0':N(1.25663706*10**-6) }
d = 3.6*10**-2
l = 20.3*10**-2
n = 217.0
I = 10.2
# Circum of loops
circ = l/n;
# Radius
r = N( circ/(2*pi) )
# Flux through a ring a distanc
如果我有一个算法,其中输入只是一个数字,输出是它的divisors.So集合,我的输入总是一个数字,算法中的迭代次数将取决于数字is.What有多大?算法:
1: Set m := 2.
2: Set S := {} for S a multi-set.
3: while m <= n^0.5
do
4: if m divides N then
5: Set S U m
6: else
7: Set m = m + 1.
8: end if
9: end while
10: Return the set S of divisors found.
我有一个表达式,对于某些参数值,它会溢出。在这种情况下,我已经用纸和笔推导出了渐近结果应该是什么,当我有这样的情况时,我只需用我的解析表达式替换。
目前,我的代码是这样做的:
values = ExpressionThatOverFlows()
# Check the ones that overflow
indOverFlow = isnan(values)
# Set them to the values I derived by pen and paper
values[indOverFlow] = derivedValues
我的问题是I/O爆炸时会出现“警告”。我知道它警告我是好的,
对于以下两种代码:
if a and b:
then do something
if a:
if b:
then do something
这两种语句在语义和执行时间上有什么不同?他们的评价不都是一样的吗?其中一个比另一个快吗(我不是在问渐变,不是大O表示法)?
带和的字节码
7 0 LOAD_GLOBAL 0 (a)
2 POP_JUMP_IF_FALSE 8
4 LOAD_GLOBAL 1 (b)
我有以下用于符号矩阵计算的代码 from sympy import *
A = MatrixSymbol( 'A', 3, 3 )
B = MatrixSymbol( 'B', 3, 3 )
C = MatrixSymbol( 'C', 3, 3 )
Z = A * ( A + B ) * C.inverse() * ( A + B ).transpose()
Z.expand() 这给了我以下结果 A( A + B ) C^-1 ( A^T + B^T ) 但我想要扩展后的结果 A * A * C^-1 * A^T + A * B C^-1
我用Python做了一个三次方程的求解器,其中包括多项式的除法。
from sympy import symbols
# Coefficients
a = int(input("1st coef: "))
b = int(input("2nd coef: "))
c = int(input("3rd coef: "))
d = int(input("Const: "))
# Polynomial of x
def P(x):
return a*x**3 + b*x**2 + c*x + d
x = symbols('