Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Método de Newton-Raphson/Ex. 1.txt Exercício 1: f(x) = 2x - sen(x) - 4 Calculo das raizes de uma funcao aplicando o eTtodo Newton - Raphson n Insira o intervalo inicial [a, b]: a = 2 b = 3 x f(x) 2 -0.9092974268 2.166666667 -0.4943270188 2.333333333 -0.05641921507 2.5 0.4015278559 2.666666667 0.8760607067 2.833333333 1.363266199 3 1.858879992 Escolha um ponto inicial adequado: x0 = 3 Tolerancia = 0,001 Aproximacao inicial: x0 = 3 f(x0) = 1.858879992 f'(x0) = 2.989992497 Interacao #1 x1 = 2.378299446 f(x1) = 0.06529415118 f'(x1) = 2.722563323 error = 0.6217005541 Interacao #2 x2 = 2.354316844 f(x2) = 0.0002004587971 f'(x2) = 2.705777839 error = 0.02398260148 Interacao #3 x3 = 2.354242759 f(x3) = 1.94422034e-009 f'(x3) = 2.705725353 error = 7.408546043e-005 Interacao #4 x4 = 2.354242758 f(x4) = -5.551115123e-016 f'(x4) = 2.705725352 error = 7.185581019e-010 Interacao #5 x5 = 2.354242758 f(x5) = -5.551115123e-016 f'(x5) = 2.705725352 error = 0 Para uma tolerancia de 0 a raiz de f e: 2.354242758 Método de Newton-Raphson/Ex. 2.txt Exercício 2: Calculo das raizes de uma funcao aplicando o método Newton - Raphson n Insira o intervalo inicial [a, b]: a = 2 b = 3 x f(x) 2 3 2.166666667 5.171296296 2.333333333 7.703703704 2.5 10.625 2.666666667 13.96296296 2.833333333 17.74537037 3 22 Escolha um ponto inicial adequado: x0 = 3 Tolerancia = 0,001 Aproximacao inicial: x0 = 3 f(x0) = 22 f'(x0) = 27 Interacao #1 x1 = 2.185185185 f(x1) = 5.434334197 f'(x1) = 14.32510288 error = 0.8148148148 Interacao #2 x2 = 1.805827756 f(x2) = 0.8888293882 f'(x2) = 9.783041656 error = 0.3793574289 Interacao #3 x3 = 1.714973662 f(x3) = 0.04396848172 f'(x3) = 8.823403985 error = 0.0908540942 Interacao #4 x4 = 1.709990497 f(x4) = 0.0001276346158 f'(x4) = 8.772202496 error = 0.004983165431 Interacao #5 x5 = 1.709975947 f(x5) = 1.086008756e-009 f'(x5) = 8.772053216 error = 1.454989392e-005 Interacao #6 x6 = 1.709975947 f(x6) = 5.85902854e-016 f'(x6) = 8.772053215 error = 1.238031899e-010 Interacao #7 x7 = 1.709975947 f(x7) = 5.85902854e-016 f'(x7) = 8.772053215 error = 0 Para uma tolerancia de 0 a raiz de f e: 1.709975947 Método de Newton-Raphson/Ex. 3.txt Exercício 3: f(x) = x3 - 5x2 + x + 3 Calculo das raizes de uma funcao aplicando o eTtodo Newton - Raphson n Insira o intervalo inicial [a, b]: a = -1 b = 0 x f(x) -1 -4 -0.8333333333 -1.884259259 -0.6666666667 -0.1851851852 -0.5 1.125 -0.3333333333 2.074074074 -0.1666666667 2.689814815 -1.665334537e-016 3 Escolha um ponto inicial adequado: x0 = 0 Tolerancia = 0,0001 Aproximacao inicial: x0 = 0 f(x0) = 3 f'(x0) = 1 Interacao #1 x1 = -3 f(x1) = -72 f'(x1) = 58 error = 3 Interacao #2 x2 = -1.75862069 f(x2) = -19.66132273 f'(x2) = 27.86444709 error = 1.24137931 Interacao #3 x3 = -1.053014629 f(x3) = -4.764838221 f'(x3) = 14.85666572 error = 0.7056060602 Interacao #4 x4 = -0.7322940648 f(x4) = -0.8062631103 f'(x4) = 9.93170444 error = 0.3207205647 Interacao #5 x5 = -0.6511133254 f(x5) = -0.04689469593 f'(x5) = 8.782978941 error = 0.08118073944 Interacao #6 x6 = -0.6457740554 f(x6) = -0.0001980722429 f'(x6) = 8.708812945 error = 0.005339269996 Interacao #7 x7 = -0.6457513115 f(x7) = -3.588556484e-009 f'(x7) = 8.708497384 error = 2.274388532e-005 Interacao #8 x8 = -0.6457513111 f(x8) = -1.099381003e-016 f'(x8) = 8.708497378 error = 4.120752628e-010 Interacao #9 x9 = -0.6457513111 f(x9) = -1.099381003e-016 f'(x9) = 8.708497378 error = 0 Para uma tolerancia de 0 a raiz de f e: -0.6457513111 Método de Newton-Raphson/Ex. 4.txt Exercício 4: f(x) = sen(x) - tg(x) Calculo das raizes de uma funcao aplicando o eTtodo Newton - Raphson n Insira o intervalo inicial [a, b]: a = 3 b = 4 x f(x) 3 0.2836665511 3.166666667 -0.05015065492 3.333333333 -0.3846934689 3.5 -0.7253688678 3.666666667 -1.080595979 3.833333333 -1.466145423 4 -1.914623778 Escolha um ponto inicial adequado: x0 = 4 Tolerancia = 0,001 Aproximacao inicial: x0 = 4 f(x0) = -1.914623778 f'(x0) = -2.994193743 Interacao #1 x1 = 3.360554479 f(x1) = -0.4397459388 f'(x1) = -2.0256429 error = 0.639445521 Interacao #2 x2 = 3.143464913 f(x2) = -0.003744519276 f'(x2) = -2.000001753 error = 0.2170895664 Interacao #3 x3 = 3.141592655 f(x3) = -2.187655145e-009 f'(x3) = -2 error = 0.001872257997 Interacao #4 x4 = 3.141592654 f(x4) = 2.449212708e-016 f'(x4) = -2 error = 1.093827695e-009 Interacao #5 x5 = 3.141592654 f(x5) = 2.449212708e-016 f'(x5) = -2 error = 0 Para uma tolerancia de 0 a raiz de f e: 3.141592654 Método de Newton-Raphson/Ex. 6.txt Exercício 6: f(x) = x3 - x + 1 Calculo das raizes de uma funcao aplicando o eTtodo Newton - Raphson n Insira o intervalo inicial [a, b]: a = -2 b = -1 x f(x) -2 -5 -1.833333333 -3.328703704 -1.666666667 -1.962962963 -1.5 -0.875 -1.333333333 -0.03703703704 -1.166666667 0.5787037037 -1 1 Escolha um ponto inicial adequado: x0 = -1 Tolerancia = 0,001 Aproximacao inicial: x0 = -1 f(x0) = 1 f'(x0) = 2 Interacao #1 x1 = -1.5 f(x1) = -0.875 f'(x1) = 5.75 error = 0.5 Interacao #2 x2 = -1.347826087 f(x2) = -0.1006821731 f'(x2) = 4.449905482 error = 0.152173913 Interacao #3 x3 = -1.325200399 f(x3) = -0.002058361917 f'(x3) = 4.268468292 error = 0.02262568801 Interacao #4 x4 = -1.324718174 f(x4) = -9.243777597e-007 f'(x4) = 4.264634722 error = 0.0004822249519 Interacao #5 x5 = -1.324717957 f(x5) = -1.866846521e-013 f'(x5) = 4.264632999 error = 2.167542639e-007 Interacao #6 x6 = -1.324717957 f(x6) = -1.379105163e-016 f'(x6) = 4.264632999 error = 4.374278717e-014 Interacao #7 x7 = -1.324717957 f(x7) = -1.379105163e-016 f'(x7) = 4.264632999 error = 0 Para uma tolerancia de 0 a raiz de f e: -1.324717957 Método de Newton-Raphson/Método de NR.txt // Métodos Númericos 2019/2 // Método de Newton-Raphson // Data de entrega: 24/09/2019 // Prof. Alexander C. Santos // Alunos: Jennifer Macedo // Pedro Henrique #include <iostream> #include <iomanip> #include <cmath> #include <math.h> #define PRECISAO 10 #define MAX_INTERACOES 100 #define INTERVALOS 6 using namespace std; void tabula(double a, double b, int intervalos); // Mostra un # tabulado de intervalos double f(double x); // Retorna o valor da função avaliada em x double f_derivada(double x); // Retorna a derivada da função avaliado em x int main() { double a; double b; double tolerancia; // Tolerancia double x0; // Primeira aproximação double x1; // Próxima aproximação double error; // Diferença entre duas aproximações sucessivas: x1 - x0 int interacao; // # de interações bool converge = true; cout << setprecision(PRECISAO); // Se establece a precisao cout << "\nCalculo das raizes de uma funcao aplicando o metodo Newton - Raphson \ n"; cout << "\nInsira o intervalo inicial [a, b]:" << endl; // Se insere o intervalo cout << "\na = "; cin >> a; cout << "b = "; cin >> b; // Os valores de f são tabulados para intervalos de tabula(a, b, INTERVALOS); // Se pide elegir una aproximación inicial cout << "\nEscolha um ponto inicial adequado: x0 = "; cin >> x0; // Você é solicitado a inserir a tolerância cout << "Tolerancia = "; cin >> tolerancia; // Iterações // São impressos os valores da primeira aproximação cout << "\nAproximacao inicial:\n"; cout << "x0 = " << x0 << "\n" << "f(x0) = " << f(x0) << "\n" << "f'(x0) = " << f_derivada(x0) << endl; interacao = 1; do { if (interacao > MAX_INTERACOES) { converge = false; // O número máximo de interrupções de iterações permitidas foi excedido ; } else { x1 = x0 - f(x0) / f_derivada(x0); // Cálculo da aproximação seguinte error = fabs(x1 - x0); // O erro é a diferença entre duas aproximações sucessivas // Se imprimem os valores das seguintes aproximações x1, f(x1), f_derivada(x1), error cout << "\nInteracao #" << interacao << endl; cout << "x" << interacao << " = " << x1 << "\n" << "f(x" << interacao << ") = " << f(x1) << "\n" << "f'(x" << interacao << ") = " << f_derivada(x1) << "\n" << "error = " << error << endl; // A diferença entre duas aproximações sucessivas também é conhecida como erro. // A condição de término consiste em que o erro deve ser <= que a tolerancia dada // Se os critérios de finalização não forem atendidos, a próxima iteração será aprovada. if (error <= tolerancia) { // Condição de término. converge = true; break; // Se não se cumpre o critério de terminação, se passa para seguinte interação. } else { x0 = x1; interacao++; } } } while (1); // Resposta final if (converge) { cout << "\n\nPara uma tolerancia de " << tolerancia << " a raiz de f e: " << x1 << endl; } else { cout << "\n\nO numero maximo de iteracoes permitidas foi excedido" << endl; } cin.get(); cin.get(); return 0; } void tabula(double a, double b, int intervalos) { int pontos = intervalos + 1; double ancho = (b - a) / intervalos; cout << "\n\tx\t\tf(x) " << endl; for (int i = 0; i < pontos; i++) { cout << "\t" << a << "\t\t" << f(a) << endl; a = a + ancho; } } double f(double x) { //return 2*x - sin(x) - 4 ; //return pow(x,3) - 5; //return pow(x,3)- 5*pow(x,2)+ x + 3; //return sin(x)-tan(x); //return pow(x,2)-(9,5*x)+8,5; return pow(x,3)-x+1; } double f_derivada(double x) { //return 2 - cos(x) ; //return 3*pow(x,2); //return 3*pow(x,2)-(10*x)+1; //return cos(x)-pow(1/cos(x),2); //return 2*x - (9,5); return 3*pow(x,2)-1; }
Compartilhar