Skip to content

Tag: Métodos Numéricos

Métodos Numéricos para resolução de sistemas lineares

Seja um sistema

Sistema

podemos escreve-lo na forma matricial A·x = b

Matriz sistema

onde:

  • A é a matriz de coeficientes,
  • x é a matriz de incógnitas,
  • b é a matriz de termos independentes.

Triangular superior: Se tivermos a forma matricial A’·x = b, onde A’ é uma matriz triangular superior

matriz triangular superior

Logo xn = bn/an,m . Com xn em mãos podemos achar xn-1 e assim por diante.

O método de Gauss para resolução de sistemas lineares e os outros métodos derivados deste, tentam transformar o sistema A·x = b em um sistema equivalente A’·x = b onde A’ é uma matriz triangular superior.

Métodos Numéricos para zeros reais de funções reais

Um resumo de revisão sobre métodos numéricos para zeros reais de funções reais. Como é um resumo não há nenhuma dedução desses métodos.

Isolamento: para um f(x) contínuo no intervalo [a,b] tal que f(a)·f(b) < 0 e que ε ∈ [a,b], onde ε é tal que f(ε) = 0.

Métodos de zeros reais de funções reais: o objetivo é encontrar um valor x o mais próximo possível de ε.

  • Escolhemos um intervalo [a,b] tal que ε∈[a,b] e f(a)·f(b) < 0.
  • No passo k encontramos uma aproximação xk (como obter essa aproximação varia de acordo com o método e é feito usando o valor da iteração anterior).
  • Fazemos um teste de parada. Se |xk+1-xk | < Ea ou f(xk) < Eb, paramos. Os valores de Ea e Eb são dados pelo problema.

Método da bisseção:

  • Iteramos fazendo biseção
  • Na próxima iteração escolhemos um novo intervalo
    • Se f(x)·f(b) < 0, então escolhemos o mesmo b e fazemos a ← x.
    • Se f(a)·f(x) < 0, então escolhemos o mesmo a e fazemos b ← x.

Método do ponto falso:

  • No passo k achamos uma aproximação ponto falso
  • Na próxima passo escolhemos novos valores para a ou b da mesmo forma que fizemos no método da bisseção.

Método do ponto fixo:

  • Encontramos uma função de iteração φ(x) tal que φ(x) = x + A(x)·f(x) com a condição que em ε, ponto fixo de φ(x), se tenha A(ε) ≠ 0.
  • xk+1 = φ(xk).

Método de Newton-Raphson:

  • Método de Newton-Raphson
  • Para que o método convirja
    • φ(x) e φ'(x) devem ser contínuas no intervalo [a,b] escolhido.
    • |φ'(x)| ≤ M < 1, ∀x ∈[a,b].

obs: Como newton-raphson é necessário calcular derivadas analiticamente, há uma boa tabela de derivadas na Wikipédia aqui.

Método da Secante:

  • Aplicamos o método de newton-raphson mas usando uma aproximação para a derivada
    Secante

Decimal para Binário

Código em C para converter um inteiro positivo em uma representação em string binária.

#include
#include
#include

char * decpbin(unsigned int n){
   int i, r, c;
   char * bin;
   bin = calloc(16,sizeof(char));
   memcpy(bin, "0000000000000000", 16);
   i = n;
   c = 0;
   while(i>0){
      r = i % 2;
      i = i/2;
      bin[15-c] = '0'+r;
      c++;
   }
   return bin;
}

int main(){
   char * dec;
   dec = decpbin(1985);
   printf("%s\n", dec);
   free(dec);
}

Compilando e Testando:

$ gcc decbin.c -o decbin
$ ./decbin
0000011111000001

No caso, ele foi feito para inteiros não sinalizados. Como um inteiro ocupa 16 bits, e não estamos gastando um bit para o sinal, o maior número que pode ser convertido é 65535. Por isso criamos a string bin com 16 casas de tamanho.

Basicamente é o algoritmo que se usa para transformar um inteiro em binário. Você pega o número, pega o resto da divisão por 2, que vai ser 0 ou 1 e usa isso para representar o bit menos significativo, ou seja, o mais a direita. Depois pega o número e divide por dois e pega novamente o resto. Fica fazendo isso até que o número dividido por 2 seja 0.