Algoritmo de Briot-Ruffini

Algoritmo de Briot-Ruffini, por vezes denominado apenas como regra de Ruffini, é um método de resolução de frações polinomiais, criado por Paolo Ruffini. Esse algoritmo consiste em efetuar a divisão fazendo cálculos apenas com coeficientes e só serve para divisões de um polinômio por um binômio da forma .

Paolo Ruffini

As divisões de polinômios por binômios, como por exemplo: , e , surgem em problemas de matemática mais frequentemente do que quaisquer outras divisões de polinômios e desempenham papel importante na pesquisa de zeros de funções e na resolução de equações.

Exemplo

editar

Divisão de um Polinômio por xa

Seja:

 
 

Queremos dividir P(x) por D(x) usando a regra de Ruffini. Primeiro observamos que D(x) não é um binômio da forma xa, mas da forma x + a. Então reescrevemos D(x) deste modo:

 

Agora aplicamos o algoritmo:

1. Transcrevemos os coeficientes e a. Note que, como P(x) não contém um coeficiente para x, então escrevemos 0:

    |     2     3     0     -4
    |                                    
 -1 |                                    
----|---------------------------
    |                                    
    |

2. Passe o primeiro coeficiente

    |     2     3     0     -4
    |                                    
 -1 |                                    
----|----------------------------
    |     2                              
    |

3. Multiplique-o por a:

    |     2     3     0     -4
    |                                    
 -1 |          -2                         
----|----------------------------
    |     2                              
    |

4. Some os valores da coluna:

    |     2     3     0     -4
    |
 -1 |          -2
----|----------------------------
    |     2     1
    |

5. Repita os passos 3 e 4 até a última coluna:

    |     2     3     0     -4
    |
 -1 |          -2    -1      1
----|----------------------------
    |     2     1    -1     -3
    |    {coeficientes}   {resto}


 , onde
  e  

isto é,

 

Exemplo de código fonte

editar
import java.util.Scanner;

public class BriotRuffiniAlgorithm {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.print("Digite o grau do polinômio: ");
        int degree = input.nextInt();
        
        double[] coefficients = new double[degree + 1];
        System.out.println("Digite os coeficientes do polinômio, do termo de maior grau ao termo de menor grau:");
        for (int i = degree; i >= 0; i--) {
            System.out.print("x^" + i + ": ");
            coefficients[i] = input.nextDouble();
        }
        
        System.out.print("Digite o valor de x para avaliar o polinômio: ");
        double x = input.nextDouble();
        
        double[] result = briotRuffini(coefficients, x);
        
        System.out.print("Resultado: ");
        for (int i = 0; i < result.length; i++) {
            System.out.print(result[i]);
            if (i < result.length - 1) {
                System.out.print(", ");
            }
        }
        
        input.close();
    }
    
    public static double[] briotRuffini(double[] coefficients, double x) {
        int degree = coefficients.length - 1;
        double[] result = new double[degree];
        
        result[0] = coefficients[degree];
        for (int i = degree - 1; i > 0; i--) {
            result[i] = coefficients[i] + x * result[i - 1];
        }
        
        return result;
    }

}

Ver também

editar