python - 使用 Python 求解复杂的多变量函数

标签 python numeric numerical-methods approximation

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

我不知道从哪里开始。我试图将函数变成只有一个变量的函数,然后为 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/

相关文章:

OCTAVE 求解常微分方程

python - N 维直线网格每个单元的质心

python - 模拟对象的构造函数仍然被调用?

python - 将 Dataframe 转换为 Pandas 系列系列

python - python参数实际上是参数的别名吗?

python - Spark 流 : How to get the filename of a processed file in Python

r - 在 R 中的数据框中将 NA 转换为数字的问题

c++ - boost::sandbox::odeint 安装

swift - 检查泛型类型是否属于类内的特定类型

matlab - 简化行阶梯形式 (rref)