python - 如何在 SymPy 中使用 nonlinsolve 返回有限(浮点)值?
问题描述
我对编程很陌生,不得不在学校项目中使用 sympy。
我想我知道使用 nonlinsolve 返回一个角度会给出一个角度 + 2n*pi 的 ImageSet。但是我希望它只返回角度的值(在区间 [0,pi/2] 中),并且作为一个值而不是一个区间。
from sympy import nonlinsolve, symbols,cos
x=symbols('x')
print(nonlinsolve([cos(x)-1],[x]).args[0][0])
我希望结果是0
而不是2*n*pi.
澄清:我知道结果是正确的,但我只想要一个值,我可以代数使用,而且我不知道 Sympy 是如何工作的(如何操作 ImageSets)
解决方案
所以我可能错了,因为我不使用 sympy,但求解器返回的解决方案对我来说似乎是正确的。
ImageSet(Lambda(_n, 2*_n*pi), Integers)
据我了解,求解器返回了 lambda 函数。Cosinus 是一个循环函数,这意味着它每 2PI 重复一次它的值。所以求解器说第一个解 (_n = 0) 是 0,第二个 (_n = 1) 是 2pi,依此类推。
查看函数图,希望它有意义: Wolfram Alpha - (cos(x) - 1)
编辑:我认为你需要像这样使用 imageset 的 intersect 方法(注意 intersect 返回所有的交叉点,这里我只选择了第一个):
from sympy import nonlinsolve, symbols,cos, Interval
import math
x = symbols('x')
f = nonlinsolve([cos(x)-1], [x]).args[0][0]
sol = f.intersect(Interval(0, math.pi/2)).args[0]
print(sol)
推荐阅读
- php - WP 插件外部 API,自定义帖子类型
- json - Swift 4 JSON 解码
- java - Spring boot - 添加 JSTL 依赖会导致问题
- r - 根据测量日期与另一个数据集中的其他两个日期相比,标记一个数据集中的行
- javascript - 调用自身的阶乘函数
- javascript - RegExp,如何在 javascript 中连接字符串以创建动态正则表达式?
- python-3.x - 合并卫星图像并保留坐标
- vb.net - Exchange Web 服务邮件横幅
- python - 使用matplotlib python将单独的图绘制成一个图形
- mysql - MySql 识别每个组中的行。