Considerando a função f(x) = 0,25x4 +2x3 – 7,5x2 + 3, determine dois de seus zeros, um existente entre os valores 0 e 1,5, e o outro existente entre os valores –1,51 e 0 de x, com ε = 0,10.
Soluções para a tarefa
Resposta:
As duas raízes são -0.22709 e 0.235107
Explicação detalhada:
Fiz um algoritmo para calcular as raízes pelo método de bissecção em linguagem C++.
SUPONDO que ε seja a tolerância, eu achei ela muito alta. Quanto menor a tolerância, melhor é a precisão. Então, defini ε com ε = 0,0010. (a variável ε está escrita como eps). Intervalo inicial: a = 0 e b=-1.15
Número de iterações: 200
#include <iostream>
#include <iomanip>
#include <math.h>
#define IterM 200
#define eps 0.0001
float F(float x);
float swap(float &x, float &y);
using namespace std;
int main(void)
{
float a, b;
cout << "Type value 'a': ";
cin >> a;
cout << "Type value 'b': ";
cin >> b;
if(F(a)* F(b) > 0)
{
cout << "Sem mudar o sinal";
system("pause");
}
else
{
float Iter;
cout << string(80,'_') << endl;
cout << setw(15) << "a | ";
cout << setw(15) << "b | ";
cout << setw(15) << "c | ";
cout << setw(15) << "Fc | ";
cout << setw(15) << "Fa | " << endl;
cout << string(80,'_') << endl;
Iter =0;
while(Iter <= IterM)
{
float c, F_a, F_c, t;
Iter+=1;
c = (a+b)/2.0;
F_a = F(a);
F_c = F(c);
if(F(c) * F(a) > 0)
{
swap(a,c);
}
else
{
swap(b,c);
}
if((b-a) < eps)
break;
cout << setfill('_');
cout << setw(15) << a;
cout << setw(15) << b;
cout << setw(15) << c;
cout << setw(15) << F_a;
cout << setw(15) << F_c << endl;
}
system("pause");
}
}
float F(float x)
{
return (pow(x*0.25,4)+pow(2*x,3)-pow(7.5*x,2)+3) ;
}
float swap(float &x, float &y)
{
float t;
t=x;
x = y;
y = t;
return 0;
}
Na imagem está a saída para os intervalos (-1.51 ; 0) e (0 ; 1.5)