使用Python解决复杂的多变量函数

时间:2018-08-12 16:33:35

标签: python numeric numerical-methods approximation

我有两个变量的非常复杂的函数,我们称它们为xy。我想创建一个Python程序,用户可以在其中输入两个值ab,其中ax和{{1 }}和y。然后,该程序应输出b = math.atan(y/x)x的值。

我不知道从哪里开始。我试图将函数变成一个变量,然后为y生成许多随机值并选择最接近的一个,但是我了解到这效率极低,并且只能得到大约2个重要数字,这非常可怕。有一个更好的方法吗?非常感谢!

(请注意,由于版权问题,我在这里没有透露该功能。为便于举例,您可以考虑使用该功能

x

其中a = 4*math.atan(math.sqrt(math.tan(x)*math.tan(y)/math.tan(x+y))) 。)

编辑:使用y = x * math.tan(b)库的方法后,程序似乎忽略了我的第二个方程式(复杂的方程式)。我怀疑sympy处理起来太复杂了。因此,我要求另一种不使用sympy的方法。

1 个答案:

答案 0 :(得分:2)

您可以使用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