Найти корень Функции на заданном промежутке с заданной точностью - C (СИ)
Формулировка задачи:
Найти корень Функции на заданном промежутке , с точностью, двумя способами.
Первый способ:
Четные номера вариантов - методом половинного деления , нечетные - методом хорд .
Второй способ:
Метод причастность ( метод Ньютона) .
Точность eps=0.5*10e-4
f(x)=ln*x-x+1.8
Пытался сделать,но увы.
Надеюсь кто-то поможет (Метод Ньютона,вообще не понимаю как делать).
Все что смог сделать
Ньютона так и не разобрался
#include <stdio.h>
#include <math.h>
int main(void) {
float a=2,b=3;
float x,y;
float eps=10,e=-4;
for (;;)
{
x=(b+a)/2;
y=log10(x)-x+1.8;
if(fabs(y)<eps) break;
if(y*(log10(x)-x+1.8)*b>0)b=x;
else a=x;
}
printf("%f,%f",x,y);
return 0;
}Решение задачи: «Найти корень Функции на заданном промежутке с заданной точностью»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
double f1(double x)
{
double f1 ;
f1=log10(x)-x+1.8;
return f1;
}
double f2(double x)
{
double f2 ;
f2=(1/x)-1+1.8;
return f2;
}
int main()
{
double x ;
int a=2;
int b=3;
int eps=0.00005;
if ((f1(a)*f2(a)) > 0)
{
x=a;
}
else
{
x=b;
}
while (abs(f1(x)) > eps )
{
x=x-f1(x)/f2(x);
}
printf("x=%lf",x);
printf("f(x) = %lf",f1(x));
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: iostream.h и math.h
- Определяются две функции: f1 и f2, которые принимают на вход число x и возвращают значения функций на этом интервале.
- В функции main() задаются начальные значения переменных: x, a, b и eps.
- Проверяется, какой из корней a или b является решением системы уравнений, для этого используется условие (f1(a)*f2(a)) > 0.
- Если условие выполняется, то x приравнивается к a, иначе к b.
- Используя метод итерации, в цикле while происходит приближение к корню, пока абсолютное значение функции не станет меньше заданной точности eps.
- Выводится найденное значение x и значение функции f1(x).
- Функция main() возвращает 0, заканчивая работу программы.