Método da Bissecção em SCILAB

Publicado por Ariel Galante Dalla Costa (última atualização em 06/11/2013)

[ Hits: 21.839 ]

Homepage: http://arielgdc.wordpress.com

Download bisseccao.sce




Método da Bissecção em SCILAB.

  



Esconder código-fonte

//
//SCILAB é uma linguagem livre e científica para uso acadêmico
//Exemplo para encontrar a raiz no intervalo [0.1, 1] da função -x³+2x²+x-1
//Define um intervalo e calcula a raiz pela precisão estabelecida
//Constrói o gráfico no intervalo estabelecido => Isso pode ser extremamente útil para ver como ela converge/não converge.
//
function [y] = funcao(x)
y = (-x^3)+(2*x^2)+x-1 //aqui vai a função
endfunction;

function [y] = mod_numero(x) //pode se usar a função abs()
p = x;
if x < 0;
p = x*(-1);
end;
y = p;
endfunction;

function [] = grafico(ini, fim)
intervalo = fim-ini;
intervalo = intervalo / 100;
while(ini < fim);
x = ini;
y = funcao(x);
ini= ini + intervalo;
plot(x, y, '.k');
end;
endfunction;

a = 0.1; //intervalo inicial
b = 1; //intervalo final
ini = a;
fim = b;
interm = (a+b)/2;
grafico(a, b);

//calcula a raiz de f(x) no intervalo [a,b] com precisão eps1
x0=a;
x1=b;
xm=(x0+x1)./2;
eps1 = 10^(-4); //Precisão
it=0;
if funcao(x0)*funcao(x1)>=0 printf("O valor de f(a) e f(b) devem ter sinal diferente");
abort;
end;
while abs(funcao(xm))>eps1&it<=500
if funcao(x0)*funcao(xm) > 0 then 
x0=xm; 
else 
x1=xm; 
end;
xm=(x0+x1)/2;
it=it+1;
end;
raiz=xm;
iter=it;

if it>=499 then
printf("Não converge nesse intervalo!");
abort;
else;
printf("Raiz Bissecção é %10.15f com %f iterações", raiz, iter);
end;

Scripts recomendados

Código "Vírus do Atalho"

trocar permissão, dono e grupo de arquivos ou diretórios

Crivo de Eratóstenes Simples em XBase (Clipper)

Método das Cordas em SCILAB

Bubble Sort em Scilab


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts