Численные методы решения уравнений (Метод Ньютона)
Нужно решить уравнение указанным в варианте методом. Уравнение передать в функцию как параметр с помощью указателя.
Пытался сам, но не получилось( Отправлю тот что смог написать.
#include <iostream>
using namespace std;
double find(double x, double eps)
{
double func(double x) { //функция, описывающая уравнение
return (x - 1 / (3 + sin(3.6 * x)));
}
double diff(double x) { //функция, описывающая производную уравнения
double h = 0.01;
return (func(x + h) - func(x - h)) / (2.0 * h);
}
double answer() { //функция для вычисления корня уравнения методом Ньютона
double a = 0.1, b = 0.85, e = 0.0001, x[100];
int i = 0;
x[i] = 0 - func(0) / diff(0);
while (fabs(x[i + 1] - x[i]) >= e) { //цикл для нахождения корня с заданной точностью
x[i + 1] = x[i] - func(x[i]) / diff(x[i]);
}
return x[i];
}
int main()
{
cout << "Задание \n";
cout << "Точное значение = " << 0.2624 << '\n';
cout << "Корень, найденый методом Ньютона = " << answer() << '\n'; //вывод на экран результата функции, которая вычисляет корень уравнения методом Ньютона
cout << "Погрешность вычислений = " << abs(0.2624 - abs(answer())) << '\n'; //сравнение точного значения и найденного
system("pause");
}

Молодец, что пытался!!!

Тут можно сделать свои функции как внизу. И никакой специальной функции для вычисления производной не требуется -и без неё всё хорошо.
#include <iostream>
#include <iomanip>
using namespace std;
const double shag = 1e-5,
dvashaga = 2. * shag;
double Abs(double x) { return x < 0 ? -x : x; }
void Newton(double (fun)(double), double x,
double eps) { int i = 0; double e = 1.; while
(Abs(e) > eps) { e = fun(x) * dvashaga /
(fun(x + shag) - fun(x - shag)); x -= e; i++;
cout << setw(2) << i << setprecision(17)
<< setw(22) << fixed << x << endl; } }
double Sin(double x) { double xx = - x * x,
ds = x, sum = x, i = 1.; while (Abs(ds) > 1e-17)
{ i += 2.; ds *= xx / (i * (i - 1.)); sum += ds; }
return sum; }
double F(double x)
{ return x - 1. / (3. + Sin(3.6 * x)); }
int main() { double x, eps; while (1) { cout <<
"x0 eps: "; cin >> x >> eps; Newton(F, x, eps); } }
