Função "Temporizador" em C
Exemplo simples em compilação normal. A função lê um instante do sistema e divide o valor pelo número de ciclos de execução da máquina para calcular tempo. Depois faz isto por uma segunda vez dentro de um laço (loop). Quando a diferença entre a segunda e a primeira leitura for igual a um valor fornecido em segundos à função, o loop se encerra e a função termina. Deste modo, durante a execução da função passou-se este tempo em segundos. Igual à sleep em Bash.
Por: Perfil removido
Cálculo de logaritmo de um número por um terceiro método em C
Este é um terceiro método de cálculo de logaritmos e o curioso é que sempre são necessários os mesmos números de passos para o cálculo. Bem diferente do que cito como métodos "A" e "B". Não é nada inovador e é do tipo de coisa vista num curso escolar sobre a matéria. Detalhes no código. Não precisa de derivadas. Apenas saber raiz quadrada. O que significa que dá prá fazer com o auxílio de uma calculadora do tipo que não é científica e algumas anotações caso esta calculadora tenha restrição de memória. Portanto a precisão e o custo computacional estão ligados diretamente ao algoritmo de raiz quadrada usado. Ele usa o mesmo método quese usa para saber quantas casas decimais ou quantos bits tem um número. Ao se escrever um número de binário para decimal, são usadas somas de potências de 2 e *** qualquer número é uma soma de potências não-repetidas de 2. Como se faz mesmo? Divide-se por 2 repetidas vezes e anotam-se os restos, 0 e 1 alternados que serão os dígitos de escrita. Por exemplo: 32 = 2 elevado à 5. São feitas 5 divisões por 2. Por acaso esse 5 é o expoente e o logaritmo. Para 33 = 2 elevado à 5. mais 1. A diferença é que sobrou 1. Se a parte inteira desse logaritmo de 33 base 2 é 5 e pôde ser calculada, então não existiria algo a ser feito com esse 1 que sobrou prá saber qual é o logaritmo de 33 base 2 fracionado? A resposta é sim. Numa divisão, divisão mesmo, quando o resto é maior que o número prá se dividir, coloca-se a vírgula e vão sendo colocados zeros quando não se consegue dividir. Se o objetivo era o de descobrir quantos 2 existiam dentro de 33, agora esse objetivo deve ser mudado porque 2 já não é possível com o resto 1. Agora deve-se descobrir quantas "raiz quadradas de 2" existem neste resto. Dividir o resto por sqrt(2) quantas vezes for possível, contar quantas divisões foram feitas e colocar após a vírgula colocada após o cinco. E quando o resto for de novo menor que o teste, que é "raiz quadrada de 2", muda se de novo o teste. Muda-se para "raiz quadrada da raiz quadrada" de dois. Também chamada de a "raiz quarta". Faz-se a mesma coisa: contam-se o número de divisões e anota-se na casa decimal seguinte à da última contagem. O único problema é que este método depende do sistema de numeração adotado. Esse exemplo citado acima foi para base 2. Para fazer com base 10, precisa trabalhar com "raiz décima". E agora? Da mesma forma que inteiros são representados por somas de potências de dois, fracionários também podem ser representados. Representados por somas de potências de 0.5 (ou 1/2). Ficaria a sequência: 1/2, 1/4, 1/8, 1/16, 1/32... 1/2 = 0.1 binário 1/4 = 0.01 binário 1/8 = 0.001 binário 1/16 = 0.0001 binário 1/32 = 0.00001 binário Da mesma forma que existem decimais de casas infinitas, existiriam binários de casas infinitas. No caso do teste de divisão existiriam duas hipóteses: "dá prá dividir" o resultado da divisão é 1 "não dá prá dividir" o resultado da divisão é 0 Sempre havendo resto. Se fosse prá escrever em binário de baixo nível na memória, bastava deslocar uma casa tipo "x >> 1" em ponto flutuante e inverter o bit, mas parece que em C não há como e ainda não me inteirei do que poderia ser feito. Ainda. Então o jeito é somar potências de (1/2) decimais numa variável conforme o resultado da divisão seja 0 ou 1. O expoente da potência somada corresponde à casa fracionária binária. Fiquem à vontade para sugestões, dúvidas ou apontar erros e simplificações.
Por: Perfil removido
Cálculo de logaritmo de um número por Método de Newton-Raphson em C
A descrição vai ao código. Este método, também como o algoritmo "A", necessita da definição do que é uma derivada. Ele é bem mais simples de implementar que Séries de Taylor e possui um custo computacional bem menor também. O problema é a necessidade de um valor inicial, que é aproximado a cada iteração. Deste valor depende a veloidade de mais ou menos iterações. Grosseiramente o método funciona por uma fórmula F(x) onde se começa com o valor x0. Depois continua-se com x1=F(x0) e segue: x2=F(x1) x3=F(x2) x4=F(x3) ... Até o último valor x_ obtido ser muito igual com o último valor x_ que entrou. Para saber como é essa fórmula F(X) é que é necessário saber algo de derivadas. Qualquer erro encontrado ou dúvida, fiquem à vontade.
Por: Perfil removido
Cálculo de logaritmo de um número por Série de Taylor em C
A descrição vai ao código. Ainda não sei um modo simples de dizer o que seria uma derivada, que é algo a ser usado neste algoritmo. O que faz parte da teoria sobre Séries de Taylor. Portanto entender a fórmula da Série não é o problema, mas o porquê de ter sido escrita daquela forma. Existe uma fórmula T(x) chamada de "Termo Geral". Calcula-se um valor para cada número natural (0, 1, 2, 3 ... ) inteiros não-negativos nessa fórmula em ordem crescente Os valores são somados de forma acumulativa: T(0) + T(1) + T(2) + T(3) + ... Quanto mais se calcule e se soma, maior a precisão. Porém demora bastante. O custo computacional é maior que o de outros métodos. Requer muitos passos para um resultado preciso. Para se entender como foi feita essa fórmula de termo geral T(x) é que se precisa saber derivadas. Qualquer erro encontrado ou dúvida, fiquem à vontade.
Por: Perfil removido
Algoritmo de Fatoração de Fermat (FFA) em Perl
FFA: Fermat Factoring Algorithm (Algoritmo de Fatoração de Fermat) Método de fatoração inventado por Pierre de Fermat: Todo numero pode ser escrito como diferença de dois números elevados ao quadrado: n = a² - b², ou n = a*a - b*b; Esta expressão pode ser escrita como n = (a+b) * (a-b), ou n = (a+b) (a-b), onde a soma e a subtração dos valores "a" e "b" são dois fatores do número em questão. Se n é primo, então a-b = 1 e a+b=n; Para números com diversos fatores e divisores existem diversos "a" e "b" que satisfazem a expressão. Este algoritmo testa em progressão diversos valores "b" em "i + j*j", ou i + j², com i=n no primeiro passo. Se i + j*j for um quadrado perfeito, então calcula-se com base nisto os correspondentes a e b da expressão anterior, tendo-se então encontrado um fator. Fator este que não é necessariamente um número primo. Este programa trabalha com os fatores sendo escritos em uma lista, sendo pegos um a um até o final. A função de fatoração retorna uma estrutura com um par de números que se multiplicados retornam o valor de entrada, ordenados em maior e menor. No retorno, a parcela menor substitui a posição do elemento pego anteriormente e a parcela maior é inserida ao fim da lista principal. Quando o valor menor do par é um, o valor maior é um número primo, então continua-se com o próximo elemento da lista principal, encerrando-se ao último elemento. Por último, a lista de fatores é ordenada para apresentação. Obs[1]: Ainda é possível melhorá-lo. Obs[2]: Números negativos são desconsiderados para simplificação. Por enquanto.
Por: Perfil removido
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problemas ao instalar o PHP (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (0)
Não tô conseguindo baixar nada pelo terminal (5)
Wifi parou de funcionar no Inspirion N4050 com Debian 12 (1)