Ім'я файлу: 34.docx
Розширення: docx
Розмір: 48кб.
Дата: 11.06.2020
скачати
Пов'язані файли:
реферат правове.doc

Для решения алгебраических уравнений используем метод Ньютона (его еще называют итерационным методом Ньютона-Рафсона). Предположим, необходимо найти корень уравнения f x =0  в окрестности точки x=x0. Последовательный поиск приближений для корня уравне­ния выполняется по следующей схеме: в точке текущего приближения для корня уравнения проводится касательная к графику функции f x  , точка пересечения этой касательной с осью абсцисс является новым приближени­ем для корня. Такая последовательность действий сводится к рекуррентной формуле:

xn+1=xnf xn f xn  

Здесь расмотрим случай, когда исходная функция представляет собой полином. На входе задаются только коэффициенты этого полинома, набор которых можно представить в виде элементов массива.

f x =a0+a1x+a2x2+a3x3+a4x4+  

Кроме того пользователем вводится и начальное приближение корня. Это означат, что надо иметь представление о том, где приблизительно находится корень. Другими словами его надо отделить некоторым интервалом.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

#include

#include

using namespace std;

int main(){

//Порядок полинома:

const int N=3;

//Индексные переменные и число итераций:

int i,k,n=10;

//Аргумент, функция и производная:

double x,f,df;

//Массив коэффициентов полинома-функции:

double a[N+1];

//Массив коэффициентов полинома-производной:

double b[N];

//Ввод коэффициентов функции-полинома:

cout << "Function: ";

cin >> a[0];

for(i=1; i < N+1 ;i++){

 cin >> a[i];

 //Вычисление коэффициентов для производной:

 b[i-1]=i*a[i];

}

//Начальное приближение:

cout << "Enter x0 = ";

cin >> x;

//Последовательные итерации:

for(k=1; k <= n; k++){

 f=a[0];

 df=0;

 for(i=1; i < N+1; i++){

 f+=a[i]*pow(x,i);

 df+=b[i-1]*pow(x,i-1);

 }

 x-=f/df;

}

//Результат:

cout << "x = " << x << endl;

cout << "f(" << x << ") = " << f << endl;

return 0;

}



скачати

© Усі права захищені
написати до нас