collapse

* Links de Robótica

* Posts Recentes

Autor Tópico: Cálculo Mental  (Lida 8446 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Cálculo Mental
« em: 24 de Outubro de 2008, 23:13 »
Bem, eu durante a minha licenciatura, em jeito de hobby, aperfeiçoei o meu raciocinio para contas "de cabeça".
Cheguei a 5 "resultados", 2 para cálculos de ao quadrado, dois para raizes quadradas, e um hibrido para cálculos de multiplicações, caso dê jeito.
Se revelar todos aqui no "Off-topic", gostava de começar pelo primeiro que dominei, e fazê-lo por sequência
Se quiserem aprendê-lo, força, podem ás vezes fazer show-off com isto, calculando 78.5 * 78.5 = 6162.5
Esse demorei de cabeça cerca de 10 segundos a fazer de cabeça, para terem uma noção do tempo.

Bem, vamos passar ao sumo.
Cálculos ao quadrado.

O truque consiste em aproximar para as dezenas ou centenas da seguinte forma.
Imaginemos 57 ^ 2, para começar com simples.

Criamos dois numero, subtraindo 7 e adicionando 7 ( ficando com o par de numeros 50 e 64) ou subtraindo/somando 3 (fazendo o par de numero 54 e 60).
Em vez de somando / subtraindo, vou passar a dizer como digo para mim mesmo, desviando.
Neste caso, prefiro desviar 7, para ter 50 (que é metade de 100, muito fácil de trabalhar pois divide-se por dois e multiplica-se por 100, está feito) e 64.
Multiplica-se o par 64 * 50 = 64 * 100 /2 = 32 * 100 = 3200

Depois do par desviado estar multiplicado, acrescenta-se o desvio ao quadrado, neste caso, 7.
7 * 7 = 49

3200 + 49 = 3249.

E ai está, 57 ao quadrado.
Pode parecer complicado, mas reparem bem, foi simples.
Ordem de cálculo:
1- Desviar
2- Multiplicar Par
3 - Quadrado do Desvio
4 - Somar tudo.

E agora, em poucas linhas, vou demonstrar o poder disto á séria.
78.5 ^ 2
1- Desvio = 21.5  par 57 100
2 - produto 5700
3 - Desvio foi de 21.5, fazemos um segundo desvio
3.1 - Par 20 23 Desvio 1.5
3.2 - Produto 460
3.3 - 1.5 * 1.5 = 2,25
4 - Soma 5700  + 460 + 2.25 = 6162.25

Usei duas vezes o desvio aqui em cima, mas podia ter usado uma terceira vez para o 1.5 par 1 2 desvio 0.5, mas não achei de todo necessário.
E pronto, eu consigo fazer isto agora de cabeça em cerca de 10 segundos.

Quando "descobri" isto, apercebi-me que era apenas o caso notável do 12º ano de mat,

(A - b ) ( A + b ) = A^2 - b ^2 <=>
<=> A^2 = (A - b) ( A + b) + b^2
Que, para quem ainda nao viu bem, é neste meu caso:

Numero^2 = (Numero + desvio) (Numero - desvio) + Desvio^2

Uso o desvio aproximando á dezena / centena / milhar / ... para ser fácil de calcular (é só acrescentar zeros), e as contas tornam-se RIDICULAMENTE fáceis.

E prontos pá, é este o meu primeiro método. Vou ver como é a aceitação pela vossa parte.
Atenção, não meti nenhum desses numeros na calculadora, por isso pode ter erros.
Mas não vou meter, arrisco-me a esse ponto.
Também se errar errei, que se lixe.

Quando perceberem o método, experimentem 99.5 ^2  e 75 ^2.

Meti isto no off topic, a ver vamos se os admins o aceitam.
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.215
    • Tiago Rodrigues
Re: Cálculo Mental
« Responder #1 em: 25 de Outubro de 2008, 01:27 »
A esta hora não tenho os cores todos ligados... acho que o teco ou o tico já foram dormir... Mas achei bastante interessante, e que conseguiste explicar-te até bastante bem, principalmente para o nível de complexidade.

Quem sabe até seja um bom método a algoritmizar, como alternativa ao Math.pow(num,exp)

Quando tiver tempo leio a documentação para ver como está feito a baixo nível, e se é ou não interessante implementar a fim de optimizar as maquinas... no fundo elas são feitas por nós... e as principais evoluções encontram-se nas optimizações dos conceitos já idealizados.

Movi para a secção de ideias, embora não seja directamente robótica, pode ser aplicada a esta, e é bastante interessante.

Obrigado por partilhares mer  ;)

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Re: Cálculo Mental
« Responder #2 em: 26 de Outubro de 2008, 21:27 »
Não me parece que isto seja de todo util á informática.
É mesmo só para cálculo mental, visto que fazem-se mais contas por este método, acho eu de que.
O people não está a dizer nada.
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.215
    • Tiago Rodrigues
