Buscar

Códigos na linguagem Java, Bissecção e Newton

Prévia do material em texto

Aluno: Carlos Eduardo da Silva Lima
Diciplina: Cálculo Numérico
Material de estudo: Os pseudocódigo foram retirados dos slides (Aula: Zeros de Funcoes Slides)
Pseudocódigo 1:
Código com base no pseudocódigo 1 (Linguagem Java)..
/*
Autor: Carlos Eduardo da Silva Lima
Tema: Método da Bissecção
Linguagem Java
*/
class bisseccao
{
// Entre com a expressão para a f(x)
public double f(double x)
{
return((10 + (1.36/Math.pow(x,2)))*(x - 0.03183) - 41.027);
}
public void metodoBisseccao(double [] s)
{
// Parâmetros para o método da Bissecção
double a, b, tol;
// Lembrando, temos o intervalo [a,b], a candidata a raíz
 // está contida neste intervalo a<=x<=b.
a = s[0]; // valor inferior do intervalo [a,b]
b = s[1]; // valor superior o intervalo [a,b]
tol = s[2]; // tolerância
while(Math.abs(b-a)>tol)
{
double x = (a+b)/2;
if(f(a)*f(x)<0)
{
b = x;
System.out.println("x = "+b+" || b - a = "+(b-a));
}
else
{
a = x;
System.out.println("x = "+a+" || b - a = "+(b-a));
}
 }
 }
}
public class Main
{
public static void main(String[] args)
{
//Dados
double [] s = {3.8,4.3,0.001};
//Objeto
bisseccao solucao = new bisseccao();
//Chamada de Método
solucao.metodoBisseccao(s);
}
}
Pseudocódigo 2:
Código com base no pseudocódigo 2 (Linguagem Java).
/*
Autor: Carlos Eduardo da Silva Lima
Tema: Método de Newton
Linguagem Java
*/
class Newton
{
// Entre com a expressão para a f(x)
public double f(double x)
{
return(Math.pow(x,3) - 3);
}
// Entre com a derivada da função acima inserida.
public double df(double x)
{
return(3*Math.pow(x,2));
}
// Neste método, implementamos o algoritimo de Newton para f(x) = 0.
 // O algoritimo está apresentado em termos de paseudocodigo nos slides
public void metodoNewton(double x0, double tol)
{
double xk = x0 - (f(x0)/df(x0)); // Newton
double er = Math.abs((xk - x0)/xk); // erro relativo
 // Enquanto o erro relativo (er) for maior que a tolerância estimada pelo usuário
while(er > tol)
{
x0 = xk;
xk = x0 - (f(x0)/df(x0));
er = Math.abs((xk - x0)/xk);
// Saída do resultado na tela
System.out.println("raiz x = " + xk + " || erro = " + er);
}
 }
}// fim da classe Newton
//Classe main, esta classe contém o método principal do
// programa (aplicativo), main
public class Main
{
public static void main(String[] args)
{
double x0 = 5; // chute inicial para a solução de f(x)
double tol = 0.001; // erro, prescisão desejada.
 //Objeto
Newton solucao = new Newton();
// Chamada de métoos e atributos da classe Newton
solucao.metodoNewton(x0,tol);
}
}
Para executar esses códigos, entre no site online gdb (https://www.onlinegdb.com/), neste site pode-se escrever códigos
em diversas linguagens de programação, observe a figura a baixo.

Mais conteúdos dessa disciplina