Exemplo 6.1: Determinar os ponto da reta que passa por A=(2,3) e B=(5,2) e formam com Q=(1,0) e R=(4,1) um triângulo de área 2.
import sympy as spA=sp.Matrix([2,3])B=sp.Matrix([5,2])Q=sp.Matrix([1,0])R=sp.Matrix([4,1])#obtendo um ponto P genérico pertencente à reta ABt=sp.symbols('t',real=True)#vetor diretorv=B-A#equação paramétrica da retaP=A+t*vprint('Coordenadas o ponto P dadas pela equação paramétrica')display(P)#calculando a área do triângulo usando Q como vérticeu=P-Qv=R-Q#matriz cujas colunas são u e v, lados do triânguloM=u.col_insert(1, v)print('Matriz cujas colunas são os vetores u=QP e v=QR')display(M)print('área do triângulo')area=sp.Abs(M.det())/2display(area)#equação que devemos resolverprint('Equação a se resolver')eq=sp.Eq(area,2)display(eq)print('solução da equação')sol=sp.solve(eq,t,dict=True)display(sol)print('Pontos buscados')P1=P.subs(t,sol[0][t])display(P1)P2=P.subs(t,sol[1][t])display(P2)
Coordenadas o ponto P dadas pela equação paramétrica
Matrix([
[3*t + 2],
[ 3 - t]])
Matriz cujas colunas são os vetores u=QP e v=QR
Matrix([
[3*t + 1, 3],
[ 3 - t, 1]])
área do triângulo
Abs(6*t - 8)/2
Equação a se resolver
Eq(Abs(6*t - 8)/2, 2)
solução da equação
[{t: 2/3}, {t: 2}]
Pontos buscados
Matrix([
[ 4],
[7/3]])
Matrix([
[8],
[1]])
Exemplo 6.2: Determine a equação cartesiana da reta que passa pelos pontos A=(3,2) e B=(-3,1)
import sympy as spA=sp.Matrix([3,2])B=sp.Matrix([-3,1])#vetor diretor da retav=B-A#vetor normal à vn=sp.Matrix([-v[1],v[0]])#variáveisx,y=sp.symbols('x y',real=True)X=sp.Matrix([x,y])#equação cartesiana usando o vetor n e o ponto Aeq=sp.Eq(n.dot(X-A),0)print('Equação cartesiana da reta que passa por A e B')display(eq)
Equação cartesiana da reta que passa por A e B
Eq(x - 6*y + 9, 0)
Exemplo 6.3: Considere os pontos A=(2,1) e B=(-1,5). Dertermine os pontos sobre a reta r: 2x+5y=3 que formam com A e B um triângulo de área 15.
import sympy as spA=sp.Matrix([2,1])B=sp.Matrix([-1,5])#para resolver esse problema, vamos obter as equações paramétricas de r e aplicar o feito anteriormente#vetor perpendicular à reta rn=sp.Matrix([2,5])#vetor paralelo a rv=sp.Matrix([-n[1],n[0]])#obtendo um ponto de r fazendo x=0x,y=sp.symbols('x y',real=True)eq=sp.Eq(2*x+5*y,3)eq0=sp.Eq(x,0)sol=sp.solve((eq,eq0),(x,y))P0=sp.Matrix([0,sol[y]])# escrevendo um ponto P usando as equações paramétricast=sp.symbols('t',real=True)P=P0+t*vprint('Coordenadas de um ponto P genérico')display(P)#agora é só repetir o feito no exemplo anterior:#calculando a área do triângulo usando A como vérticeu=P-Av=A-B#matriz cujas colunas são u e v, lados do triânguloM=u.col_insert(1, v)print('Matriz cujas colunas são os vetores u=AP e v=AB')display(M)print('área do triângulo')area=sp.Abs(M.det())/2display(area)#equação que devemos resolverprint('Equação a se resolver')eq=sp.Eq(area,2)display(eq)print('solução da equação')sol=sp.solve(eq,t,dict=True)display(sol)print('Pontos buscados')P1=P.subs(t,sol[0][t])display(P1)P2=P.subs(t,sol[1][t])display(P2)# vamos agora plotar os triângulos e a retaimport matplotlib.pyplot as pltplt.plot([A[0],B[0],P1[0],A[0]],[A[1],B[1],P1[1],A[1]],'b-',label='triângulo 1')plt.plot([A[0],B[0],P2[0],A[0]],[A[1],B[1],P2[1],A[1]],'r-',label='triângulo 2')plt.annotate('B', (B[0], B[1]), textcoords="offset points", xytext=(0,-20), ha='center',color='blue')plt.annotate('A', (A[0], A[1]), textcoords="offset points", xytext=(2,-20), ha='center',color='blue')#esboçando a reta por P1 e P2 usando a equação paramétricaimport numpy as npt = np.linspace(-1,0.5,50)z =-5*tw =2*t+3/5plt.plot(z, w,'g',label='reta r')plt.grid()plt.legend()plt.show()