python - 无法从 fun.eval 获取数组的实部
问题描述
我使用 eval 函数来评估函数。代码写在下面:
import numpy as np
import sympy
from sympy import Symbol, Add
s = sympy.Symbol('s')
x = [ s, s+1, 10*s**2, 5]
a = [1 + 1j, 2 , 3 , 4 , 5]
fun = Add(*x) # Create a function by adding all terms. * is to unpack all the values
def F(fun, v):
return fun.evalf(subs={s: v}) # Evaluate the function at s=v
f_dis = [F(fun, v) for v in a]
print (f_dis)
fit3 = np.asanyarray(f_dis)
print ("fit3 =", fit3)
realpart = fit3.real[0]
print ("real =", realpart)
结果f_dis
是
[8.0 + 22.0*I, 50.0000000000000, 102.000000000000, 174.000000000000, 266.000000000000]
这里的重点是代码将 显示8.0 + 22.0*I
为第一个元素的实部,而不是8
仅显示。我应该怎么做才能解决这个问题?谢谢。
解决方案
您可以使用re
fromSympy
仅获取评估表达式的实部
import numpy as np
from sympy import Symbol, Add, re
s = Symbol('s')
x = [ s, s+1, 10*s**2, 5]
a = [1 + 1j, 2 , 3 , 4 , 5]
fun = Add(*x) # Create a function by adding all terms. * is to unpack all the values
def F(fun, v):
return fun.evalf(subs={s: v}) # Evaluate the function at s=v
f_dis = [re(F(fun, v)) for v in a] # <---- Use re() here
print (f_dis)
# [8.00000000000000, 50.0000000000000, 102.000000000000, 174.000000000000, 266.000000000000]
推荐阅读
- ios - 如何将纯色图像插入照片库集合视图
- java - 在 java 中使用 PATCH API(之前的问题已被删除)
- python - Or-Tools CpSolver 获取最小和最大总和或绝对值
- javascript - 每当我单击分页编号 4 或 8 或 12 时,分页布局就会消失
- javascript - 如何使用 javascript 和 HTML 将变量设置为 ID 和类中的内容
- oauth-2.0 - 最终用户登录和后端资源访问都可以使用单个应用程序注册吗?(作为公共和机密应用程序)
- java - 如何在 Spring 中处理“org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误”?
- php - 如何限制某些名称不能在 html 名称输入中使用或写入?
- python - 如何在我的 django 视图中删除 keyerror?
- javascript - filter an array with same elements