如何解决我可以得到解这些方程的字典列表吗? Python
这是我正在处理的代码的一部分:
delta,beta,gamma = symbols('delta beta gamma')
eq1 = Eq(tan((delta+beta)/2),nz*tan(theta/2))
eq2 = Eq(tan((delta-beta)/2),nx/ny)
eq3 = Eq(cos(gamma/2),cos(theta/2)/cos((delta+beta)/2))
result = solve([eq1,eq2,eq3],[delta,gamma])
给出所有参数:
theta = -1.2974951599797855
nx = - 0.280639152149670
ny = 0.546816938693111
nz = 0.788817407160244
没有等式 3,输出看起来像:
{delta: -1.01319515173894,beta: -0.0648548698337719}
由于gamma
有两个值,等式3,输出变为
[(-1.01319515173894,-0.0648548698337719,0.760927675576123),(-1.01319515173894,11.8054429387830)]
关于这个结果我有两个问题:首先,有没有办法让输出看起来像一个包含两个字典的列表?如:
[{delta: -1.01319515173894,beta: -0.0648548698337719,gamma: 0.760927675576123},{delta:-1.01319515173894,gamma: 11.8054429387830}]
另外,通过使用 solve
,我应该只获得主要的角度值吗?我想知道是否可以将 gamma
的第二个值设为 -0.760927675576123
,而不是 11.8054429387830
。
非常感谢您的帮助:)
解决方法
这是将元组列表转换为字典列表的方法。要固定 -pi 和 pi 之间的间隔,您可以对输出中的每个角度使用 math.remainder(radian,tau)
(其中 tau 为 2pi)。
from math import remainder,tau
#Output radians
output = [(-1.01319515173894,-0.0648548698337719,0.760927675576123),(-1.01319515173894,11.8054429387830)]
#Fix intervals between -pi and pi
fix_interval = [[remainder(j,tau) for j in i] for i in output]
#Convert to dictionary
dict_output = [{'delta':i,'beta':j,'gamma':k} for i,j,k in fix_interval]
dict_output
[{'delta': -1.01319515173894,'beta': -0.0648548698337719,'gamma': 0.760927675576123},{'delta': -1.01319515173894,'gamma': -0.7609276755761716}]
当然,您可以一步完成所有操作,但我已尝试将其作为一个单独的步骤进行处理,以便您更容易理解其工作原理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。