Método de falsa posição em java
No exercício iremos resolver a equação x4-8x2+6x+2=0 pelo método da Falsa-Posição, com margem de erro ℰ<=10-10 em um algoritmo implementado em Java. Como f(0)=2, f(1)=1 , f(2)=-2 tal função tem solução no intervalo [1,2].
Código Fonte
Arquivo F.java
package math.funcao;
/**
*
* Esta classe implementa a função f(x)= x^4-8x^2+6x+2
*/
public class F implements Funcao {
@Override
public double f(double x) { return Math.pow(x,4)-8*Math.pow(x,2)+6*x+2;
}
}
Arquivo Funcao.java package math.funcao; public interface Funcao { public double f(double x);
}
Arquivo Solvedor.java package math.solvedor; import math.funcao.Funcao;
/**
*
*
* Classe base dos Solvedores. Esta classe armazena uma função fx passada pelo
* construtor, de forma que seja possível
* utilizar esta classe com diferentes funções
*
*/ public abstract class Solvedor { private Funcao fx; protected double erroIdeal; protected double f(double x) { return fx.f(x); } public Solvedor(Funcao f, double erro) { this.fx = f; erroIdeal = erro; } public abstract double solva(); protected abstract boolean atingiuPrecisao();
}
Arquivo SolvedorFP.java package math.solvedor; import math.funcao.Funcao;
/**
*
*
*
* Esta classe solve uma equação f(x) = 0, com solução em [a,b], e com erro menor que epsilon * utilizando o método da Falsa-posição
*
*/ public class SolvedorFP extends SolvedorQuebras { public SolvedorFP(Funcao f, double a, double b, double epsilon) { super(f, a, b, epsilon); // TODO Auto-generated constructor stub } /** * Calculo do ponto onde ocorre a quebra, que neste método é o ponto (x,0) pertencente a reta * que passa por (a,f(a)) e (b,f(b)). Este método é reaproveitado por SolvedorFPM */ protected double getXm() { return a - ((b-a)*(fa))/(fb-fa); } @Override /** * Retorna número de operações, que para este método é da ordem de 7n */ public int numeroOperacoes() { return