Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> using namespace std; int main() { long double ii, is, xi; //Valores Iniciais; intervalo inferior, intervalo superior e x inicial. long double FA, FB, FH; //resultados das funções para as variáveis; a, b e h. long double a, b, h, xp, xn; //termos que variam na função. long double E; //erro. int iteracoes; // //Metodo da bissecção. // //Determinação das raízes. // cout << "Metodo da bisseccao" << endl; printf("Digite o intervalo inferior de busca da raiz: "); fflush(stdin); cin >> ii; printf("Digite o intervalo superior de busca da raiz: "); fflush(stdin); cin >> sup; if (ii == 0) ii = 0.1; //Ao colocar zero, a função tende ao infinito. a = ii; b = is; E = (b-a)/2; h = a + E; iteracoes = 0; while (E >= 0.000000001){ FA = a*sinh(3/(2*a))-1.6; FB = b*sinh(3/(2*b))-1.6; FH = h*sinh(3/(2*h))-1.6; if (FA > 0){ if (FH < 0){ b = h; } else{ a = h; } } E = (b-a)/2; h = a + E; iteracoes++; } cout << "x = " << h << "\t iteracoes = " << iteracoes << endl << endl; // //Newton-Raphson. // cout << "Metodo de Newton-Raphson" << endl; printf("Digite o valor de xi de busca da raiz: "); fflush(stdin); cin >> xi; xn = xi; iteracoes = 0; E = xi; if (E < 0.000000001) E = 1; //Ao digitar o valor menor que o erro, o erro é alterado. while (E >= 0.000000001){ xp = xn - (xn*sinh(3/(2*xn)) - 1.6) / (sinh(3/(2*xn)) -(3/(2*xn))*cosh(3/(2*xn))); E = xn - xp; if (E < 0) E = -E; //valor positivo do erro. xn = xp; iteracoes++; } cout << "x = " << xn << "\t iteracoes = " << iteracoes << endl << endl; // //Método hibrido. // //Bisseccao para e<10^-3. // a = inf; b = sup; E = (b-a)/2; h = a + E; iteracoes = 0; while (E >= 0.001){ FA = a*sinh(3/(2*a))-1.6; FB = b*sinh(3/(2*b))-1.6; FH = h*sinh(3/(2*h))-1.6; if (FA > 0){ if (FH < 0){ b = h; } else{ a = h; } } E = (b-a)/2; h = a + E; iteracoes++; } // // Newton-Raphson para e<10^-9. // xn = h; while (E >= 0.000000001){ xp = xn - (xn*sinh(3/(2*xn)) - 1.6) / (sinh(3/(2*xn)) -(3/(2*xn))*cosh(3/(2*xn))); E = xn - xp; if (E < 0) E = -E; xn = xp; iteracoes++; } cout << "Metodo hibrido:" << endl; cout << "x = " << xn << "\t iteracoes = " << iteracoes << endl; fflush(stdin); getchar(); return 0; }