Anda di halaman 1dari 6

Universidade Federal de Pernambuco Centro Acadmico do Agreste CAA Ncleo de Tecnologia Curso de Engenharia Civil

2 Trabalho
Mtodo de Bisseco

Manoel Digenes Pereira Jnior Yago Ryan Pinheiro dos Santos

Caruaru 17 de Janeiro de 2013

Universidade Federal de Pernambuco Centro Acadmico do Agreste CAA Ncleo de Tecnologia Curso de Engenharia Civil

2 Trabalho
Mtodo de Bisseco
Este relatrio atende solicitao do Professor de Clculo Numrico, Alessandro Antunes, relacionado ao segundo trabalho sobre o mtodo de bisseco.

Caruaru 17 de Janeiro de 2013

Como Executar este Programa


O programa bisseccaocn foi desenvolvido atravs do programa MATLAB. Para utiliz-lo, o usurio deve ter conhecimento de como funciona o mtodo de bisseco, que usado para identificar uma determinada raiz de uma equao. Primeiramente, deve-se definir a equao que ser analisada, podendo ela ser de qualquer tipo. Ao executar o programa em questo, o mtodo de bisseco ser exibido, pedindo que o usurio informe o intervalo [a,b] que ser usado para verificar o que pedido. Em seguida, o usurio deve informar a preciso da raiz que ser encontrada(caso pertena ao intervalo mencionado anteriormente). Assim, caso o usurio deseje uma preciso de 5 casas decimais, basta digitar 0.00001; com isso, o programa j entender sua escolha. Tendo obedecido todos os dados inseridos no programa, o mesmo far todas as iteraes necessrias para se chegar a raiz desejada, j com a preciso fornecida pelo usurio. Caso no seja possvel encontrar o dado buscado, devido informaes inseridas que no permitem executar o mtodo da bisseco, o programa exibir uma mensagem de erro, alertando o usurio deste ocorrido. Para esse tipo de programa, foi utilizado a funo INPUT, que recebe a entrada de um dado a ser analisado, como a equao, os valores a/b e a preciso; e tambm outras como a SUBS e EVAL, que associam e relacionam valores atribudos de g f(a) e h f(b). Com isso, equaes do tipo logartmicas, exponenciais, trigonomtricas, polinomiais, entre outras, podem ser analisadas pelo mtodo da bisseco, de acordo com os parmetros preestabelecidos pelo programador.

Programa
/********************************************************************* Universidade Federal de Pernambuco Ncleo de Tecnologia Curso de Engenharia Civil Disciplina: Clculo Numrico Prof: Alessandro Antunes Perodo: 2012-2 Segundo Trabalho Data: 17/01/2013 Nome Do Arquivo: bisseccaocn Autores: Manoel Digenes Yago Santos Descrio: Este programa encontra uma raiz de uma equao atravs do mtodo de bisseco. *********************************************************************/ f=input('Escreva a funcao f(x)que voce deseja analisar:'); a=input('Escreva um valor para a:'); b=input('Escreva um valor para b:'); tol=input('Informe agora a precisao desejada:'); g=subs(f,'a'); fa=eval(g); h=subs(f,'b'); fb=eval(h); format long if fa*fb > 0 error('A funcao deve ter sinais opostos em a e b para que seja possvel executar o mtodo de bisseccao'); end m = (a+b)/2; while abs(a-b) > tol i=subs(f,'m'); fm = eval(i); if fa*fm <=0 b = m; fb = fm; m = (a+b)/2; elseif fm*fb <=0 a = m; fa = fm; m = (a+b)/2; end end raiz = (a+b)/2; raiz

Programa Comentado
% % % % % Este programa calcula a raiz da funo f no intervalo [a,b] com tolerancia(precisao) tol. Admite-se que a funo tenha uma nica raiz no intervalo [a,b]. Primeiro so declaradas pelo usurio a funo e as variveis necessrias para se executar o programa.

f=input('Escreva a funcao f(x)que voce deseja analisar:'); a=input('Escreva um valor para a:'); b=input('Escreva um valor para b:'); tol=input('Informe agora a precisao desejada:'); % % As funes 'subs' e 'eval' associam as variveis g e fa, h e fb ao que seria f(a) e f(b), respectivamente.

g=subs(f,'a'); fa=eval(g); h=subs(f,'b'); fb=eval(h); format long % % Agora verifica-se se a funo assume valores de sinais opostos em a e b. Se no, o programa informar o erro e ser encerrado.

if fa*fb > 0 error('A funcao deve ter sinais opostos em a e b'); end % % Se sim, isso mostra que no intervalo dado a funo tem pelo menos uma raiz.

m = (a+b)/2; % % % Aps encontrar o valor mdio do intervalo, o programa ir verificar a funo nesse valor mdio e continuar enquanto a condio |a-b|>tol for verdadeira.

while abs(a-b) > tol i=subs(f,'m'); fm = eval(i); if fa*fm <=0 b = m; fb = fm; m = (a+b)/2; elseif fm*fb <=0 a = m; fa = fm; m = (a+b)/2; end end

% A raiz esta a esquerda de m

% A raiz esta a direita de m

% Por fim, aps atingir a preciso desejada, o valor do ponto mdio % agora o valor aproximado da raiz. raiz = (a+b)/2; raiz

Testes
Supondo que o usurio, ao executar o programa, digite a funo y = x.sen(x) para o intervalo [2 , 4] e uma preciso 0,0001. Ir aparecer no programa:
Escreva Escreva Escreva Informe raiz = 3.14157104492 >> a funcao f(x) que voc deseja analisar:'x*sin(x)' um valor para a:2 um valor para b:4 agora a precisao desejada:0.0001

Valores assumidos pelas variveis: a


2,00000000000 3,00000000000 3,00000000000 3,00000000000 3,12500000000 3,12500000000 3,12500000000 3,14062500000 3,14062500000 3,14062500000 3,14062500000 3,14062500000 3,14111328125 3,14135742188 3,14147949219 3,14154052734

b
4,00000000000 4,00000000000 3,50000000000 3,25000000000 3,25000000000 3,18750000000 3,15625000000 3,15625000000 3,14843750000 3,14453125000 3,14257812500 3,14160156250 3,14160156250 3,14160156250 3,14160156250 3,14160156250

m
3,00000000000 3,50000000000 3,25000000000 3,12500000000 3,18750000000 3,15625000000 3,14062500000 3,14843750000 3,14453125000 3,14257812500 3,14160156250 3,14111328125 3,14147949219 3,14154052734 3,14157104492

raiz

3,14157104492

Ir aparecer no programa
Caso o usurio, ao executar o programa, digite a funo y = x.sen(x) para o intervalo [4 , 7] e uma preciso 0,0001. Escreva a funcao f(x) que voc deseja analisar:'x*sin(x)' Escreva um valor para a:4 Escreva um valor para b:7 Informe a precisao desejada:0.0001 ??? Error using ==> bicessao_ultima_tentativa at 12 A funcao deve ter sinai opostos em a e b >>

Isso acontece pois a funo nos pontos a e b possuem o mesmo sinal.

Anda mungkin juga menyukai