当u在2个方程中给出时,使用Python Symy模块求出u作为x和y的函数

yc0p9oo0  于 2022-12-25  发布在  Python
关注(0)|答案(2)|浏览(114)

我的目标是找到u作为函数的x和y使用症状模块。方程是:
1.

答案应该是:

from sympy import cosh, sinh, symbols, sin, cos, Eq
u, v, x, y = symbols('u, v, x, y')
eqq1 = Eq(x, sin(u)*cosh(v))
eqq2 = Eq(y, cos(u)*sinh(v))

接下来呢?
我试过了

result = solve((Eqq1, Eqq2), u, v)

显然这不是正确的方式。

hrysbysz

hrysbysz1#

这可能不是您所期望的答案,但是您可以通过删除v来重新解决该问题,如下所示:

(x cos u)² - (y sin u)² = cos²u sin²u

t = sin²u的方程为二次方程:

x² (1 - t) - y² t = (1 - t) t
irlmq6kh

irlmq6kh2#

将x方程的每一边除以cosh(v),将y方程的每一边除以sinh(v)。求所有边的平方。将sinh(v)**2替换为z,将cosh(v)**2替换为1 + z。方程的lhs之和为1。差值为cos(2u)。您可以求解cos(2u)和z,并计算出与您所寻找的值接近的值。

>>> from sympy import x, y, z, v, u
>>> from sympy import cosh,sinh,cos,Tuple,solve
>>> e1 = x**2/cosh(v)**2 + y**2/sinh(v)**2-1
>>> e2 = y**2/sinh(v)**2-x**2/cosh(v)**2-cos(2*u)
>>> solve(Tuple(e1,e2).subs(cosh(v)**2,1+z).subs(sinh(v)**2,z), z, cos(2*u), dict=True)
[
{z: x**2/2 + y**2/2 - sqrt((x**2 - 2*x + y**2 + 1)*(x**2 + 2*x + y**2 + 1))/2 - 1/2, 
cos(2*u): -x**2 - y**2 - sqrt((x**2 - 2*x + y**2 + 1)*(x**2 + 2*x + y**2 + 1))}, 

{z: x**2/2 + y**2/2 + sqrt((x**2 - 2*x + y**2 + 1)*(x**2 + 2*x + y**2 + 1))/2 - 1/2, 
cos(2*u): -x**2 - y**2 + sqrt((x**2 - 2*x + y**2 + 1)*(x**2 + 2*x + y**2 + 1))}]

相关问题