Re: Cálculo Mental
« Responder #3 em: 26 de Outubro de 2008, 21:39 »
Depende de que contas se trata, só analisando o código e imaginando o baixo nível é que se pode ver qual dos dois é mais eficiente :roll: )

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Re: Cálculo Mental
« Responder #4 em: 03 de Novembro de 2008, 23:24 »
Segundo método.
Este é para cálculo de quadrados também.

41.3 * 41.3

(A + b) * ( A + b ) = A^2 + 2 Ab + b^2
Note-se que o b pode ser negativo, tal como o A
Eu chamo ao b a aproximação (sub entendido, aproximação na base, ou na raiz) e o A a base. Sabe-se lá porquê.

Sabemos um numero perto do 41.3 ao quadrado, que é o 40 ao quadrado.

A = 40
40 * 40 = 1600, básico

depois 2 Ab
Vou escolher b = 1

2 * 1 * 40 = 80

+ 1 * 1 = 1
Logo temos que
41^2 = 1600 + 80 + 1 = 1681

para fazer 41.3 agora, tenho o 41 ao quadrado, portanto
A = 41
41 * 41 = 1681
b = 0.3
2Ab = 41 * 2 * 0,3 = 41 * 2 * 3 / 10 = 246 / 10 = 24.6
+ b*b
0,3 * 0,3 = 0,09, básico

41.3 ^2 = 1705.69

E pronto é assim

Num faz-se o desvio, neste faz-se a proximação.

Duma forma muito rápida, fica aqui um dificil, 1399 ^ 2

A= 1400 = 14 * 100
b = -1

A^2 = 1960000
2ab = -2800
b^2 = 1
1957201

Qualquer coisa errada postem.
« Última modificação: 05 de Novembro de 2008, 11:51 por mermerchin »
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Re: Cálculo Mental
« Responder #5 em: 03 de Novembro de 2008, 23:26 »
Apeteceu-me meter um com a base a -5

45 ^2
A = -5
b = 50
----
A^2 = 25
2Ab = -500
b^2 = 2500

45 ^2 = 2025
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.215
    • Tiago Rodrigues
Re: Cálculo Mental
« Responder #6 em: 04 de Novembro de 2008, 19:09 »
.... quando dizes "básico"... eu compreendo porque é que tenho tanta dificuldade a matemática... porque para mim só lá vai com uma Texas ou Casio :P

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Re: Cálculo Mental
« Responder #7 em: 07 de Dezembro de 2008, 12:51 »
Hoje acordei e apeteceu-me postar mais um.
Por isso vou postar o meu 3º auxiliar de cálculo que eu uso comummente quando dele necessito.
Este é básicamente o outro de que já vos falei, mas mesmo assim eu considero-o um método diferente porque há que pensar ao contrário.
ENTAO CÁ VAI!
 Um fácil para percebermos a ideia,
79 * 123.
Para o olho mais observante, apercebo-me que 79 é 101 - 22 e 121 = 101+22

portanto, calculando 79*123 tenho
(a-b)(a+b) = a^2 -b^2

Logo, facilmente fazemos estas contas de cabeça,
101 ^ 2 = 10201, é mesmo básico este, visto que que 11 ^2 = 121 e como tem um zero no meio entao aparecem os outros dois zeros, naturalmente.

b^2 =  22 ^ 2
que é 20*24 + 2^2 = 480+4=484 pois,
então rapidamente vemos que 79*123= 10201-484 = 9713

Tenho de ir ver naruto, adeus pessoal.

EDIT: Eu relembro-vos que fiz isto de cabeça enquanto escrevia e por isso peço desculpa por qualquer erro de cálculo.

