Смекни!
smekni.com

Решение одного нелинейного уравнения (стр. 2 из 2)

#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] &bsol;n",x1,x2);

printf ("Otvet:%f&bsol;n",a);

printf ("Kol-vo iteraciy:%d &bsol;n",k);

printf ("Takge smotri otvet v file sekushih. txt&bsol;n");

fprintf (res,"Результат решения уравнения методом секущих! &bsol;n");

fprintf (res,"Корень уравнения x =%f&bsol;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] &bsol;n",x1,x2);

printf ("Otvet:%f&bsol;n",a);

printf ("Kol-vo iteraciy:%d &bsol;n",k);

printf ("Takge smotri otvet v file itteraciy. txt&bsol;n");

fprintf (res,"Результат решения уравнения методом простой итерации! &bsol;n");

fprintf (res,"Корень уравнения x =%f&bsol;nКоличество итераций =%d",a,k);

fclose (res);

}

Результаты расчета:

На интервале x

[2,3] функции x² - ln (1+x) - 3 = 0 корень уравнения x = 2.026689. Количество итераций при приближенной точности
=
в методе половинного деления составляет 20, в методе касательных составляет 4, в методе секущих составляет 5 и в методе простых итераций составляет 6.