我编写了以下代码来解决2个未知数 th2中的2个非线性方程 f [0] 和 f [1] 的系统和 th3 :
from math import radians,degrees,sin,cos
from scipy import zeros
from scipy.optimize import fsolve
guess=[0,0]
th1=radians(30)
th4=radians(180)
l1=0.8
l2=3.9
l3=2.59
l4=4.
def residuals(x,th1,th4,l1,l2,l3,l4):
f=zeros(2)
th2=x[0]
th3=x[1]
f[0] = l1*cos(th1)+l2*cos(th2)+l3*cos(th3)+l4*cos(th4)
f[1] = l1*sin(th1)+l2*sin(th2)+l3*sin(th3)+l4*sin(th4)
return f
d=zeros(2)
c=fsolve(residuals,guess,args=(th1,th4,l1,l2,l3,l4))
此代码用于查找附加图像中可以看到的矢量问题中的th2和th3:
其中向量r1,r2,r3和r4的模块是已知量l1,l2,l3和l4。
th1是复数表示法中的r1角(极坐标,逆时针测量)。 th2,th3和th4是向量r2,r2和r4的极坐标角。
您可以在代码中看到数量th1和th4。
th1是我需要实现的值数组,其中包含角度th1的所有可能值。我将实现我在for循环中编写的代码来生成th2和th3 for其他已知值是固定值。
带代码的实际代码的问题是:我期望th1和th3的两个解决方案对于给定的th1,因为矢量可以在这个图像中看到的两种配置中排列:
所以我期待为th2和th3获得2个解决方案。然后我只对r2和r3不与r4交叉的解决方案感兴趣。不幸的是,我写的代码有时会得到"粉红色(交叉")解决方案,有时候会得到" brown"之一。
我需要帮助:
1)编写能给我"粉红色" " brown"溶液
2)编写只能采用"眉毛"解。