Решение уравнения методом итераций в С++

Если алгебраическое уравнение записано в виде \(x=\varphi \left(x \right)\), то при выполнении определенных условий решение уравнения (приближенное) может быть найдено методом последовательных приближений. Суть метода состоит в том, что n+1-е приближение для корня уравнения \(x_{n+1}\) вычисляется на основе n-го приближения \(x_{n}\) через соотношение:
$$x_{n+1}=\varphi \left(x_{n} \right)$$
Дальше задается начальное условие для начального решения, проверяется выполнение условия возможности применения приближенного метода, а затем применяются итерационные формулы. Программа для решения уравнения \(x^{2}-5x+6=0\) итерационным методом приведена ниже. Здесь надо обратить внимание, что для каждого из корней \(x=2,x=3\) построены свои схемы из-за того, что возникают ограничения на выполнение условий применимости итерационного алгоритма. Для первого корня уравнение представляем в виде:
$$x=\left(x^{2}+6 \right)/5$$
но условие:
$$\left|d\varphi /dx \right|<1$$
выполняется только на интервале: \(\left|x \right|<2,5\), а значит второй корень не попадает в этот интервал. Чтобы получить второй корень, исходное уравнение представим в виде:
$$x=\sqrt{5x-6}$$
и тогда указанное выше условие выполняется для \(x>2,45\) а значит интересующий нас корень попадает в указанный диапазон.
#include 
#include 
using namespace std;
int main(){
//Корень уравнения:
double x;
//Количество итераций и индексная переменная:
int n=100,i;
//Вычисление корня x=2:
x=0;
for(i=1;i <= n;i++)
 x=(x*x+6)/5;
cout << "x = " << x << endl;
//Вычисление корня x=3:
x=5;
for(i=1;i <= n;i++)
 x=sqrt(5*x-6);
cout << "x = " << x << endl;
return 0;
}
Онлайн всего: 9
Гостей: 9
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте