sexta-feira, 8 de dezembro de 2023

Colisões elásticas imediatas

Cons. momento linear

m1v1 + m2v2 = m1w1 + m2w2

m1v1 - m1w1 = m2w2 - m2v2

m1(v1 - w1) = -m2(v2 - w2)


Cons. energia cinética

(1/2)m1v1^2 + (1/2)m2v2^2 = (1/2)m1w1^2 + (1/2)m2w2^2

m1v1^2 + m2v2^2 = m1w1^2 + m2w2^2

m1v1^2 - m1w1^2 = m2w2^2 - m2v2^2

m1(v1^2 - w1^2) = -m2(v2^2 - w2^2)

m1(v1 - w1)(v1 + w1) = -m2(v2 - w2)(v2 + w2)


De m1(v1 - w1) = -m2(v2 - w2) acima, em cons. momento linear, obtemos


m1(v1 - w1)(v1 + w1) = m1(v1 - w1)(v2 + w2)


Dividindo ambos os lados por m1(v1 - w1),


v1 + w1 = v2 + w2

w1 = (v2 - v1) + w2

w2 = (v1 - v2) + w1


Subst. em m1v1 + m2v2 = m1w1 + m2w2,

m1v1 + m2v2 = m1v2 - m1v1 + m1w2 + m2w2

2m1v1 + (m2 - m1)v2 = (m1 + m2)w2

w2 = (2m1v1 + (m2 - m1)v2)/(m1 + m2)


Analogamente,

w1 = (2m2v2 + (m1 - m2)v1)/(m2 + m1)


No caso em que m1 = m2, obtemos

w2 = 2m1v1/(2m1) = v1

w1 = 2m2v2/(2m2) = v2

sexta-feira, 11 de março de 2022

Calculei os lados de um triângulo a partir de suas medianas

 Deu


L_a = (2sqrt(2(m_bˆ2+m_cˆ2)-m_aˆ2))/3
L_b = (2sqrt(2(m_aˆ2+m_cˆ2)-m_bˆ2))/3
L_c = (2sqrt(2(m_bˆ2+m_aˆ2)-m_cˆ2))/3

Em que L_a, L_b, L_c são os lados do triângulo opostos aos vértices A, B, C, e m_a, m_b, m_c são as medianas do triângulo que ligam os vértices A, B, C aos pontos médios dos lados L_a, L_b, L_c, respectivamente.


//sqrt(x) é a função raiz quadrada

quarta-feira, 8 de dezembro de 2021

Divisibilidade por 7 demonstrada pelo teorema dos restos

 Estamos trabalhando na base 10.


Seja a_k ... a_0 uma forma abreviada de representar a_0 + 10*a_1 + 10ˆ2*a_2 + ... + 10ˆk*a_k , em que a_k, ... , a_0 são os dígitos de dado número na base 10, portanto inteiros de 0 a 9.


Então, seja n = a_k ... a_0, digo que 7 divide n se e somente se 7 divide a_k ... a_1 - 2*a_0, isto é, a_1 + 10*a_2 + 10ˆ2*a_3 + ... 10ˆ(k-1)*a_k - 2*a_0.


Demonstração.


Seja n tal que 7 o divide. Então 7|a_k ... a_0 = 10*a_k ... a_1 + a_0. Pelo teorema dos restos, o resto da divisão de a+b por c é igual ao resto da divisão de r_1+r_2 por c, em que r_1 é o resto da divisão de a por c e r_2 é o resto da divisão de b por c. Portanto, sendo 3 o resto da divisão de 10 por 3, 7|10*a_k ... a_1 + a_0 se e somente se 7|3*a_k ... a_1 + a_0. Como 7 e -2 são primos entre si, 

7|3*a_k ... a_1 + a_0 <-> 7|-6*a_k ... a_1 -2*a_0


Como 7*a_k ... a_1 é múltiplo de 7,


7|-6*a_k ... a_1 -2*a_0 <-> 7|7*a_k ... a_1 -6*a_k ... a_1 -2*a_0 = a_k ... a_1 -2*a_0


Portanto, 7 divide a_k ... a_0 se e somente se 7 divide a_k ... a_1 - 2*a_0.


Exemplo,

n=10843

7|10843 <-> 7|1084-2*3=1078 <-> 7|107-2*8=91 <-> 7|9-2*1 = 7


7 divide 7, portanto 7 divide 10843.


sexta-feira, 15 de outubro de 2021

Como converter notação vetorial de linhas em notação equacional

p.ex. P=P0+(P1-P0)t -> ax+by+c=0 (em 2d)


Em 3d necessitaria de duas equações(do tipo ax+by+cz+d=0), uma para cada plano, e a intersecção seria a linha - isso não me interessa resolver agora


Vamos lá,

(x,y)=(x0,y0)+(x1-x0,y1-y0)t

(x,y)=(x0+(x1-x0)t,y0+(y1-y0)t)

x=x0+(x1-x0)t

y=y0+(y1-y0)t

ax+by+c=0

a(x0+(x1-x0)t)+b(y0+(y1-y0)t)+c=0

ax0+a(x1-x0)t+by0+b(y1-y0)t+c=0

(a(x1-x0)+b(y1-y0))t=-c-ax0-by0

t=(-c-ax0-by0)/(a(x1-x0)+b(y1-y0))

Não haverá solução quando o numerador é diferente de zero e o denominador é zero; haverá solução única quando ambos o numerador e o denominador são diferentes de zero; haverá infinitas soluções quando ambos o numerador e o denominador são zero.

O primeiro é o caso em que as duas linhas não se tocam; o segundo é o caso em que as duas linhas se cruzam num único ponto; o terceiro é o caso em que as duas linhas coincidem completamente: são as mesmas.

Estou interessado no terceiro caso.

(-c-ax0-by0)=0

(a(x1-x0)+b(y1-y0))=0

A primeira equação me diz que (x0,y0) pertence à segunda linha (ax0+by0+c=0). Se eu aplicar a primeira equação na segunda, eu tenho que,

ax1-ax0+by1-by0=0

ax1+by1+c=0

Ou seja, (x1,y1) pertence também à segunda linha.

Mas já estou convencido de que elas coincidem completamente, o que quero agora é achar a, b e c em termos de x0, y0, x1 e y1. Mas isso são duas equações e três incógnitas, então verei no que dá.


ax0+by0+c=0

a=(-c-by0)/x0

ax1+by1-ax0-by0=0

(-c-by0)x1/x0+by1-(-c-by0)-by0=0

-cx1/x0-by0x1/x0+by1=-c

b(y1-y0x1/x0)=-c+cx1/x0

b=(-c+cx1/x0)/(y1-y0x1/x0)

Multiplico em cima e em baixo por x0

b=(-cx0+cx1)/(y1x0-y0x1)

b=c(x1-x0)/(y1x0-y0x1)

Posso agora inserir b em a e ter uma fórmula para a e outra para b, ambas em termos de c (e x0, x1, y0, y1). 


a=(-c-by0)/x0

a=(-c-c(x1-x0)y0/(x0y1-x1y0))/x0

a=-c(1+(x1-x0)y0/(x0y1-x1y0))/x0

a=-c((x0y1-x1y0+x1y0-x0y0)/(x0y1-x1y0))/x0

a=-c(y1-y0)/(x0y1-x1y0)


Então temos,

a=-c(y1-y0)/(x0y1-x1y0)

b=c(x1-x0)/(x0y1-x1y0)

c=c

E fica a dúvida, posso escolher qualquer c? O que está havendo com aquele denominador?, o que acontece quando ele dá zero?

Bem, se eu escolher c=0, tenho a trivial equação 0x+0y+0=0, que não nos informa nada. Escolher c=1 nos dá algo mais útil, mas ainda longe do perfeito.

Mais fácil é escolher c=(x0y1-x1y0), me livrar de dois problemas ao mesmo tempo (o denominador e a elegância), e obter:

a=y0-y1

b=x1-x0

c=x0y1-x1y0


Isso, em forma de equação, fica,

ax+by+c=0

(y0-y1)x+(x1-x0)y+(x0y1-x1y0)=0


Assim, obtemos a transformação da notação vetorial da linha 2d em notação equacional,

P=P0+(P1-P0)t -> ax+by+c=0

(Com P=(x,y),P0=(x0,y0),P1=(x1,y1))


Como queríamos fazer.

domingo, 11 de julho de 2021

Como girar um vetor dado θ (rad) em torno de um vetor arbitrário?

Fazemos uma pequena mudança de base...

Dados: v_dado, v_eixoθ.
Primeiro normalizamos v_eixo e projetamos v_dado no plano ortogonal a v_eixo que passa pela origem.
v_eixo <- v_eixo/|v_eixo|
h <- <v_eixo,v_dado>
h <- h v_eixo
v_x <- v_dado - h
r <- |v_x|
v_x <- v_x/r
(Negrito aqui representa vetores tridimensionais. Quando não há negrito falamos do módulo ou magnitude.)

Nesse caso, projetar foi apenas remover a "altura": h = v_dado cos(α); α=(v_dado,v_eixo).
h = h veixo

Agora, na nossa mudança de base, v_z toma o valor de v_eixo, e v_y será o produto vetorial entre os dois, na ordem correta (regra da mão direita):
v_z <- v_eixo
v_y <- v_z × v_x

Como v_z e v_x são ortogonais, e ambos de norma 1, v_y também terá norma 1.
Agora giramos:
v_x <- v_x cos θ;
v_y <- v_y sin θ;
v_res <- r(v_x + v_y) + h;

E está aí, o vetor resultado. Para girar em torno de um ponto qualquer, é só subtrair esse ponto, girar em torno da origem (que é o que fizemos), e então somar o ponto.

Em resumo, e simplificando alguns passos, o algoritmo fica:

v_eixo <- v_eixo/|v_eixo|;
h <- <v_eixo, v_dado> v_eixo;
v_x <- v_dado - h;
v_y <- v_eixo × v_x;
v_res <- v_x cos θ + v_y sin θ + h;
return v_res;

segunda-feira, 5 de julho de 2021

Deduzindo as propriedades básicas dos logaritmos

Dado que e^ln(x) = x, (por definição), temos que,

ab = ab; e^ln(ab) = e^ln(a)*e^ln(b) = e^(ln(a)+ln(b))
Logo, ln(ab) = ln(a)+ln(b)

a/b = a/b; e^ln(a/b) = e^ln(a)/e^ln(b) = e^(ln(a)-ln(b))
Logo, ln(a/b) = ln(a)-ln(b)

a^b = a^b; e^ln(a^b) = (e^ln(a))^b = e^(b*ln(a))
Logo, ln(a^b) = b*ln(a)

ln(a)/ln(b) = z; ln(a) = z*ln(b) = ln(b^z); a=b^z; log_b(a) = z
Logo, ln(a)/ln(b) = log_b(a)

Seria trivial extender esses resultados para todas as bases, usando c^log_c no lugar de e^ln em todos os passos...

sexta-feira, 18 de junho de 2021

Deduzindo Torricelli

Usarei apenas duas fórmulas previamente conhecidas, 

 v = v0 + a*t 

 e 

 Δx = v0*t + a*t^2/2 .

Nessas fórmulas, v é a velocidade final, v0 é a velocidade inicial, t é o tempo decorrido, Δx é a distância percorrida, e a é a aceleração (constante). 

Vamos lá, que é fácil. 

 v = v0 + a*t ; a*t = v - v0 ; t = (v - v0)/a 

 Δx = v0*t + a*t^2/2 = v0*t + (v - v0)*t/2 = v0*t + v*t/2 - v0*t/2 = (v0 + v)*t/2 

 2*Δx = (v0 + v)*t = (v + v0)*(v - v0)/a ; 2*a*Δx = v^2 - v0^2 ; v^2 = v0^2 + 2*a*Δx . 

Assim temos v^2 = v0^2 + 2*a*Δx , que é a fórmula de Torricelli, como queríamos. Com ela podemos calcular as grandezas nela envolvidas sem nos preocuparmos com o tempo.