Buscar

Método de Newton-Raphson

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;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando