Escreva, em Scilab, um algoritmo que determine a raíz da função
P(x)=8-4,5(x-\operatorname{sen} x)
no intervalo [2,3].

Passo 1

O enunciado pede que a gente ache a raiz da função
P(x) = 8 - 4{,}5\,\bigl(x - \operatorname{sen} x\bigr)
no intervalo [2,3].
Conteúdo: método numérico de bisseção para encontrar zeros de função.

Passo 2

Antes de usar a bisseção, verificamos a mudança de sinal em a=2 e b=3. Calculamos
P(2) = 8 - 4{,}5\,(2 - \operatorname{sen} 2), \quad P(3) = 8 - 4{,}5\,(3 - \operatorname{sen} 3),
e observamos que P(2)\cdot P(3)<0. Isso garante que há pelo menos uma raiz em [2,3].

Passo 3

O método da bisseção funciona assim: definimos a=2, b=3 e uma tolerância \mathtt{tol}, por exemplo 10^{-6}.
Enquanto \lvert b - a\rvert > \mathtt{tol}, fazemos:
  1. c = (a + b)/2.
  2. Calculamos P\text{(c)}.
  3. Se P(a)\,P\text{(c)}<0, então a raiz está em [a,c], fazemos b=c; senão está em [c,b], fazemos a=c.
    No fim, (a+b)/2 é a aproximação da raiz.

Passo 4

A seguir o código em Scilab que implementa esse algoritmo:
// Definição da função P(x)
function y = P(x)
 y \(=8\) - 4.5*(x - sin(x));
endfunction

// Método da bisseção
function r = \(raiz_bissecao\)(a, b, tol)
 fa = P(a);
 fb = P(b);
 if fa*fb > 0 then
 error("P(a) e P(b) devem ter sinais opostos");
 end
 while abs(b - a) > tol do
 c = (a + b)/2;
 fc = P\text{(c)};
 if fa*fc < 0 then
 b = c;
 fb = fc;
 else
 a = c;
 fa = fc;
 end
 end
 r = (a + b)/2;
endfunction

// Uso do algoritmo
a \(=2\);
b \(=3\);
tol \(=1\)e-6;
raiz = \(raiz_bissecao\)(a, b, tol);
disp("Raiz aproximada de P(x) em [2,3]: " + string(raiz));

Resposta

// Definição da função P(x)
function y = P(x)
 y \(=8\) - 4.5*(x - sin(x));
endfunction

// Método da bisseção
function r = \(raiz_bissecao\)(a, b, tol)
 fa = P(a);
 fb = P(b);
 if fa*fb > 0 then
 error("P(a) e P(b) devem ter sinais opostos");
 end
 while abs(b - a) > tol do
 c = (a + b)/2;
 fc = P\text{(c)};
 if fa*fc < 0 then
 b = c;
 fb = fc;
 else
 a = c;
 fa = fc;
 end
 end
 r = (a + b)/2;
endfunction

// Uso do algoritmo
a \(=2\);
b \(=3\);
tol \(=1\)e-6;
raiz = \(raiz_bissecao\)(a, b, tol);
disp("Raiz aproximada de P(x) em [2,3]: " + string(raiz));

Exercícios relacionados