Pesquisar neste blog

08/02/2018

Algoritmo Método da Bisseção C/C++ / Java

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <cstdlib>
using namespace std;

float funcao(float var){

return (pow(var, 3))-2*var;
}

int main(){
float a, b, aux, Erro = 0.01, iteracoes, xm, xx, Errox, Raiz;
int i= 0, k, j;
double fa, fx, fax;

    printf("\t\t\tALGORITMO DA BISSECCAO\n\n");
    printf("\t\t\tAlunos: Henrique, Dhejck");

printf("\n\n\tDigite o intervalo A: ");
scanf("%f", &a);
printf("\n\tDigite o intervalo B: ");
scanf("%f", &b);

//calculando a quantidade de iterações de acordo com a formula
iteracoes = (log10(b-a)-log10(Erro))/log10(2);
printf("\n\tNumero de Interacoes = %.1f \n\n", iteracoes);


printf("\nITERACOES: A(n) B(n)   X(m)     Erro   F(a)   F(xm)     F(a).F(xm)");
for(int i=i+1; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;

Errox = b-a;

printf("\nIteracao: %d   %.4f   %.4f    %.4f    %.4f    %.2f %.2f   %.2f", i, a, b, xm, Errox, fa= funcao(a), fx= funcao(xm), fax= funcao(a) * funcao(xm));

if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}
else{
a = xm;
b = b;
}
}

printf("\n\n\tRAIZ = [%.4f]: apos %d Iteracoes com 4 casas decimais\n\n\n", xm, k);
printf("\n\n\Q1= %f", funcao(a));
//printf("\n\nFunc = %.5f\n\n",func(a));

system("PAUSE");
return (0);
}

EM LINGUAGEM JAVA

package trabalho.pkg2.bissecao;
import java.io.PrintStream;
import static java.lang.Math.log10;
import static java.lang.Math.pow;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
     
        double a, b, xm, Erro= 0.01, iteracoes, Errox;
        double fa, fxm;
        int i = 0, k = 0, cont = 0;
     
        System.out.println("\tALGORITMO DA BISSECÇÃO:");
        System.err.println("\tAlunos: Henrique\n");
     
        System.out.printf("Digite o intervalo A: ");
        a = input.nextDouble();
     
        System.out.printf("Digite o intervalo B: ");
        b = input.nextDouble();
     
        xm = (a+b)/2;
     
        iteracoes = (((log10(b-a))- log10(Erro)) / log10(2));
        System.out.printf("\nNúmero de iteracoes = %.1f \n",iteracoes);
     
        System.err.println("\tIterações: A(n)    B(n)      X(n)      Erro(n)    f(a)     F(xm)");
     
        if(xm == 0){
            System.out.println("Raiz = 0 ou possui mais de 1 raiz");
        }else{
            for(i= i+0; i <= iteracoes +1; i++){
                k = i+0;
                xm = (a+b)/2;
                Errox = b-a;
             
                System.out.printf("\nIterações: %d    %.2f       %.2f      %.2f      %.2f       %.2f    %.2f", i, a, b, xm, Errox, fa= funcao(a), fxm=funcao(a)*funcao(xm));
             
                if(funcao(a)* funcao(xm) < 0){
                    a = a;
                    b = xm;
                }else{
                    a = xm;
                    b = b;
                }
            }
        }
        System.err.println("Raiz = "+xm+" após "+k+" iterações:\n");
    }
    public static double funcao(double x){
        return pow(x, 3)-2*x;
    }
}





Nenhum comentário: