#include <conio. h>
#define e 0.000001
double func (double x)
{
return ( ( ( (x*x) - (log (1+x))) - 3));
}
void main ()
{
FILE *res;
res=fopen ("sekushih. txt","w");
int k=0,x1=2,x2=3;
double a,b,c;
a=x1;
b=x2;
while (fabs (a-b) >e)
{
c= (a*func (b) - b*func (a)) / (func (b) - func (a));
a=b;
b=c;
k++;
}
printf ("Funkciya prinimaet znachenie na intervale: [%d,%d] \n",x1,x2);
printf ("Otvet:%f\n",a);
printf ("Kol-vo iteraciy:%d \n",k);
printf ("Takge smotri otvet v file sekushih. txt\n");
fprintf (res,"Результат решения уравнения методом секущих! \n");
fprintf (res,"Корень уравнения x =%f\nКоличество итераций =%d",a,k);
fclose (res);
getch ();
}
4. Метод простой итерации
#include <stdio. h>
#include <math. h>
#include <conio. h>
#define e 0.000001
double func (double x)
{
return ( ( ( (x*x) - (log (1+x))) - 3));
}
double x_vir (double x)
{
return (sqrt (log (1+x) +3));
}
void main ()
{
FILE *res;
res=fopen ("itteraciy. txt","w");
int x1,x2,k;
double x;
k=0;
x1=2;
x2=3;
x=0;
double a,b,c;
a=x1;
b=x2;
while (fabs (a-b) >e)
{
b=x_vir (a);
c=b;
b=a;
a=c;
k++;
}
printf ("Funkciya prinimaet znachenie na intervale: [%d,%d] \n",x1,x2);
printf ("Otvet:%f\n",a);
printf ("Kol-vo iteraciy:%d \n",k);
printf ("Takge smotri otvet v file itteraciy. txt\n");
fprintf (res,"Результат решения уравнения методом простой итерации! \n");
fprintf (res,"Корень уравнения x =%f\nКоличество итераций =%d",a,k);
fclose (res);
}
Результаты расчета:
На интервале x
[2,3] функции x² - ln (1+x) - 3 = 0 корень уравнения x = 2.026689. Количество итераций при приближенной точности = в методе половинного деления составляет 20, в методе касательных составляет 4, в методе секущих составляет 5 и в методе простых итераций составляет 6.