Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rickygeorgel

Alguem conhece o metodo da bisseção??

Recommended Posts

para a função X^n-c=0

E[1,2]

E <=0,01

 

O resultado tinha que dar:

N An | Bn | Xn | Fxn | E

0 | 1 | 2 | 1,5 | -0,75 |

1 | 1,5 | 2 | 1,75 | 0,06250 | 0,25

2 | 1,5 | 1,75 | 1,625 | -0,35938 | 0,125

3 | 1,625 | 1,75 | 1,6875 | -0,15234 | 0,0625

4 | 16875 | 1,75 | 1,71875 | -0,0459 | 0,03125

5 | 1,71875 | 1,75 | 1,73437 | 0,0806 | 0,01563

6 | 1,71875 | 1,73437 | 1,72656 | -0,01898 | 0,00781

 

Aki ta o fonte ate onde concegui fazer mas não esta funcionando direito

/*a primeira linha ele faz direito mas quando passa para a segunda ele atribui valores

errados*/ :( http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

espero que posam me ajudar

 

muito obrigado

 

Ricardo G Georgel

 

#include <cstdlib>

#include <iostream>

#include <math.h>

 

using namespace std;

 

int main(void)

{

 

//Declaração de variaveis//

 

//variaveis da entrada de dados//

 

int n=0;

float c=0, e=1;

float ax=0, bx=0;

 

//variaveis do prossesmento//

 

int cont=0;

float emin=0, aux=0;

float pn=0, fxn=0, ax1=0, bx1=0, lixo=0;

 

//variaveis da tabela

int tab=0;

 

//entada de dados//

 

cout <<" Digite o espoente ";

cin >> n;

cout << endl << " Digite a constante ";

cin >> c;

cout << endl << " Digite o ponto A ";

cin >> ax;

cout << endl << " Digite o ponto B ";

cin >> bx;

cout << endl << " Digite a tolerancia minima" << endl;

cin >> emin;

 

//Tabela //

 

cout << "| N | Ax | Bx | Xn |Fxn |E | "<< endl;

 

for(tab = 0; tab < 55; tab++)

{

cout << "=";

}

cout << endl;

//prosesamento//

 

while(cont != 5)

{

cout << cont << " ";

ax = (pow(ax, n)-c);

cout << ax << " ";

if(ax <0)

ax =ax*-1;

bx = (pow(bx, n)-c);

cout << bx << " ";

if(bx <0)

bx = bx*-1;

 

aux = ((bx-ax)/2);

if(aux<0)

aux = aux*-1;

 

e = aux;

 

if(ax < bx)

pn = ax+aux;

if(ax >bx)

pn = bx+aux;

 

fxn = (pow(pn, n)-c);

 

cout << pn << " " << fxn << " " << e;

cout << endl;

for(tab = 0; tab < 55; tab++)

{

cout << "=";

}

cout << endl;

cont = cont +1;

if(fxn > 0)

{

bx = pn;

}

if(fxn < 0)

{

ax = pn;

}

}

system("PAUSE>>null");

return EXIT_SUCCESS;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... Nâo tô muito por dentro da matemática da coisa xD.Se você der uma esclarecida, talvez eu saiba ajudar no código.PS.: Tô vendo que funcionou, o módulo que você falou no outro tópico xD.Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

funciono sim vlw cara esse programa tinha que funcionar do seguinte modo:aux1= ((b-a)-2)o menor entre A e Be somado ao resultado obtido aux1esse e o "pn" ou "Xn" esse valor e jogado na função X^n-Cse o numero der negativo (-) An = Xnse o numero for positivo (+) bn = Xn e a operação recomeça ate o E ser = ou < que o limite de tolerancia para erros/*O E e = ao aux1*/Espero que você tenha entendidovlwRicardo G Georgel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe eu ver se eu entendo:A função é: X^n - c = 0 // X elevado a N menos C é igual a 0.o que equivale a:X^n = cE sendo assim, passando o expoente N para o segundo membro da equação, temos:X = <Raiz de C na base N(Enésima raiz de C)>Responda-me se o meu pensamento está certo pelo menos ate aí, por favor. xD

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Márcio Paiva disse:

Deixe eu ver se eu entendo:A função é: X^n - c = 0 // X elevado a N menos C é igual a 0.o que equivale a:X^n = cE sendo assim, passando o expoente N para o segundo membro da equação, temos:X = <Raiz de C na base N(Enésima raiz de C)>Responda-me se o meu pensamento está certo pelo menos ate aí, por favor. xD

sim marcio o seu pensamento esta corretomas o problema do programa credito que esteja nos ltimos dois if() pois o resultado da negativo portanto ax =xn && bx continua =;mais isso não acontece ax =xn mas bx recebe ax.e não esto conceguindo arrumar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.