Python 2.7 如何在python中求解两个变量中的复杂方程?

Python 2.7 如何在python中求解两个变量中的复杂方程?,python-2.7,math,linear-algebra,Python 2.7,Math,Linear Algebra,我想解这个给定的方程。 A+B=0;在哪里 A = (x-40+1j*(y+30))-(120+0j); B = (x-60)+1j*(y+30)-(70*(0.866-0.5j)) 有人能告诉我怎么做吗?这不是一个编程问题,而是一个复杂变量的代数问题 你有两个未知数,x和y,还有一个方程 你所能做的就是重写,把y表示为x的函数。将有许多解决方案可以满足它 它看起来也很复杂,因此解将是复平面上的函数 我认为我的代数是正确的-检查我: y = -j*(140.31 - x -j*47.5)

我想解这个给定的方程。
A+B=0
;在哪里

A = (x-40+1j*(y+30))-(120+0j);  
B = (x-60)+1j*(y+30)-(70*(0.866-0.5j))

有人能告诉我怎么做吗?

这不是一个编程问题,而是一个复杂变量的代数问题

你有两个未知数,x和y,还有一个方程

你所能做的就是重写,把y表示为x的函数。将有许多解决方案可以满足它

它看起来也很复杂,因此解将是复平面上的函数

我认为我的代数是正确的-检查我:

y = -j*(140.31 - x -j*47.5)
绘制它-这是你的解决方案

我刚请Wolfram Alpha检查我:

y = -j*(140.31 - x -j*47.5)

这不是一个编程问题,而是一个复杂变量的代数问题

你有两个未知数,x和y,还有一个方程

你所能做的就是重写,把y表示为x的函数。将有许多解决方案可以满足它

它看起来也很复杂,因此解将是复平面上的函数

我认为我的代数是正确的-检查我:

y = -j*(140.31 - x -j*47.5)
绘制它-这是你的解决方案

我刚请Wolfram Alpha检查我:

y = -j*(140.31 - x -j*47.5)

这是纯数学。设置z=x+j*y,则等式等于

A = z+(-40+1j*30)-(120+0j);  
B = z+(-60+1j*30)-70*(0.866-0.5j)
所以A+B=0等于

-2*z=C=(-40+1j*30)-(120+0j)+(-60+1j*30)-70*(0.866-0.5j)
or
z=-0.5*C

这是复杂算术中的一个简单计算。

这是纯数学。设置z=x+j*y,则等式等于

A = z+(-40+1j*30)-(120+0j);  
B = z+(-60+1j*30)-70*(0.866-0.5j)
def fun(x):
    A = (x[0]-40+`1j`*(x[1]+30))-(120+`0j`)
    B = (x[0]-60)+`1j`*(x[1]+30)-(70*(0.866-0.5j))
    return [np.real(A+B),np.imag(A+B)]
sol = optimize.root(fun, [10,10], method='hybr') 
sol
所以A+B=0等于

-2*z=C=(-40+1j*30)-(120+0j)+(-60+1j*30)-70*(0.866-0.5j)
or
z=-0.5*C

这是复杂算术中的一个简单计算。

如果OP不想做手工数学,他/她可以使用Python模块为单个变量求解
a+B=0
,将其插回,使用
numpy.roots
获得结果多项式的零。“不想做手工数学”-我认为计算机和软件永远不应该被用来代替思考。这只不过是高中代数。它和多项式的零点不一样,因为它们的数量是有限的。这是一个函数。我不是说作为思维的替代,我只是说,这可能是重复过程的示例输出,在这种情况下,手工求解方程是不可行的。这是一个猜测。原始问题中没有任何东西可以说明这种解释。但在这种情况下,我认为符号解算器会更好,因为这不是一个寻根问题。如果OP不想做手工数学,他/她可以使用Python模块为单个变量求解
a+B=0
,将其插回,使用
numpy.roots
获得结果多项式的零。“不想做手工数学“-我认为计算机和软件永远不应该被用来代替思考。这只不过是高中代数。它和多项式的零点不一样,因为它们的数量是有限的。这是一个函数。我不是说作为思维的替代,我只是说,这可能是重复过程的示例输出,在这种情况下,手工求解方程是不可行的。这是一个猜测。原始问题中没有任何东西可以说明这种解释。但在这种情况下,我会说符号解算器会更好,因为这不是一个寻根问题。谢谢你的帮助,但我想问,是否有任何方法可以通过比较LHS和RHS的实部和虚部来解这些类型的方程。你能发布一些相关代码吗?或者至少在一些周边环境中,你还不清楚你想在更广阔的前景中实现什么将复数视为二维向量,可以自动获得分隔。如果你用符号变量计算,那么你必须用某种方式编码x和y是实的约束。谢谢,我做了…:)谢谢你的帮助,但我想问一下,有没有办法通过比较LHS和RHS的实部和虚部来解决这些类型的方程。你能发布一些相关代码吗?或者至少在一些周边环境中,你还不清楚你想在更广阔的前景中实现什么将复数视为二维向量,可以自动获得分隔。如果你用符号变量计算,那么你必须用某种方式编码x和y是实的约束。谢谢,我做了…:)欢迎来到SO!请您在代码中添加一个解释,说明为什么这样可以解决这些问题?这让未来的读者更容易理解,谢谢!欢迎来到SO!请您在代码中添加一个解释,说明为什么这样可以解决这些问题?这让未来的读者更容易理解,谢谢!
def fun(x):
    A = (x[0]-40+`1j`*(x[1]+30))-(120+`0j`)
    B = (x[0]-60)+`1j`*(x[1]+30)-(70*(0.866-0.5j))
    return [np.real(A+B),np.imag(A+B)]
sol = optimize.root(fun, [10,10], method='hybr') 
sol