Mostrando postagens com marcador matemática. Mostrar todas as postagens
Mostrando postagens com marcador matemática. Mostrar todas as postagens

quinta-feira, 9 de agosto de 2012

A beleza da Matemática

Tente memorize o seguinte padrão por 1s



Tente escrever o número 36 neste padrão.

O nosso cérebro tem uma limitação de memorizar padrões aleatórios e desorganizados.
 

O papel da matemática é encontrar um padrão/organização e extrair propriedades subjacentes destes padrões.


Agora, veja essa organização do padrão.



Matemática na Babilônia

Umas das contribuições da Babilônia para a Matemática foi um sistema de numeração sexagesimal (base 60) e posicional (a posição dos  algarismos muda seu valor). Com esse sistema, os babilônios podiam contar até 60 usando apenas a mão. O sistema consistia em contar as falanges dos dedos da mão direita, utilizando o polegar,
totalizando doze falanges (três falanges em quatro dedos), com os
cincos dedos da mão esquerda, contam-se as dúzias totalizando cinco dúzias, ou seja, 60. De quebra, o sistema de númeração tinha um número elevado de divisores (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30 e 60).  Esse fato permitia que uma grande variedade de frações (todas as frações com o denominador tendo 2,3 ou 5 como fatores primos) pudessem ser representada exatamente.






O sistema sexagesimal ainda está em uso para a contagem do tempo e na medidas de ângulo.

quarta-feira, 14 de março de 2012

Feliz dia do pi 2

Uma maneira mais fácil de calcular o número pi seria contando quantos pontos caem dentro de um círculo inscrito em um quadrado.


Sugestão enviada por David Sena :)


Como a quantidade de pontos dentro de um quadrado é igual a cardinalidade dos reais. Podemos utilizar duas estratégias:

1) Desenvolver um algoritmo que escolhe pontos aleatórios dentro do quadrado e conta quantos pontos caem dentro do círculo com raio 1 com centro no ponto (0,0) inscrito no quadrado.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(){
  int n;
  int cont;
  double x;
  double y;
  while(1){
    printf("Entre com quantidade de pontos escolhidos:");
    scanf("%d",&n);
    cont = 0;
    srand ( time(NULL) ); 
    for(int i=0;i<n;i++){
      x = (double)rand()/RAND_MAX;
      y = (double)rand()/RAND_MAX;  
      if(x*x + y*y <= 1 ) cont++;
    }
    printf("%lf\n",(4.0*cont)/n);    
  }
} 


Execução do Algoritmo:
Entre com quantidade de pontos escolhidos:100
3.240000
Entre com quantidade de pontos escolhidos:1000
3.128000
Entre com quantidade de pontos escolhidos:10000
3.157200
Entre com quantidade de pontos escolhidos:100000
3.142200
Entre com quantidade de pontos escolhidos:1000000
3.140468
Entre com quantidade de pontos escolhidos:10000000
3.141982
Entre com quantidade de pontos escolhidos:100000000
3.141579
Entre com quantidade de pontos escolhidos:1000000000
3.141509
Entre com quantidade de pontos escolhidos:2000000000
3.141525
1) Desenvolver um algoritmo que analisa todos os pontos inteiros dentro do quadrado de lado 2*r e conta quantos pontos caem dentro do círculo com raio r com centro no ponto (0,0) inscrito no quadrado.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>


int main(){
  int r;
  int cont;
  int total;
  
  while(1){
    printf("Entre o raio do circulo:");
    scanf("%d",&r);
    
    total = 0;
    cont = 0;
    
    for(int i=-r;i<=r;i++){
      for(int j=-r;j<=r;j++){
        total++;
        if(i*i + j*j <= r*r) cont++;
      }
    }
    
    printf("%lf\n",(4.0*cont)/total);    
  }
  system("PAUSE");
  

}

Execução do algoritmo:

Entre o raio do circulo:10
2.875283
Entre o raio do circulo:100
3.110517
Entre o raio do circulo:1000
3.138410
Entre o raio do circulo:10000
3.141276

Apesar da complexidade do segundo algoritmo ser muito maior, podemos brincar um pouco com a simetria do círculo inscrito no quadrado.





#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main(){
  int r;
  long long cont;
  long long total;
  while(1){
    printf("Entre o raio do circulo:");
    scanf("%d",&r);
    total = 0LL;
    cont = 0LL;
    for(int i=0;i<=r;i++){
      for(int j=0;j<=i;j++){
        total++;
        if(i*i + j*j <= r*r) cont++;
      }
    }
    printf("%lf\n",(4.0*cont)/total);    
  }
  system("PAUSE");
}


Execução do Algoritmo:
Entre o raio do circulo:10

2.969697
Entre o raio do circulo:100
3.116288
Entre o raio do circulo:1000
3.138961
Entre o raio do circulo:10000
3.141331

Feliz Dia do pi

No dia 14 de março é comemorado o dia do π (3/14 1:59),  esse dia e hora foram escolhidos porque formam os primeiros dígitos do número π
π =3.14159265358979323846264338327950288419716939937510...

O π é um número bastante especial.  O π é irracional, ou seja, o valor do π não pode ser expresso exatamente como uma fração com numerador e denominador inteiros. 

O π também é transcendental, ou seja, π não é raiz de nenhuma equação polinomial com coeficientes racionais.Por exemplo,  é irracional mas não é transcendental uma vez que é raiz da seguinte equação polinomial com coeficientes racionais


P(x) = x2-2


As pessoas normais comemoram o dia do π fazendo uma torta.



Nós vamos comemorar o dia do π calculando o π de uma maneira diferente :)

Dado um par de números escolhidos a partir de uma coleção de números aleatórios, a probabilidade desses dois números não terem nenhum fator em comum, ou seja, serem primos entre si é aproximadamente



Vamos fazer um programa para gerar uma coleção de números aleatórios e depois calcular a probabilidade de dois números escolhidos serem primos entre si.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int mdc(int a,int b){
  int r;
  while(b!=0){
    r = a%b;
    a=b;
    b=r; 
  }
  return a;
}

int main(){
  
  int i,n;
  int v[32767];
  int cont,total;
  
  
  
  while(1){
  
  printf("Entre com n:");
  scanf("%d",&n);
  
  if(n==0) break;
  
  //inicializando  a semente para a
  //geracao dos numeros aleatorios
  srand ( time(NULL) ); 
  
  //rand() gera um número aleatorio entre 0 e RAND_MAX
  //RAND_MAX=32767
  
  //gerando n numeros aleatorios
  for(i=0;i<n;i++) { 
    v[i] = rand();
  }
  
  cont = 0;
  total = 0;
  for(int i=0;i<n;i++)
    for(int j=i+1;j<n;j++){
        total++; //total de pares escolhidos
        if( mdc(v[i],v[j])==1) cont++; 
        //quantidade de numeros primos entre si
    }
  printf("%lf\n", sqrt((6.0*total)/cont));   
  }  
  
}


 
Execução do Algoritmo:
Entre com n:100
3.185965
Entre com n:1000
3.094160
Entre com n:10000
3.147962
Entre com n:20000
3.126466
Entre com n:0
 
 
Você pode ver também:
http://oeis.org/A000796