Решение задачи: найти корни cosx=1/x на интервале [1;2], c точностью до 10^(-6), используя метод биекций (язык Си).
#include <math.h>
#define PRECISSION 10.E-6
double f(double x)
{
return cos(x)-1./x;
}
int main()
{
double lft_X = 4.;
double rght_X = 6.;
double lft_Y, rght_Y;
double X, Y;
while ( (rght_X-lft_X) >= PRECISSION )
{
lft_Y = f(lft_X);
if ( lft_Y == 0. )
{
X = lft_X;
break;
}
rght_Y = f(rght_X);
if ( rght_Y == 0. )
{
X = rght_X;
break;
}
X = (lft_X + rght_X)/2.;
Y = f(X);
if ( rght_Y*Y > 0 )
rght_X = X; // сдвиг границы справа
else
lft_X = X; // сдвиг раницы слева
}
printf("Корень уравнения равен: %9.7f", X );
return 0;
}
08 октября 2010, 02:26