113 - Topic 08 - Law of Sines

295 days ago by Professor113

 
       

Illustration regarding the Ambiguous Case for the Law of Sines

John Travis

Mississippi College

When one is given two sides of a triangle and an angle opposite one of the sides, the Law of Sines may produce two different but viable triangles.  This ambiguity might occur due to the fact the sine function is positive for both actute angles (i.e. quadrant I) and obtuse angles (i.e. quadrant II) and becuase triangles can of course contain both actute and obtuse angles.

To see when this happens, consider the standard expression for the Law of Sines:

$\displaystyle\frac{\sin(B)}{b} = \displaystyle\frac{\sin(A)}{a}$

with B unknown.  Solving for $\sin(B)$ yields

$\sin(B) = \frac{b \sin(A)}{a}$

By taking the inverse sine, one obtains a reference angle for B:

$B_r = \sin^{-1}( \frac{b \sin(A)}{a})$

Two options between $0$ and $\pi$ for $B$ are

$B_r$  or  $\pi - B_r$.

Suppose $ B = \pi - B_r $.

If $A + B > \pi$, it is not possible to select a positive value for angle $C$ so that $A + B + C = \pi$.  

So, there is no ambiguity and the only angle choice is

$B = B_r$

$C = \pi-A-B_r$

If $A + B < \pi$, then we get the following angle choices:

$B = B_r$

$C = \pi-A-B_r$

or

$B = \pi-B_r$

$C = B_r - A$

Notice that in each case the sum of all angles is $\pi$ or $180^o$.

# Illustration of the ambiguous case for law of sines @interact(layout=dict(top=[['Adeg']], bottom=[['a','b']])) def _(Adeg = slider(2,89,1,5,label='angle A in degrees'), a = slider(1,6,1/10,1,label='length a ='), b = slider(1,6,1/10,2,label='length b =')): A = Adeg*pi/180 h = b*sin(A) w = b*cos(A) LawOfSines = b*sin(A)/a if (LawOfSines>1): # then the triangle will be physically impossible. refB = pi/2 # so, presume B=90 degrees and draw a hanging side a bottomofa = h-a else: refB = asin(b*sin(A)/a) bottomofa = 0 if (A-refB>0): # this case will happen provided a > b Bs = [refB] else: # this case will happen provided b < a Bs = [refB, pi-refB] G = line([(0,0),(a+b,0)]) # base line for B in Bs: C = pi - A - B c = sin(C)*b/sin(B) G += text("A="+str(Adeg)+"$^o$",(-0.1,-0.02), color='blue') G += text(a,((w+c)/2+0.1,h/2), color='blue',horizontal_alignment='right') G += line2d([(w,h),(c,bottomofa)],thickness=5, color='green') G += text("B",(c+0.1,-0.02), color='red') G += text(b,(w/2-0.1,h/2), color='blue',horizontal_alignment='left') G += line2d([(0,0),(w,h)],thickness=5, color='green') G += text("C",(w+0.1,h+0.02), color='red') G += line2d([(0,0),(c,0)],thickness=5, color='green') G.show(axes=false,aspect_ratio=true,figsize=(10,15),title='Ambiguous Case Illustration for the Law of Sines') pretty_print("Reference angle for B is ",(refB*180/pi).n()," degrees") # need to not print if greater than 90 
       

Click to the left again to hide and once more to show the dynamic interactive window

# Illustration of the law of sines where you enter specific values for A, a and b @interact(layout=dict(top=[['Adeg']], bottom=[['a','b']])) def _(Adeg = input_box(20,label='angle A in degrees',width=10), a = input_box(2,label='length a =',width=10), b = input_box(2,label='length b =',width=10)): A = Adeg*pi/180 h = b*sin(A) w = b*cos(A) LawOfSines = b*sin(A)/a if (LawOfSines>1): # then the triangle will be physically impossible. refB = pi/2 # so, presume B=90 degrees and draw a hanging side a bottomofa = h-a else: refB = asin(b*sin(A)/a) bottomofa = 0 if (A-refB>0): # this case will happen provided a > b Bs = [refB] else: # this case will happen provided b < a Bs = [refB, pi-refB] G = line([(0,0),(a+b,0)]) # base line for B in Bs: C = pi - A - B c = sin(C)*b/sin(B) G += text("A="+str(Adeg)+"$^o$",(-0.1,-0.02), color='blue') G += text(a,((w+c)/2+0.1,h/2), color='blue',horizontal_alignment='right') G += line2d([(w,h),(c,bottomofa)],thickness=5, color='green') G += text("B",(c+0.1,-0.02), color='red') G += text(b,(w/2-0.1,h/2), color='blue',horizontal_alignment='left') G += line2d([(0,0),(w,h)],thickness=5, color='green') G += text("C",(w+0.1,h+0.02), color='red') G += line2d([(0,0),(c,0)],thickness=5, color='green') G.show(axes=false,aspect_ratio=true,figsize=(10,15),title='Ambiguous Case Illustration for the Law of Sines') 
       

Click to the left again to hide and once more to show the dynamic interactive window

# Gif of the ambiguous case for law of sines a = 3 b = 4 Adeg = 30 H = [] for Adeg in range(10,70,5): A = Adeg*pi/180 h = b*sin(A) w = b*cos(A) LawOfSines = b*sin(A)/a if (LawOfSines>1): # then the triangle will be physically impossible. refB = pi/2 # so, presume B=90 degrees and draw a hanging side a bottomofa = h-a else: refB = asin(b*sin(A)/a) bottomofa = 0 if (A-refB>0): # this case will happen provided a > b Bs = [refB] else: # this case will happen provided b < a Bs = [refB, pi-refB] G = line([(0,0),(a+b,0)]) # base line for B in Bs: C = pi - A - B c = sin(C)*b/sin(B) G += text("A="+str(Adeg)+"$^o$",(-0.1,-0.02), color='blue') G += text(a,((w+c)/2+0.1,h/2), color='blue',horizontal_alignment='right') G += line2d([(w,h),(c,bottomofa)],thickness=5, color='green') G += text("B",(c+0.1,-0.02), color='red') G += text(b,(w/2-0.1,h/2), color='blue',horizontal_alignment='left') G += line2d([(0,0),(w,h)],thickness=5, color='green') G += text("C",(w+0.1,h+0.02), color='red') G += line2d([(0,0),(c,0)],thickness=5, color='green') G.show(axes=false,aspect_ratio=true,figsize=(10,15),title='Ambiguous Case Illustration for the Law of Sines') H.append(G) animate(H) 
       











animate(H)