如何解决如何在python中解决复杂的非线性系统?
我正在尝试用 python 解决一个复杂的非线性系统。我试图解决的变量是 x[0]-x[8]。这些是方程(每个都等于零):
((240-138.564j) / (x[0] + parallel(x[1],x[2] + 10*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (1.981 - 1.94j),((240-138.564j) / (x[0] + parallel(x[1],x[2] + 30*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (0.4616 - 0.9335j),x[2] + 50*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (0.1338 - 0.7353j),x[2] + 80*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.05319 - 0.6252j),x[2] + 100*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.1196 - 0.5855j),x[2] + 150*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.2036 - 0.5357j),x[2] + 200*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.2473 - 0.5114j),x[2] + 500*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.3247 - 0.4659j),x[2] + 1500*(480/m.sqrt(3)/120)**2)) - 277.128j / (x[6] + x[7]))/m.sqrt(3) - (-0.3558 - 0.4454j),((-240-138.564j) / (x[3] + parallel(x[4],x[5] + 10*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-2.302 - 0.3599j),x[5] + 30*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.8415 + 0.1834j),x[5] + 50*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.5182 - 0.3403j),x[5] + 80*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.3311 + 0.438j),x[5] + 100*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.2687 + 0.4719j),x[5] + 150*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.1847 + 0.5182j),x[5] + 200*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.1416 + 0.5426j),x[5] + 500*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.06619 + 0.5863j),x[5] + 1500*(480/m.sqrt(3)/120)**2)) - (240-138.564j) / (x[0] + x[1])) / m.sqrt(3) - (-0.03186 + 0.605j),(277.128j / (x[6] + parallel(x[7],x[8] + 10*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.698 + 2.054j),x[8] + 30*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.4345 + 0.7171j),x[8] + 50*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.4059 + 0.3808j),x[8] + 80*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3955 + 0.1786j),x[8] + 100*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3927 + 0.1097j),x[8] + 150*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3916 + 0.01543j),x[8] + 200*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3895 - 0.03263j),x[8] + 500*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3903 - 0.119j),x[8] + 1500*(480/m.sqrt(3)/120)**2)) - (-240-138.564j) / (x[3] + x[4])) / m.sqrt(3) - (0.3896 - 0.159j)
我知道答案应该是:
x[0] = 1.0 + 0.75j
x[1] = 46.64 + 371.13j
x[2] = 2.67 + 2.01j
x[3] = 2.0 + 1.88j
x[4] = 84.45 + 552.58j
x[5] = 8.0 + 6.03j
x[6] = 3.0 + 2.26j
x[7] = 149.38 + 723.13j
x[8] = 13.33 + 8.04j
我尝试使用 scipy.least_squares,但得到负数,而答案应该是正数。然后,当我使用边界时,它也不会返回预期的答案,除非我选择的边界非常紧。
示例:
res = least_squares(real_f,(1,1,2.0,1.9,86,560,8,6,150,730,12,7),bounds = ((0,0),(2,48,380,3,2,10,4,14,9)))
有人知道怎么解决吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。