Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <math.h>
- #include <iostream>
- using namespace std;
- float f(double x)
- {
- return pow(x,2) - 10 * pow(sin(x),2) + 2;
- }
- float df(float x) //возвращает значение производной
- {
- return 2 * x - 20 * sin(x) * cos(x);
- }
- float d2f(float x) // значение второй производной
- {
- return 20 * pow(sin(x) , 2) - 20 * pow(cos(x), 2) + 2;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int i = 0;//переменная для цикла
- double x0, xn;// вычисляемые приближения для корня
- double a, b, eps;// границы отрезка и необходимая точность
- double A, B;
- cout << "Enter A, B, eps" << endl;
- cin >> A >> B >> eps;
- for(double j = A; j<B;j+= (B-A)/20.){
- i = 0;
- a = j;
- b = j + (B - A) / 20.;
- if (f(a)*f(b) <= 0) // если знаки функции на краях отрезка одинаковые, то здесь нет корня
- {
- if (f(a)*d2f(a) > 0) x0 = a; // для выбора начальной точки проверяем f(x0)*d2f(x0)>0 ?
- else x0 = b;
- xn = x0 - f(x0) / df(x0); // считаем первое приближение
- cout << ++i << " итерация = " << xn << endl;
- while (fabs(x0 - xn) > eps) // пока не достигнем необходимой точности, будет продолжать вычислять
- {
- x0 = xn;
- xn = x0 - f(x0) / df(x0); // непосредственно формула Ньютона
- cout << ++i << " итерация = " << xn << endl;
- }
- cout << endl << "Корень = " << xn << endl << endl; // вывод вычисленного корня
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement