2.1 Цель работы:
Изучить комбинированный метод для вычисления действительного корня уравнения, уметь использовать данный метод для решения уравнений с использованием ЭВМ.
2.2 Расчётные формулы
Расчётная формула вычисления
Расчётная формула вычисления
Начальное приближение
или
Начальное приближение
Процесс вычисления корня останавливается, когда выполняется условие:
где
За приближенное значение корня уравнения принимается:
2.3 Подготовительная работа
Вычислить корень уравнения с точность
Графически отделим корни. Для этого данное уравнение запишем в виде . Строим графики функций
и
(рис. 2.1).
Рисунок 2.1
Точный корень уравнения
Проверяем условия, гарантирующие единственность корня на [0;1] и сходимость метода:
За начальное приближение для метода касательных берём
Процесс вычисления корня:
.
Условие не выполняется, процесс вычисления корня продолжается до достижения заданной точности
Требуемая точность вычисления результата была достигнута за 2 итерации. Результат 0,607199.
2.4 Текст программной реализации
#include <iostream>
#include <math.h>
using namespace std;
double f(double x)
{
return 3*x-cos(x)-1;
}
double fw(double x)
{
return 3+sin(x);
}
void main()
{
double xk, xh, tochnost, otvet;
cout<<"Vvedite nachalnoe priblizhenie po metodu kasatelnih xk=";
cin>>xk;
cout<<"\nVvedite nachalnoe priblizhenie po metodu hord xh=";
cin>>xh;
cout<<"\nX-hord\t\tX-kasatelnih\tTochnost\n-----------------------------------";
int n;
for(n=0; n<20; n++)
{
xh -= f(xh)*(xk-xh)/(f(xk)-f(xh));
xk -= f(xk)/fw(xk);
tochnost=fabs(xh-xk);
cout<<'\n'<<xh<<'\t'<<xk<<'\t'<<tochnost;
if(tochnost<0.001) break;
};
n++;
otvet=(xh+xk)/2;
cout<<"\n\nKolichestvo iteraciy="<<n;
cout<<'\n'<<'\n'<<"Koren uravneniya="<<otvet;
cin>>xk;
}