Até a uma próxima (que será a primeira de raizes, mas nao me apetece postar agora)
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.215
    • Tiago Rodrigues
Re: Cálculo Mental
« Responder #8 em: 07 de Dezembro de 2008, 13:03 »
Pois, acho que me fico por analise matemática, realmente há quem tenha jeito para letras, outros para números, eu acho que tenho jeito para... (quem souber que avise :P)

Obrigado por partilhares Mer, quando me sentir inspirado vou estudar o caso na esperança de atingir.

Offline mermerchin

  • Mini Robot
  • *
  • Mensagens: 50
Re: Cálculo Mental
« Responder #9 em: 07 de Dezembro de 2008, 23:18 »
Estou a ver-vos a dizer:
"E lá está o Mer a não dizer nada que o pessoal já não saiba. Casos notáveis? Isso está mais que sabido"

Então para vocês que dizem isso, cá vai.
4º Método

Eu quando considerei completo o estudo dos quadrados, decidi usar as luzes que tinha adquirido nos quadrados e aplicá-las á função inversa.
Foi um erro e tanto, pensar que isso podia ser feito. Mas com o tempo ganhei outras luzes, e hoje em dia não consigo pensar nas palavras "Raiz quadrada" como pensava antes. Nem em quadrados. Quando penso neles, vejo um desenho, que talvez um dia ponha na web para vos mostrar. Não é nada de mais, mas dá para perceber os métodos de que falei-vos de uma maneira MUITO mais rápida.

Mas isso posto depois, agora tomem um algoritmo que não é meu, mas visto ser mais dificil do que aquele que sei que é meu a 100% (não o encontrei na net, apesar de ter uma lógica semelhante a este método que vos apresento neste post).

Aqui está o MÉTODO BABILÓNICO, que é usado para calcular raizes, de uma forma bastante... cruel para a mente e cálculo mental, mas pronto.

Imaginem que querem raiz de 200.
Peguem num numero qualquer (de preferencia um numero redondo [quer dizer que acaba em 0, e tem a maior simplicidade possivel] )

Entao vamos, raiz de 200.
Vou pegar no numero 10
200/10 = 20
20 + 10 = 30
30/2 = 15

Reparem que 10^2=100 e 15^2 = 225
Ficámos mais perto da raiz de 200
Agora 200/15 = 150/15 + 50/15 = 10+3+5/15 =13.3333333

Reparem que a partir daqui eu não conseguia fazer de cabeça por este método.

13.33333 + 15 = 28.33333
28.3333 / 2 = 14.166666
14.16666 ^2 = 10*18.333333 +  4.16666 ^2 = 183.333333 + 4*4.333333333 + 0.16^2 = 183.333333 + 17.333333 + 0.0256 = 200 + 0.66666 + 0.0256

como vêem, com 2 calculos ficamos com uma raiz MUITO precisa, sendo a raiz o 14.166666

Atenção: ambos os métodos das raizes dão SEMPRE estimadores MAIORES do que a verdadeira raiz por isso se quisessem usar um numero abaixo de 15 que fosse mais fácil de calcular, mas acima de 13.3333 para a próxima iteração poderiam e deviam fazê-lo, porque fazem mais rápido e fácilmente, sem prejuizo de exactidao porque o estimador virá SEMPRE acima da raiz, e mais preciso.

Exemplo: raiz de 82 (repare-se que 9 é a raiz de 81, mas vou usar 10 para demonstrar o que quero dizer)

82/10 = 8.2
8.2+10 = 18.2
18.2/2 = 9.1

Agora vou usar um numero entre 8.2 e 10, que por acaso vai ser..... 9!!!!
82/9 = 9.1111111111
9+9.111111= 18.11111
18.11111111 / 2 = 9.0555555
A raiz 9.05555555  deve estar lá perto.

9.055555555 ^2 = 9.11111111*9 +0.05555555^2 = 81.9999999 +  0.0555555 > 81, mas por pouco, vejam na calculadora quanto é , porque tenho de ir embora agora.
Desculpem, abraços e até á próxima.
[color="#009900"]Exc[/color][color="#000099"]elle[/color][color="#993399"]

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.627
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:Cálculo Mental
« Responder #10 em: 23 de Fevereiro de 2009, 15:45 »
99.5^2=999.75? foram 5 segundos de :O wtf?  e 75^2 não sei tentar sequer...

