TRABALHO PRÁTICO CALCULO NUME RICO
Por: Cleniwton Alves • 24/10/2019 • Trabalho acadêmico • 2.714 Palavras (11 Páginas) • 459 Visualizações
TRABALHO PRÁTICO
CLENILTON DE SOUSA ALVES
Introdução
Nas mais diversas áreas da ciência ocorrem, frequentemente, situações envolvendo a resolução de uma equação do tipo f(x)=0. Se a função for igual a zero, os valores de x que tornam essa equação verdadeira são chamados de raízes da função. Para isto utilizaremos os métodos citados abaixo.
O Método da Bisseção, escolhemos dois pontos de modo que tenha sinais contrários, se for igual a 0, a raiz já foi encontrada. Caso contrário a raiz está entre os dois pontos. Em cada iteração é feita a média aritmética dos extremos desse intervalo. [pic 3][pic 4][pic 5]
No Método ponto fixo, observamos que sempre podemos reescrever uma equação da forma em uma equação equivalente na forma (problema de ponto fixo). Geometricamente, um ponto fixo de uma função é um ponto de interseção entre a reta .[pic 6][pic 7][pic 8]
O método de Newton é uma tentativa de garantir e acelerar a convergência, ele consiste de a partir de um número Pn inicial, arbitrariamente escolhido, traçar a reta tangente da derivada da função no ponto Pn e achar Pn+1 da seguinte maneira:
[pic 9]
A sua velocidade de convergência é quadrática.
Enquanto, o método de Newton está relacionado às retas tangentes ao gráfico da função objetivo f(x), o método das secantes, como o próprio nome indica, está relacionado às retas secantes. Dessa forma o método das secantes é uma variação do método de Newton, evitando a necessidade de conhecer-se a derivada analítica de f(x).
Com isso, utilizaremos os métodos numéricos para resolver computacionalmente com o compilador Dev-C++ o exercício: f(x)=, em um intervalo de [0,1], com erro absoluto inferior a . [pic 10][pic 11]
Objetivo
O objetivo deste exercício é achar a raiz da função, ou seja, um valor de no qual a função vale zero. Para isto utilizaremos quatro métodos, o método da bissecção, o método do ponto fixo, o método da secante e o método de newton-raphson.
Códigos e Resultados
Método da bissecção
Para escrever o algoritmo seguir os seguintes passos:
Passo 1.
- Intervalor inicial [0,1]
1.2 Precisão do resultado [pic 12]
Posso 2. Definir um contador de iterações k=0 (nesse caso usando a formula)
Passo 3. Se , então o intervalo já está ótimo. Se não continua para o Passo 4.[pic 13]
Paso 4. K=k+1, aumentando uma iteração no contador.
Passo 5. [pic 14]
Passo 6. fazemos b=m, caso contrário a=m.[pic 15]
Passo 7. Voltamos para o passo 3. Ficamos nesse ciclo até o programa fique com a precisão de . [pic 16]
#include
#include
#include
#include
double funcao (double x){ ///função para cálculo da 'função'(que se quer descobrir o zero da função) no ponto
return (pow(x,3)-9*x+3);
}
int main(){
double m, erro=0.0001, erro2, k, a=0, b=1, f1,i=0, f2,f3;
printf("\t\t\tALGORITMO DA BISSECCAO\n\n");
printf("\t\t\tAluno: Clenilton Alves\t\t\t\t\t\t\n\n");
f3=funcao(b);
f1=funcao(a);
k= (log(b-a)-log(erro))/log(2);
if(f1*f3<0){
m=(a+b)/2;
printf("\t---------------------------------------------------------------------\n");
printf("K a b x0 f(x0) erro\n");
for(i=0;i<=k;i=i+1){ //loop
m=(a+b)/2;
f1=funcao(a);
f2=funcao(m);
if(f1*f2<0){
a=a;
b=m ;
erro2=(b-a);
}
else{
a=m;
b=b;
erro2=fabs(b-a);
}
printf ("\n%.0f\t %.8f %.8f %.8f %.8f \t%.8f", i, a, b, m, f2, erro2);
}
printf ("\n\n\n\tRaiz = %.8f ", m);
printf ("\n\n\n\tErro eh = %.8f < 0.0001", erro2);
}
else {
printf ("\n\n\nIntervalo incorreto ");
}
}
Obtive a seguinte resposta:
[pic 17]
Método do ponto fixo
Passo 1.
- Aproximação inicial do nesse caso usei o próprio b do intervalo.[pic 18]
- Utilizei dois erros .[pic 19]
Passo 2. Definir um contador de iterações.
Passo 3. [pic 20]
Passo 5. Se continue para o passo 6.[pic 21]
Passo 6= k=k+1.
Passo 7. .[pic 22]
Passo 8. Volta ao passo 3.
#include
#include
#include
#include
double funcao (double x){
return ( -3/(x*x -9));
}
double funcao2 (double x){
return (pow(x,3)-9*x+3);
}
main(){
printf("\t\t\tALGORITMO DO PONTO FIXO\n\n");
printf("\t\t\tAluno: Clenilton Alves\t\t\t\t\t\t\n\n");
printf("\t----------------------------------------\n");
...