描述一般三角形的方程组只能使用 sympy 进行数值求解

问题描述 投票:0回答:1

我有两个三角形共享边 c。已知的是角度α、α'以及边a和a'。我正在寻找 b 和 b'。 从 3 个余弦规则中我可以找到例如b' 如下面的代码所示。不幸的是,每次求解后都有 2 个解,我从中手动选择正确的解,最后我必须以数值方式求解该解,这是正确的。

我能否以某种方式推断出求解后哪个解是正确的,或者对求解施加一些限制? 我的问题有封闭的解决方案吗?

from mpmath import radians
from sympy import N, symbols, cos, init_printing,Eq,solve,simplify,nsolve

init_printing()

alphaPrime, alpha, a, aPrime, b, bPrime,c   = symbols('αprime α a aprime b bprime,c')

eq1=Eq( a**2          , b**2+c**2-2*b*c*cos(alpha))
eq2=Eq( aPrime**2     , bPrime**2+c**2-2*bPrime*c*cos(alphaPrime))
eq3=Eq( (a+aPrime)**2 , bPrime**2+b**2-2*b*bPrime*cos(alpha+alphaPrime))

eq1c=solve(eq1,c,simplify=False)
eq2c=solve(eq2,c,simplify=False)
Eq1MinusEq2=eq1c[1]-eq2c[0]
eq1_eq2_b=solve(Eq1MinusEq2,b,simplify=False)

eq3_b=solve(eq3,b,simplify='False')
eq_1n2_Minus_eq3=eq1_eq2_b[1]-eq3_b[1]
display(simplify(eq_1n2_Minus_eq3))
expr=eq_1n2_Minus_eq3.subs([(aPrime,1.6547),(a,1.1),(alphaPrime,radians(27.031)), 
(alpha,radians(25.268))])
display(nsolve(expr,bPrime,1)) ##works

给我:3.45613973389693+1.86640158050948⋅10−8𝑖,实部是正确的。

geometry sympy solver
1个回答
0
投票

我认为代数是这样的(可能有拼写错误):

a^2 = b^2   + c^2 - 2bc.cos(alpha)     (1)
a'^2 = b'^2 + c^2 - 2b'c.cos(alpha')   (2)
(a+a')^2 = b^2 + b'^2 - 2b'b.cos(alpha+alpha')  (3)
from (1) we can solve a quadratic for b (or b' from (2))
0 = b^2 - 2bc.cos(alpha) + (c^2-a^2)     (4)
Hence
b =  bc.cos(alpha) +/- sqrt( (c.cos(alpha))^2 - c^2 + a^2)
b =  bc.cos(alpha) +/- sqrt( a^2 - (c.sin(alpha))^2))    (5)
b' = b'c.cos(alpha') +/- sqrt( a'^2 - (c.sin(alpha'))^2))    (6)

(3)-(1)-(2)
2a'a = 2c(b.cos(alpha) + b'.cos(alpha')) - 2b'b.cos(alpha+alpha')   (7)
a =  [c(b.cos(alpha) + b'.cos(alpha'))-b'b.cos(alpha+alpha')]/a'    (8)

from (2)
a' = sqrt(b'^2 + c^2 - 2b'c.cos(alpha'))  (9)

subst (9) in (8)
a = [c(b.cos(alpha) + b'.cos(alpha'))-b'b.cos(alpha+alpha')]/sqrt(b'^2+c^2-2b'c.cos(alpha'))    (10)

subst (5) and (6) in (10) - too messy to type in!

这是纯代数解(可能存在拼写错误),RHS 现在完全用值 b,b',c, alpha, alpha' subst (5) & (6) 表示。请注意,两个二次方程都有两个根 (5)、(6)。我猜测积极的可能就是你想要的,但也可能是其中之一。

© www.soinside.com 2019 - 2024. All rights reserved.