EDIT: ai não eskece! 100x100 são 10000 deu-me 1000 á bocado xD

então... ermmm 9999.75? lol :S
« Última modificação: 23 de Fevereiro de 2009, 15:47 por little resources »

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Cálculo Mental
« Responder #11 em: 24 de Fevereiro de 2009, 22:23 »
Merm quanto tiveste a matemática? ;)
Tr3s
Daniel Gonçalves

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.627
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:Cálculo Mental
« Responder #12 em: 24 de Fevereiro de 2009, 22:43 »
Merm quanto tiveste a matemática? ;)

15.7 :S

o prof diz que chegava a 20 mas estou sempre distraído... e fiz o exame em 20 minutos xD

Offline DanBar

  • Mini Robot
  • *
  • Mensagens: 685
    • iCAR Lusorobotica Blog
Re:Cálculo Mental
« Responder #13 em: 25 de Fevereiro de 2009, 09:52 »
Já que estão com a pedalada...

Ajudem-me neste:

Analog Signal -> Alcohol Value

O meu sensor Alcohol (com uma resistencia fixa de 10K) dá-me um valor de 30...40 ao ar e 700...800 com alcohol etilico.

Bebi uma cerveja e deu-me um valor de 50...60.

Fiz uma rotina para calibrar o sensor inicialmente ao ar assim:

Código: [Seleccione]
void Calibration() {
  // signal the start of the calibration period
  digitalWrite(LedPin, HIGH);
  // calibrate during the first five seconds
  while (millis() < 5000) {
    AnalogVal = analogRead(AnalogSensor);
    PrevAnalog=AnalogVal;
    // Serial.println(AnalogVal); // Debug
    // record the maximum sensor value
    if (AnalogVal > AnalogMax) {
      AnalogMax = AnalogVal;
      //WriteEEPROM(E_AnalogMax,AnalogMax);
    }
    // record the minimum sensor value
    if (AnalogVal < AnalogMin) {
      AnalogMin = AnalogVal;
      //WriteEEPROM(E_AnalogMin,AnalogMin);
    }
  } 
  // signal the end of the calibration period
  PrevAnalog = map(PrevAnalog, AnalogMin, (1023-AnalogMin), 0, 100); //  depois disto le valores entre 0 a 100
  digitalWrite(LedPin, LOW);
}

Agora necessito de ajuda para converter os valores de 0 a 100 em valores tipo 0.00 a 100.00

para quando em suprar com um cerveja por exemplo dar um valor tipo 0.10  ::)
Antigo Nick do Forum: iCAR

Projectos iCAR
icar.lusorobotica.com

DB@G
http://www.facebook.com/daniel.barradas

Offline tr3s

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 811
  • char x=1, y=5; x^=y^=x^=y;
Re:Cálculo Mental
« Responder #14 em: 25 de Fevereiro de 2009, 14:37 »
Essa questão já é um pouco off-topic mas não faz mal :P o Fifas dps move :P!

A resposta é a seguinte:
Esses sensores não vêm calibrados (e daí o preço deles). Antes de os começares a usar como sensores de onde podes concluir a taxa de alcolémia de determinado ambiente/individuo, necessitas de os calibrar, isto é, saber a que valores de output, dados pelo sensor, corresponde em concentração de alcool no ambiente/individuo.
Para os calibrar para o que queres fazer podes pegar aí nuns 10 amigos e dizes para irem todos beber umas cervejas, se todos beberem a mesma quantidade da mesma cerveja e tiverem todos mais ou menos a mesma estatura consegues traçar um gráfico, a característica desse gráfico é a resposta do teu sensor. Se conseguisses deitar mão a um sensor daqueles que a polícia usa podias então fazer o mesmo e assim fazer uma correspondência de modo a que programando correctamente conseguisses ter um sensor de alcolemia como pretendes.

Se quiseres fazer tudo de uma forma mais arcaica e menos precisa/confiável é aplicares uma regra "três simples"
se:
    700/800 -------- 1 = 100% alcool
      50/60   -------- x =  x% de alcool

Tr3s
Daniel Gonçalves