Exemplo 7.1: Determine as posições relativas etnre as retas r: 3x-4y=1 e s: X=(-1,0)+t(2,-1)

import sympy as sp

# reta r
nr=sp.Matrix([3,-4]) #vetor normal

R=sp.Matrix([[0,-1],[1,0]]) #matriz rotação 90º

print('Vetor diretor da reta r')
vr=R*nr
display(vr)

print('Vetor diretor da reta s')
vs=sp.Matrix([2,-1])
display(vs)

print('Equação para saber se os vetores são múltiplos')
l=sp.symbols('l',real=True)
eq=sp.Eq(vr,l*vs)
display(eq)


sol=sp.solve(eq,l)
print('Número de soluções')
nsol=len(sol)
display(nsol)
Vetor diretor da reta r
Matrix([
[4],
[3]])
Vetor diretor da reta s
Matrix([
[ 2],
[-1]])
Equação para saber se os vetores são múltiplos
Eq(Matrix([
[4],
[3]]), Matrix([
[2*l],
[ -l]]))
Número de soluções
0

Como não tivemos soluções na equação, os vetores não são paralelos, logo as retas são concorrentes!

Exemplo 7.2: Determine o ângulo entre as retas r: x+y=6 e s: X=(1,8)+t(2,3)

import sympy as sp

#vetor normal da reta r
nr=sp.Matrix([1,1])

R=sp.Matrix([[0,-1],[1,0]]) #matriz rotação 90º

print('Vetor diretor da reta r')
vr=R*nr
display(vr)

#vetor diretor da reta s
vs=sp.Matrix([2,3])

#módulo do cosseno do ângulo entre eles
c=sp.Abs(vr.dot(vs)/(vr.norm()*vs.norm()))
print('Módulo do cosseno do ângulo entre os vetores')
display(c)

print('Ângulo em radianos entre as retas em radianos')
ang=sp.acos(c)
display(ang.evalf())

import math 
print('Ângulo em graus')
math.degrees(ang) #essa função converte um ângulo em radianos para graus.
Vetor diretor da reta r
Matrix([
[-1],
[ 1]])
Módulo do cosseno do ângulo entre os vetores
sqrt(26)/26
Ângulo em radianos entre as retas em radianos
1.37340076694502
Ângulo em graus
78.69006752597979

Exemplo 7.3: Determinar as retas que passam por P=(1,2) e formam um ângulo de 45º com a reta r: 3x-5y=1.

import sympy as sp

#ponto P
P=sp.Matrix([1,2])

#vetor normal à reta r
nr=sp.Matrix([3,-5])

#convertendo ângulo para radianos
th=45*sp.pi/180

#Matrizes de rotação pelo ângulo de 20° 
R1=sp.Matrix([[sp.cos(th),-sp.sin(th)],[sp.sin(th),sp.cos(th)]]) #sentido anti-horário
R2=sp.Matrix([[sp.cos(th),sp.sin(th)],[-sp.sin(th),sp.cos(th)]]) #sentido horário

#vetores normais das reta r1 e r2
n1=R1*nr
n2=R2*nr

#equações das retas
x,y=sp.symbols('x y',real=True)
X=sp.Matrix([x,y])

print('Equação cartesiana da reta r1')
eq1=sp.Eq(n1.dot(X)-n1.dot(P),0)
display(eq1)

print('Equação cartesiana da reta r2')
eq2=sp.Eq(n2.dot(X)-n2.dot(P),0)
display(eq2)

#Para esboçar as curvas, vamos isolar a variável y
sol1=sp.solve(eq1,y)
print('Equação reduzida da reta 1')
print('y=',sol1[0])

sol2=sp.solve(eq2,y)
print('Equação reduzida da reta 2')
print('y=',sol2[0])
Equação cartesiana da reta r1
Eq(4*sqrt(2)*x - sqrt(2)*y - 2*sqrt(2), 0)
Equação cartesiana da reta r2
Eq(-sqrt(2)*x - 4*sqrt(2)*y + 9*sqrt(2), 0)
Equação reduzida da reta 1
y= 4*x - 2
Equação reduzida da reta 2
y= 9/4 - x/4

Vamos esboçar as retas

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,3.1,100)


plt.plot(x, 4*x-2, '-r', label='reta 1')
plt.plot(x, 9/4-x/4, '-b', label='reta 2')
plt.plot(x, 3/5*x-1/5, '-k', label='reta dada')

plt.plot(1,2,'ko',label='ponto P')


plt.xlim(-1, 3.1)
plt.ylim(-1, 3.1)
plt.grid()
plt.legend()
plt.show()