我有一个非常复杂的两个变量函数,我们称它们为x
和y
。我想创建一个Python程序,用户可以在其中输入两个值,a
和b
,其中a
是复杂函数的值x
和 y
以及 b = math.atan(y/x)
。然后,该程序应输出 x
和 y
的值。
我不知道从哪里开始。我试图将函数变成只有一个变量的函数,然后为 x
生成许多随机值并选择最接近的一个,但我发现这是非常低效的,并且产生的结果只是精确到2个有效数字左右,这是相当可怕的。有一个更好的方法吗?非常感谢!
(P.S.由于版权问题,我没有在这里透露该功能。为了举例,您可以考虑该功能
a = 4*math.atan(math.sqrt(math.tan(x)*math.tan(y)/math.tan(x+y)))
其中y = x * math.tan(b)
。)
编辑:使用sympy
库的方法后,程序似乎忽略了我的第二个方程(复杂的方程)。我怀疑它对于 sympy
来说太复杂了,无法处理。因此,我要求另一种不使用 sympy 的方法。
最佳答案
您可以使用 sympy 并从 sympy 导入三角函数。
from sympy.core.symbol import symbols
from sympy.solvers.solveset import nonlinsolve
from sympy import sqrt, tan, atan
y = symbols('y', real=True)
a,b = 4,5 # user-given values
eq2 = a - 4*atan(sqrt(tan(y/tan(b))*tan(y)/tan((y/tan(b))+y)))
S = nonlinsolve( [eq2], [y] )
print(S)
它将返回一系列条件( ConditionSet 对象)以获得可能的足够结果。
如果这还不够清楚,您可以 read the docs for nonlinsolve 。
关于python - 使用 Python 求解复杂的多变量函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51810762/