在 python 或 matlab 中求解数值和解析方程

Numerical and analytical equation solving in python or matlab

假设我有两个超越函数 f(x, y) = 0g(a, b) = 0

a 和 b 取决于 y,所以如果我可以解析地求解第一个方程的 y,y = f(x),我可以得到仅取决于 x 的第二个函数,从而用数值方法求解它。

我更喜欢使用 python,但如果 matlab 能够处理这对我来说没问题。

有没有办法用 python/matlab 求解变量的解析超越函数? Taylor也可以,只要我能选择近似的阶数就可以了。

我通过 Sympy 试过 运行 这个:

import sympy

j, k, m, x, y = sympy.symbols("j k m x y")
eq = sympy.Eq(k * sympy.tan(y) + j * sympy.tan(sympy.asin(sympy.sin(y) / x)), m)
eq.simplify()

这把你的等式变成了

Eq(m, j*sin(y)/(x*sqrt(1 - sin(y)**2/x**2)) + k*tan(y))

经过更多的探索,我们得到了

k * tan(y) + j * sin(y) / sqrt(x**2 - sin(y)**2) == m

我们可以找到 x(y) 的表达式 like

sympy.solve(eq, x)

哪个returns

[-sqrt(j**2*sin(y)**2/(k*tan(y) - m)**2 + sin(y)**2),
 sqrt(j**2*sin(y)**2/(k*tan(y) - m)**2 + sin(y)**2)]

但是 y(x) 的解析解失败了。