-
Notifications
You must be signed in to change notification settings - Fork 0
/
bissecao.c
executable file
·60 lines (55 loc) · 1.36 KB
/
bissecao.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream.h>
#include <conio.h>
#include <math.h>
#define funcao x-cos(x)
#define f_string "x-cos(x)"
float f(float x);
float zero;
void main() {
for(;;){
printf("\n\nCalculo de raizes - Metodo da Bissecao\n\nEquacao inicial:\nf(x)=%s\n\n",f_string);
float a,b,tole,xm, erro;
int i_max, i=0;
printf("Entre com o intervalo a-b:\nPonto a: ");
scanf("%f",&a);
printf("Ponto b: ");
scanf("%f",&b);
printf("Entre com a tolerancia desejada: ");
scanf("%f",&tole);
printf("Entre com o numero maximo de iteracoes: ");
scanf("%d",&i_max);
if (f(a) * f(b) > 0) { printf("A raiz nao esta no intervalo especificado, favor isolar as raizes!"); getch(); }
else {
do {
xm=(a+b)/2;
if (f(a)*f(xm) < zero) {
b=xm;
}
else {
a=xm;
}
erro=fabs(a-b);
i++;
} while(erro > tole && i < i_max);
if (i == i_max) { printf("O sistema atingiu o limite de iterações! :~("); }
else {
printf("\n\n\nIteracoes realizadas: %d\nSolucao encontrada: %10.3f",i,xm);
}
}
char tcl;
printf("\nTecle 'S' caso deseje reiniciar o programa: ");
tcl=getche();
if (tcl != 's' && tcl != 'S') { return; }
}
}
float f(float x) {
return funcao;
}
void zero_maquina() {
float zero_da_maquina=1, teste;
do {
zero_da_maquina=zero_da_maquina/2;
teste=1+zero_da_maquina;
} while (teste > 1);
zero=zero_da_maquina;
}