Probleminha em codigo

dae galera =D
tranquilo? Eu estou fazendo um programa que calcula uma certa função pelo método da bisseção. O problema é que depois que ele faz o primeiro while ele volta a assumir os valores de a e b iniciais que são 0 e 1. E eu gostaria que ele assumisse os novos valores que eu dei, que foram: b = xisMedio e o a sim continuar = 0.

Qual o erro no codigo?

========================================

import javax.swing.*;

public class Bissecao {

	public static void main (String[]Args){
		
		
		double erro, E = 0.0001, c, d, xisMedio = 0, fMedio, produto, alfa;
		double a;
		double b;
		
		a = 0;
		b = 1;

		c = f(a);
		d = f(b);
		
		erro = Math.abs(b-a);
		
		
		while (erro > E) {
			xisMedio = a + b/2;
			fMedio = f(xisMedio);
			
			if (fMedio == 0){
				alfa = xisMedio;
				erro = 0;
				System.exit(0);
			}
			
			produto = fMedio*c;
			if (produto < 0){
				b = xisMedio;
				d = fMedio;
			} else
			{
				a = xisMedio;
				c = fMedio;
			}
			
			erro = Math.abs(b-a);
		}
		JOptionPane.showMessageDialog(null, "O resultado é " + xisMedio);
	}

	private static double f(double x) {
		double funcao;
		funcao = Math.exp(x)*Math.sin(x) - 1;
		return funcao;
	}

}

========================================

cara mas só tem 1 while no teu programa

Mas enquanto o erro for maior que o E ele tem que seguir fazendo o que tem dentro do while. Não é isso?

Ele realmente segue fazendo. Só que não atribui valores novos as variaveis que teriam que mudar. No caso o b teria que mudar de 1 para o valor de xisMedio.

Eu me expressei errado. É a primeira vez que ele passa pela condição do while =P

Ele vai passando por essa condição até ela ser satisfeita. mas… ao invés de pegar os valores novos da variavel b, ele segue com o valor inicial = 1.

ninguem sabe qual seria o problema?

achei que fosse algo simples =P

No caso o produto nunca esta dando menor do que zero, veja se esse seu calculo de produto esta certo

esta entrando em um laço infinito…nunca sai do while

.

dae gente =D
valeu pelas ajudas de todos…

o programa funciona corretamente sim. o único erro que havia é que na hora de calcular o xisMedio = a-b/2 eu esqueci de colocar os parenteses…

o certo é (a-b)/2…
auhahuauhahua

altos erro idiota =P

abraços. ja ta resolvido e funcionando =)